Documentazione API
API PhotoFig
Metti in coda le modifiche alle immagini dei prodotti, carica i file sorgente, verifica lo stato delle attività e ricevi eventi webhook tramite le chiavi API.
Hai bisogno di uno schema leggibile dal computer? Scarica il file JSON di OpenAPI.
In questa pagina
export PHOTOFIG_API_KEY="pf_live_..."
JOB_ID=$(curl -s -X POST https://api.photofig.com/v1/tools/ai-shadows/edit \
-H "Authorization: Bearer $PHOTOFIG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "https://cdn.example.com/product.png",
"parameters": { "seed": 128742 }
}' | jq -r '.id')
curl -L "$(curl -s -H "Authorization: Bearer $PHOTOFIG_API_KEY" \
"https://api.photofig.com/v1/jobs/$JOB_ID" \
| tee /dev/stderr \
| jq -r '.resultUrl')" \
-o ./photofig-result.pngAutenticazione
I percorsi API accettano chiavi API generate da Impostazioni. La chiave segreta completa viene visualizzata una sola volta al momento della creazione della chiave.
Authorization: Bearer pf_live_...Account
/v1/accountUtilizza questo percorso per eseguire un test di verifica delle credenziali e per controllare i limiti del piano, i crediti rimanenti e gli strumenti disponibili.
{
"accountId": "uuid",
"workspaceId": "uuid",
"plan": "pro",
"apiEnabled": true,
"credits": {
"remaining": 1200,
"periodEndsAt": "2026-08-01T00:00:00Z"
},
"limits": {
"maxFileSizeBytes": 25000000,
"rateLimitPerHour": 500,
"concurrentJobs": 5,
"maxApiKeys": 3
},
"tools": ["mask", "ai-bg", "ai-shadows"]
}Strumenti
/v1/tools/v1/tools/{tool_id}Ogni strumento accetta una foto prodotto tramite imageUrl, uploadSessionId o invio multipart. Non è necessario chiamare prima lo strumento mask, a meno che non serva uno scontorno trasparente.
mask
Rimuove lo sfondo e restituisce il prodotto scontornato in un PNG trasparente. Usalo per isolare il prodotto prima della composizione o dell’elaborazione destinata a una piattaforma di vendita.
ai-shadows
Aggiunge un'ombra realistica al prodotto e restituisce un'immagine pronta per uno sfondo pulito. Funziona al meglio quando il prodotto è ben visibile e non è nascosto da una scena troppo affollata.
ai-bg
Genera un nuovo sfondo per il prodotto a partire da un breve tema, ad esempio warm oak tabletop oppure minimal white studio. Invia direttamente l’immagine del prodotto; non è necessaria una richiesta separata per la rimozione dello sfondo.
Carica e modifica in un'unica operazione
/v1/tools/{tool_id}/editQuesto è il metodo più semplice: invia una modifica con un `imageUrl` quando l’immagine di origine è già raggiungibile tramite URL, oppure invia un campo immagine multipart per una rapida richiesta di file locale. È l’opzione migliore quando devi eseguire un solo strumento su un unico input.
Scegli questa opzione quando hai una sola immagine, una sola modifica e non hai bisogno di riutilizzare la fonte caricata.
curl -X POST https://api.photofig.com/v1/tools/ai-shadows/edit \
-H "Authorization: Bearer pf_live_..." \
-F "[email protected]" \
-F "seed=128742"Carica prima, modifica dopo
/v1/uploadsCrea una sessione di caricamento quando la fonte è un file locale di grandi dimensioni o quando desideri eseguire più di uno strumento sullo stesso input. I byte dell'immagine vengono inviati direttamente all'archivio una sola volta; le successive richieste di modifica inviano solo l'uploadSessionId restituito.
Scegli questa opzione quando le dimensioni del file da caricare sono importanti o quando la stessa immagine sorgente verrà utilizzata da più strumenti o per più tentativi.
UPLOAD_JSON=$(curl -s -X POST https://api.photofig.com/v1/uploads \
-H "Authorization: Bearer pf_live_..." \
-H "Content-Type: application/json" \
-d '{
"contentType": "image/jpeg",
"filename": "product.jpg",
"sizeBytes": 1842031
}')
curl -X PUT "$(echo "$UPLOAD_JSON" | jq -r '.uploadUrl')" \
-H "Content-Type: image/jpeg" \
--data-binary @product.jpg
curl -X POST https://api.photofig.com/v1/tools/ai-shadows/edit \
-H "Authorization: Bearer pf_live_..." \
-H "Content-Type: application/json" \
-d "{
\"uploadSessionId\": \"$(echo "$UPLOAD_JSON" | jq -r '.uploadSessionId')\",
\"parameters\": { \"seed\": 128742 }
}"Crea modifiche
/v1/tools/{tool_id}/editInvia le modifiche utilizzando imageUrl, uploadSessionId o il campo multipart image. La risposta restituisce un ID del processo che puoi utilizzare per il polling, l'annullamento, l'eliminazione e la correlazione dei webhook.
Contesto dell'IA
L'endpoint di sfondo basato sull'IA funziona al meglio con un tema conciso della scena: un'ambientazione, una superficie, un'indicazione di illuminazione o un'atmosfera descritta in poche parole. Alcuni buoni esempi includono warm oak tabletop,minimal white studio, and soft morning kitchen light.
curl -X POST https://api.photofig.com/v1/tools/ai-bg/edit \
-H "Authorization: Bearer pf_live_..." \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "https://cdn.example.com/product.png",
"parameters": {
"theme": "warm oak tabletop",
"seed": 128742
}
}'Product Shadow
curl -X POST https://api.photofig.com/v1/tools/ai-shadows/edit \
-H "Authorization: Bearer pf_live_..." \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "https://cdn.example.com/product.png",
"parameters": { "seed": 128742 }
}'Maschera
curl -X POST https://api.photofig.com/v1/tools/mask/edit \
-H "Authorization: Bearer pf_live_..." \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "https://cdn.example.com/product.png",
"parameters": { "mode": "standard" }
}'Attività
/v1/jobs/v1/jobs/{id}/v1/jobs/{id}/cancel/v1/jobs/{id}Elenca, verifica, annulla o elimina le attività API. Le attività API non compaiono nelle sezioni «Caricamenti» o «Progetti» dopo l’accesso; eliminandole vengono rimossi anche i relativi file.
GET /v1/jobs/{id} restituisce metadati di stato in formato JSON. Al termine dell'elaborazione, scarica l'immagine da resultUrl. Il polling è il metodo di integrazione più semplice; i webhook sono preferibili quando il tuo backend deve essere notificato automaticamente.
{
"id": "api_edit_uuid",
"tool": "ai-shadows",
"status": "completed",
"createdAt": "2026-07-15T10:15:00Z",
"startedAt": "2026-07-15T10:15:04Z",
"finishedAt": "2026-07-15T10:15:23Z",
"statusUrl": "https://api.photofig.com/v1/jobs/api_edit_uuid",
"resultUrl": "https://storage.example.com/signed-result-url",
"thumbnailUrl": "https://storage.example.com/signed-thumbnail-url",
"expiresAt": "2026-07-15T11:15:23Z",
"error": null
}Webhook
I webhook sono callback inviati da PhotoFig al tuo server. Registra un URL HTTPS e PhotoFig invierà una richiesta quando un'operazione API viene completata, fallisce o viene annullata. Ciò consente al tuo backend di reagire immediatamente, invece di eseguire il polling di GET /v1/jobs/{id} fino a quando lo stato non cambia.
/v1/webhooks/v1/webhooks/v1/webhooks/{webhook_id}/v1/webhooks/{webhook_id}/v1/webhooks/{webhook_id}/testGli eventi supportati sono webhook.test,job.completed,job.failed, e job.cancelled. I payload degli eventi utilizzano lo stesso ID attività restituito al momento della creazione della modifica.
{
"event": "job.completed",
"eventId": "uuid",
"createdAt": "2026-07-15T10:15:23Z",
"data": {
"id": "api_edit_uuid",
"tool": "ai-shadows",
"status": "completed",
"resultUrl": "https://storage.example.com/signed-result-url",
"thumbnailUrl": "https://storage.example.com/signed-thumbnail-url"
}
}Errori
Le risposte di errore includono un codice stabile leggibile dal software e un messaggio per l’utente. Usa il codice per gestire i diversi casi nella logica del client.
{
"code": "invalid_request",
"message": "imageUrl or uploadSessionId is required"
}Durata dei risultati
Le attività API completate rimangono visibili tramite GET /v1/jobs e GET /v1/jobs/{id}. La risposta di stato contiene i link firmati resultUrl e thumbnailUrl quando i risultati sono disponibili.
I file delle attività API vengono archiviati separatamente dai caricamenti e dai progetti creati nell’editor. Non vengono visualizzati nella libreria dell'app.
I record delle attività API e i relativi file di input, risultato e anteprima vengono conservati per 1 ora dopo il completamento, l'errore o l'annullamento dell'attività. Il campo expiresAt indica l’ora prevista per la pulizia.
Utilizza DELETE /v1/jobs/{id} dopo aver scaricato i risultati che non ti servono più. Questo comando annulla l’attività non completata, ove possibile, ed elimina il relativo record e i file gestiti dall'API prima della pulizia automatica.