API-Referenz
Datei-Upload-Policy
/v1/media/upload-policy/v1/media/upload-policyLaden Sie Bilder, Videos, Audio und sonstige Dateien in den Dateispeicher hoch und übergeben Sie die zurückgegebene öffentliche URL dann in einer Modellanfrage. Das Gateway erstellt nur eine kurzlebige, nutzerbezogene Upload-Policy; die Dateibytes laufen nicht über den API-Server.
{
"image_max_bytes": 52428800,
"video_max_bytes": 209715200,
"audio_max_bytes": 104857600,
"file_max_bytes": 52428800
}#Upload-Policy erstellen
kindstringerforderlich"image", "video", "audio" oder "file".
content_typestringerforderlichEin konkreter MIME-Type, der zu kind passt. file akzeptiert MIME-Types außerhalb von Bild/Video/Audio, etwa application/pdf oder text/plain.
sizeintegererforderlichExakte Dateigröße in Bytes. Rufen Sie diesen Endpunkt mit demselben API-Schlüssel per GET auf, um alle vier nutzerspezifischen Limits zu lesen.
curl https://www.aisplice.store/v1/media/upload-policy \
-H "Authorization: Bearer sk-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"kind": "image",
"content_type": "image/avif",
"size": 1048576
}'{
"upload_url": "https://uploads.example.com/",
"public_url": "https://media.example.com/media/user-upload/image/...",
"fields": {
"key": "media/user-upload/image/...",
"policy": "...",
"...": "Pass every returned field unchanged"
},
"expires_at": "2026-07-25T10:05:00Z"
}#In den Dateispeicher hochladen
Senden Sie jeden zurückgegebenen fields-Eintrag und die Datei in einem einzigen Multipart-POST an upload_url. Die Policy läuft nach fünf Minuten ab, ist an einen generierten Dateipfad gebunden und kann keine vorhandene Datei überschreiben.
# Save the policy response as policy.json first.
upload_args=()
while IFS=$'\t' read -r key value; do
upload_args+=(-F "$key=$value")
done < <(jq -r '.fields | to_entries[] | [.key, .value] | @tsv' policy.json)
# Keep the file field last for storage compatibility.
curl "$(jq -r .upload_url policy.json)" \
"${upload_args[@]}" \
-F "file=@reference.avif"#Öffentliche URL verwenden
Sobald der Dateispeicher Erfolg meldet, verwenden Sie public_url im Medienfeld, das das gewählte Modell unterstützt. Ein angenommener Upload garantiert nicht, dass jedes Modell jedes Medienformat dekodieren kann; prüfen Sie den Anfragevertrag des Modells.
{
"model": "gpt-image-2",
"prompt": "Turn this reference into a watercolor",
"images": ["https://media.example.com/media/user-upload/image/..."]
}#Zugehörige Fehler
Dieser Endpunkt meldet Fehler über error.type statt error.code; werten Sie daher die folgenden Werte zusammen mit dem Status aus.
- 400 invalid_request_errorkind, content_type und size müssen eine einzige Upload-Datei beschreiben.
- 401 unauthorizedUngültiges oder fehlendes Bearer-Token.
- 413 payload_too_largeDie angegebene Dateigröße überschreitet das konfigurierte Upload-Limit.
- 415 unsupported_media_typecontent_type passt nicht zur gewählten Dateifamilie (Bild, Video, Audio oder sonstige Datei).
Immer noch nicht gelöst?
Senden Sie uns die Anfrage-ID oder die Fehlermeldung, und wir sehen uns das an.