API-Referenz
Dateien
Eingaben hochladen und Ergebnisse herunterladen.
Hochladen#
POST /files akzeptiert multipart/form-data und erfordert den Berechtigungsbereich figures:generate. Es gibt 201 mit file_id, purpose, content_type, size_bytes, expires_at und created_at zurück.
| Feld | Typ | Erforderlich | Standard | Regeln |
|---|---|---|---|---|
| file | file | ja | — | Siehe die Limits je Verwendungszweck unten |
| purpose | string | nein | image | image, mask oder flowchart_attachment |
| Verwendungszweck | Akzeptiert | Verwendet für |
|---|---|---|
| image | PNG, JPEG oder WebP bis 20 MB; Prüfung anhand des Inhalts, nicht des Namens | Bearbeitung, Texterkennung, Vergrößerung, Konvertierung, Referenzbilder |
| mask | PNG bis 8 MB; Weiß markiert den neu zu zeichnenden Bereich | POST /images/edits |
| flowchart_attachment | Formate des FlowChart-Arbeitsbereichs, bis 32 MB | POST /flowcharts/generations |
Uploads können 24 Stunden lang verwendet werden. Danach ist die file_id unbekannt: 400 INVALID_REQUEST, FILE_NOT_FOUND. Sie dienen ausschließlich als Eingaben, erscheinen nie in Auftragsantworten und werden niemandem freigegeben.
Uploads zählen zu denselben Uploadlimits wie auf der Website. Bei Überschreitung lautet die Antwort 429 RATE_LIMITED mit Retry-After und details.reason gleich UPLOAD_RATE_LIMITED pro Minute oder UPLOAD_DAILY_LIMIT_REACHED pro Tag für Flussdiagrammanhänge.
Ein Upload kann einen optionalen Idempotency-Key-Header mit 1–255 sichtbaren ASCII-Zeichen senden. Dasselbe Konto, derselbe Schlüssel und purpose verweisen immer auf eine file_id: Eine Wiederholung gibt die erste Datei mit 201 zurück, ohne erneuten Upload oder Verbrauch des Uploadlimits. Derselbe Schlüssel und purpose mit anderen Bytes führen zu 409 IDEMPOTENCY_CONFLICT. Ohne Header erstellt jeder Upload eine neue Datei. Ist der Upload abgelaufen, führt eine Wiederholung zu 400 INVALID_REQUEST mit details.reason = FILE_EXPIRED; laden Sie die Datei mit einem neuen Schlüssel erneut hoch.
Herunterladen#
Jedes Auftragsergebnis hat eine download_url, die ohne Zugangsdaten eine Stunde lang funktioniert. Fragen Sie den Auftrag erneut ab, um einen neuen Link zu erhalten. GET /files/{file_id} lädt mit Ihren Zugangsdaten jede Ihrer Dateien herunter. Dateien werden stets als Anhänge ausgeliefert.
Eine signierte download_url gibt nach Ablauf oder bei Veränderung 404 NOT_FOUND zurück. Sämtliche Links eines gesperrten oder in Löschung befindlichen Kontos funktionieren auf dieselbe Weise nicht mehr.
| Ergebnis | Verwendbar für |
|---|---|
| PNG oder JPEG | Jeden Bildendpunkt: Bearbeitung, Texterkennung, Vergrößerung, Konvertierung, Referenzbilder |
| WebP | Bearbeitung, Texterkennung, Vergrößerung, SVG-Vektorisierung und Referenzbilder; keine Konvertierung in PNG, PDF, TIFF oder PPTX |
| Flussdiagramm-SVG | POST /images/conversions in PNG, PDF, TIFF oder PPTX |
| PDF, TIFF, EPS, PPTX, sonstiges SVG | Keine weitere Verwendung; nur Download |
Eine Konvertierungsquelle größer als 20 MB, etwa eine 8K-Vergrößerung, wird mit 400 INVALID_REQUEST und FILE_TOO_LARGE abgelehnt.
cURL#
curl -X POST https://scifig.ai/api/v1/files \
-H "Authorization: Bearer $SCIFIG_API_KEY" \
-F "file=@figure.png" \
-F "purpose=image"JavaScript#
import { readFile } from 'node:fs/promises';
const form = new FormData();
form.set('file', new Blob([await readFile('figure.png')]), 'figure.png');
form.set('purpose', 'image');
const response = await fetch('https://scifig.ai/api/v1/files', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SCIFIG_API_KEY}`,
},
body: form,
});
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.post(
"https://scifig.ai/api/v1/files",
headers=headers,
files={"file": open("figure.png", "rb")},
data={"purpose": "image"},
timeout=60,
)
print(response.status_code, response.json())