API-Referenz
Aufträge und begrenzte Wartezeit
Fragen Sie Status, Credits und Ergebnisse ab und warten Sie ohne wiederholte Abfragen auf einen Auftrag.
Auftrag abfragen#
GET /jobs/{id} mit Berechtigungsbereich figures:read gibt dasselbe Auftragsobjekt wie die Erstellungsanfrage zurück. Aufträge anderer Konten und unbekannte IDs führen beide zu 404 NOT_FOUND. GET /jobs?limit=10&cursor=… listet Ihre Aufträge auf, neueste zuerst; 1–20 pro Seite, folgen Sie next_cursor.
{
"id": "5f4a9a5e-fc45-4eae-9f9c-56b5f686cba5",
"kind": "chart",
"status": "succeeded",
"created_at": "2026-10-14T11:20:05.000Z",
"credits": { "reserved": 50, "charged": 50, "refunded": 0 },
"outputs": [
{
"file_id": "0b7c…",
"format": "png",
"width": 2126,
"height": 1417,
"download_url": "https://scifig.ai/api/v1/files/0b7c…?exp=…&sig=…",
"expires_at": "2026-10-14T12:21:40.000Z",
"editor_url": "https://scifig.ai/app/datachart?conversation=…"
}
],
"error": null
}kind ist image_generation, image_edit, image_upscale, image_conversion, chart oder flowchart. Antworten enthalten niemals Ihre Beschreibung, Eingaben oder interne Kennungen.
| Ergebnisfeld | Vorhanden | Bedeutung |
|---|---|---|
| file_id | always | An einen anderen Endpunkt oder an GET /files/{file_id} übergeben |
| format | always | Dateiendung des Ergebnisses, etwa png, svg oder pdf |
| width, height | PNG-Ergebnisse | Pixelgröße |
| download_url, expires_at | always | Signierter Link, eine Stunde gültig |
| editor_url | Diagramm- und Flussdiagrammaufträge | Öffnet das Ergebnis in seinem Arbeitsbereich auf der Website; Illustrationen und Konvertierungen haben keinen solchen Link |
Statusverlauf#
| status | Bedeutung |
|---|---|
| queued | Angenommen; wartet auf verfügbare Kapazität |
| processing | Wird ausgeführt |
| succeeded | Abgeschlossen; outputs sind bereit und Credits abgerechnet |
| failed | Kein Ergebnis erstellt; error.code nennt den Grund und die Reservierung wird erstattet |
| canceled | Vor Abschluss gestoppt; Credits erstattet |
| `error.code` eines fehlgeschlagenen Auftrags | Bedeutung | Vorgehen |
|---|---|---|
| TASK_TIMED_OUT | Die Aufgabe hat ihr Zeitlimit überschritten und die Credits wurden erstattet. Eine Illustrationsgenerierung oder -bearbeitung kann late_delivery_until enthalten: Bis dahin kann das Ergebnis noch kostenlos eintreffen. | Fragen Sie den Auftrag bis late_delivery_until weiter ab; senden Sie andernfalls eine neue Anfrage mit einem neuen Schlüssel |
| CONTENT_REJECTED | Die Inhaltsrichtlinie hat das Ergebnis während der Ausführung abgelehnt; die Credits wurden erstattet. Derselbe Code wird als 422 zurückgegeben, wenn die Anfrage selbst bei der Erstellung abgelehnt wird. | Ändern Sie die Beschreibung oder Eingabe und verwenden Sie einen neuen Schlüssel |
| ADMISSION_INCOMPLETE | Der Auftrag wurde nie gestartet, da ein wiederholbarer Fehler ihn verhindert hat. Es wurden keine Credits verbraucht. | Senden Sie dieselbe Anfrage mit demselben Idempotency-Key |
| TASK_NOT_FOUND | Der Auftrag wurde angenommen, aber seine Aufgabe ist nicht mehr auffindbar. | Senden Sie eine neue Anfrage mit einem neuen Schlüssel |
| TASK_FAILED | Die Aufgabe ist fehlgeschlagen und die Credits wurden erstattet. Jeder Engine-Fehler ohne eigenen öffentlichen Code wird zu TASK_FAILED; der Engine-Code steht in details.reason. | Senden Sie eine neue Anfrage mit einem neuen Schlüssel |
| INTERNAL_ERROR | Die Aufgabe ist ohne Angabe eines Grundes fehlgeschlagen; die Credits wurden erstattet. | Senden Sie eine neue Anfrage mit einem neuen Schlüssel |
succeeded, failed und canceled sind endgültig, mit einer Ausnahme: Eine Illustrationsgenerierung oder -bearbeitung, die mit TASK_TIMED_OUT fehlgeschlagen ist, enthält late_delivery_until. Bis dahin kann das Ergebnis noch kostenlos eintreffen und der Auftrag auf succeeded wechseln. Fragen Sie ihn weiter ab, statt einen neuen zu erstellen.
Wenn ein Auftrag in der Liste nicht gelesen werden kann, gibt GET /jobs 503 SERVICE_UNAVAILABLE mit Retry-After: 3 zurück. Wiederholen Sie die Listenanfrage. Der Auftrag wird nicht durch ein fehlgeschlagenes Ergebnis ersetzt.
Begrenzte Wartezeit#
Prefer: wait=Nmit 1–30 bei einer Erstellungsanfrage hält die Antwort zurück, bis der Auftrag endgültig ist oder N Sekunden vergangen sind. Endgültige Aufträge geben200zurück; noch laufende202mitLocation: /api/v1/jobs/{id}undRetry-After.- Das Warten ändert den Auftrag nicht:
202ist kein Fehler und der Auftrag läuft nach der Antwort weiter. - Fragen Sie
GET /jobs/{id}nicht häufiger als nachRetry-After, also 3 Sekunden, ab. Illustrationen dauern gewöhnlich 20–90 Sekunden, Diagramme und Flussdiagramme 30–120 Sekunden. - Ein fehlgeschlagener Auftrag kann auch eine abgelehnte Anfrage enthalten: Eine mit etwa
402 INSUFFICIENT_CREDITSoder422 CONTENT_REJECTEDabgelehnte Erstellungsanfrage bleibt inGET /jobsals Auftrag mit Statusfailed, diesem Code und ohne Credits erhalten. - Serverintegrationen sollten die Auftrags-ID vor dem Warten speichern, damit ein Verbindungsabbruch nie zu einem zweiten Auftrag führt.
cURL#
curl https://scifig.ai/api/v1/jobs/<job_id> \
-H "Authorization: Bearer $SCIFIG_API_KEY"JavaScript#
const response = await fetch('https://scifig.ai/api/v1/jobs/<job_id>', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SCIFIG_API_KEY}`,
},
});
const result = await response.json();
console.log(response.status, result);Python#
import os
import requests
headers = {
"Authorization": f"Bearer {os.environ['SCIFIG_API_KEY']}",
}
response = requests.get(
"https://scifig.ai/api/v1/jobs/<job_id>",
headers=headers,
timeout=60,
)
print(response.status_code, response.json())