Naar documentatie springen
Op deze pagina

Seedream 5.0 Pro API

Genereer afbeeldingen, bewerk referenties of splits een afbeelding op in lagen met je Seevio API-sleutel. Taken worden asynchroon uitgevoerd; sla taskId op en vraag het taakeindpunt op of ontvang een callback.

POST https://api.seevio.ai/v1/images/generations

Mogelijkheden

FunctieOndersteunde waarden
Generatiemoditext-to-image, image-to-image, layer-decomposition
Outputresolutie1K, 1.5K, 2K
Beeldverhouding1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2, 21:9
ReferentieafbeeldingenOpenbare HTTPS PNG / JPEG / WebP URL's, elk maximaal 30 MB. Gebruik geen afbeeldingen voor tekst-naar-afbeelding, 1–10 voor afbeelding-naar-afbeelding en exact één voor het opsplitsen in lagen.
PromptGebruik 4–5000 tekens na het verwijderen van witruimte aan het begin en einde. Alleen bij layer-decomposition mag het veld prompt worden weggelaten of leeg zijn.
Uitvoerformaatpng, jpg

Tarieven & credits

De onderstaande prijzen zijn per geretourneerde afbeelding. Bij een normale generatie wordt één afbeelding gereserveerd. Bij het opsplitsen in lagen worden 17 afbeeldingen gereserveerd, het werkelijke geretourneerde aantal (inclusief de basisafbeelding) afgerekend en de ongebruikte credits teruggeboekt naar het oorspronkelijke saldo. Mislukte taken worden volledig gerestitueerd.

OutputresolutieTarieven & credits
1K4 credits
1.5K4 credits
2K8 credits

Bij de standaard 2K-resolutie reserveert het opsplitsen in lagen 136 credits. Als er vier afbeeldingen worden geretourneerd, zijn de uiteindelijke kosten 32 credits en worden er 104 credits gerestitueerd.

Idempotentie van aanvragen wordt niet ondersteund. Elke geldige POST-aanvraag start een nieuwe, factureerbare taak. Als het resultaat van een indiening onduidelijk is, controleer dan de status via de geretourneerde taskId; het opnieuw verzenden van een POST-aanvraag kan een extra taak aanmaken.

Authenticatie

Maak een API-sleutel aan in het dashboard. De volledige sleutel wordt slechts eenmalig getoond. Bewaar deze op je server en stuur hem mee als Bearer-token bij elk request.

Basis-URL

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Stel de omgevingsvariabele SEEVIO_API_KEY in voordat je deze voorbeelden uitvoert. De JavaScript-voorbeelden draaien op je server met Node.js; de Python-voorbeelden gebruiken het requests-pakket.

Request body

VeldTypeVereistBeschrijving & beperkingen
model
stringJa

Model-id. Stel dit veld in op seedream-5-0-pro om Seedream 5.0 Pro te gebruiken.

callback_url
stringNee

Openbaar HTTPS-eindpunt voor POST-callbacks bij voltooiing en fouten. Privénetwerken en localhost zijn niet toegestaan.

Voorbeeld: https://example.com/webhooks/seevio
input
objectJa

Generatie-instellingen. Een prompt is verplicht voor tekst-naar-afbeelding en afbeelding-naar-afbeelding; bij het opsplitsen in lagen is deze optioneel.

Input-parameters

VeldTypeVereistStandaardBeschrijving & beperkingen
input.prompt
stringVoorwaardelijk—

Gebruik 4–5000 tekens na het verwijderen van witruimte aan het begin en einde. Alleen bij layer-decomposition mag het veld prompt worden weggelaten of leeg zijn.

Voorbeeld: A minimalist ceramic teapot on a stone pedestal, soft studio lighting
input.generation_type
stringNeetext-to-image

Gebruik text-to-image om een nieuwe afbeelding te maken, image-to-image om referentieafbeeldingen te bewerken of layer-decomposition om één afbeelding op te splitsen in herbruikbare elementen.

Ondersteunde waarden
text-to-image | image-to-image | layer-decomposition
input.image_urls
string[]Voorwaardelijk[]

Openbare HTTPS PNG / JPEG / WebP URL's, elk maximaal 30 MB. Gebruik geen afbeeldingen voor tekst-naar-afbeelding, 1–10 voor afbeelding-naar-afbeelding en exact één voor het opsplitsen in lagen.

Voorbeeld: ["https://example.com/teapot.png"]
input.aspect_ratio
stringNee1:1

Beeldverhouding

Ondersteunde waarden
1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 2:3 | 3:2 | 21:9
Voorbeeld: 1:1
input.resolution
stringNee2K

Tekst-naar-afbeelding en afbeelding-naar-afbeelding ondersteunen 1K (basiskwaliteit) en 2K (hoge kwaliteit). Opsplitsing in lagen ondersteunt 1K, 1.5K en 2K. Standaard: 2K.

Ondersteunde waarden
1K | 1.5K | 2K
Voorbeeld: 2K
input.output_format
stringNeepng

Gewenste uitvoerindeling. Voor laagsplitsing retourneert png een PNG-basisafbeelding en jpg een JPEG-basisafbeelding. Alle gescheiden lagen worden geretourneerd als PNG met behoud van transparantie.

Ondersteunde waarden
png | jpg
Voorbeeld: png

Elke aanvraag maakt één taak aan. Tekst-naar-afbeelding en afbeelding-naar-afbeelding leveren één afbeelding op; laagsplitsing levert 1 tot 17 afbeeldingen op, inclusief de basisafbeelding. Stuur geen aspect_ratio mee voor laagsplitsing.

Snelstart

Dien dit minimale request in, sla de geretourneerde taskId op en gebruik vervolgens het onderstaande voorbeeld om de taak op te vragen. De creditwaarde in de response bij aanmaken is het gereserveerde aantal.

curl --fail-with-body https://api.seevio.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream-5-0-pro",
  "input": {
    "prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
    "aspect_ratio": "1:1",
    "resolution": "2K",
    "output_format": "png",
    "generation_type": "text-to-image"
  }
}'

Voorbeeldrespons taak aanmaken

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 8
}

Tekst naar afbeelding

Genereer afbeeldingen, bewerk referenties of splits een afbeelding op in lagen met je Seevio API-sleutel. Taken worden asynchroon uitgevoerd; sla taskId op en vraag het taakeindpunt op of ontvang een callback.

curl --fail-with-body https://api.seevio.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream-5-0-pro",
  "input": {
    "prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
    "aspect_ratio": "1:1",
    "resolution": "2K",
    "output_format": "png",
    "generation_type": "text-to-image"
  }
}'

Afbeelding naar afbeelding

Stel voor beeldbewerking generation_type in op image-to-image en geef image_urls op. Alle andere parameters gebruiken dezelfde methode.

Vervang de voorbeeld-URL's van example.com door je eigen openbaar toegankelijke HTTPS-bestanden. De voorbeeld-URL's dienen om de structuur van het request te tonen en zijn geen downloadbare voorbeeldbestanden.

curl --fail-with-body https://api.seevio.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream-5-0-pro",
  "input": {
    "prompt": "Change the teapot to matte sage green. Preserve its shape and the studio lighting.",
    "aspect_ratio": "1:1",
    "resolution": "2K",
    "output_format": "png",
    "generation_type": "image-to-image",
    "image_urls": [
      "https://example.com/teapot.png"
    ]
  }
}'

Opsplitsing in lagen

Stel generation_type in op layer-decomposition en geef exact één afbeelding-URL op. Laat aspect_ratio weg. output_format bepaalt alleen de indeling van de basisafbeelding. Gescheiden lagen worden altijd geretourneerd als PNG met behoud van transparantie. Sla elke URL uit data.results op.

curl --fail-with-body https://api.seevio.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream-5-0-pro",
  "input": {
    "generation_type": "layer-decomposition",
    "image_urls": [
      "https://example.com/teapot.png"
    ],
    "resolution": "2K",
    "output_format": "png"
  }
}'

Het opsplitsen in lagen kan meerdere afbeelding-URL's retourneren in data.results: de basisafbeelding en de afzonderlijke lagen. Elke URL verwijst naar een aparte afbeelding. Het aantal resultaten varieert per taak (1–17 afbeeldingen in totaal); verwerk de gehele array in plaats van alleen data.results[0]. Zowel de query van de voltooide taak als de webhook bij voltooiing bevatten deze array. Het initiële antwoord bij aanmaken bevat taskId en gereserveerde credits, geen afbeelding-URL's.

Voorbeeldrespons taak aanmaken

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 136
}

Voltooide opsplitsing in lagen: meerdere afbeelding-URL's

Dit illustratieve antwoord toont vier outputafbeeldingen: één basisafbeelding en drie lagen. Je taak kan een ander aantal retourneren. Bij de gevraagde 2K-resolutie is credits het definitieve bedrag voor alle vier de afbeeldingen; het ongebruikte deel van de initiële reservering voor 17 afbeeldingen is gerestitueerd.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "seedream-5-0-pro",
  "credits": 32,
  "failed_code": null,
  "status": "completed",
  "billing_status": "charged",
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/images/example/base.png",
      "https://cdn.seevio.ai/api/images/example/layer-1.png",
      "https://cdn.seevio.ai/api/images/example/layer-2.png",
      "https://cdn.seevio.ai/api/images/example/layer-3.png"
    ],
    "image_expires_at": "2026-10-12T00:00:00.000Z",
    "processing_time": 12
  }
}

Verwerk elke geretourneerde afbeelding

const response = await fetch(
  "https://api.seevio.ai/v1/tasks/TASK_ID",
  { headers: { Authorization: `Bearer ${process.env.SEEVIO_API_KEY}` } }
);
if (!response.ok) throw new Error(await response.text());
const task = await response.json();

if (task.status === "completed") {
  // Process every returned image, including the base image.
  // The number of URLs varies; do not read only results[0].
  for (const [index, imageUrl] of task.data.results.entries()) {
    console.log({ taskId: task.id, index, imageUrl });
    // Download or store this image in your application.
  }
} else if (task.status === "failed") {
  throw new Error(task.failed_reason || "Image generation failed.");
}
// If queued or generating, poll again after at least 5 seconds.

Taak opvragen

GET https://api.seevio.ai/v1/tasks/{taskId}

Vervang de voorbeeld-ID door de taskId die is geretourneerd bij het aanmaken. Queries retourneren alleen taken die eigendom zijn van de gebruiker van de API-sleutel; niet-toegankelijke of onbekende ID's retourneren HTTP 404.

Doe als uitgangspunt elke 10-20 seconden een poll, verminder de frequentie bij HTTP 429 en stop wanneer de status completed of failed is. Gebruik bij voorkeur webhooks voor productieomgevingen. Elk codevoorbeeld hieronder voert één query uit.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusToegestane waarden en vereisten
queuedGeaccepteerd en wachtend op verwerking.
generatingGeneratie is in uitvoering.
completedSuccesvol voltooid. Download data.results voordat deze verlopen.
failedDefinitief mislukt. Controleer failed_reason en billing_status.
VeldTypeToegestane waarden en vereisten
idstringTaak-ID. Dit is de taskId uit de response bij het aanmaken.
created_atnumberTijdstip van aanmaken van de taak in Unix-seconden.
modelstringDe openbare model-ID die voor deze taak is gebruikt.
billing_statusstringreserved, charged, refunded of refund_failed.
creditsnumberHet antwoord bij aanmaken en de lopende taak tonen de gereserveerde credits. Bij voltooiing is credits de werkelijke afschrijving; ongebruikte gereserveerde credits zijn dan al teruggeboekt. Bij mislukte taken blijft het oorspronkelijk gereserveerde bedrag in dit veld staan.
failed_reasonstring | nullReden van mislukken bij mislukte taken; anders null. Mislukte query-responses bevatten geen data.
failed_codestring | nullFoutcode. Zie failed_reason voor details over de fout.
dataobjectAanwezig bij succesvol opgevraagde taken. Bevat details over de output en de verwerking.
data.resultsstring[]Alle URL's van de gegenereerde afbeeldingen, inclusief de basisafbeelding bij layer-decomposition. Dit veld is leeg totdat de taak is voltooid en nadat de geldigheid is verlopen.
data.image_expires_atstring | nullVervaltijd van afbeeldingen in ISO 8601, of null indien niet beschikbaar.
data.processing_timenumber | nullVerwerkingstijd van de taak in seconden indien beschikbaar, anders null.

In de wachtrij

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "seedream-5-0-pro",
  "credits": 8,
  "failed_code": null,
  "status": "queued",
  "billing_status": "reserved",
  "failed_reason": null,
  "data": {
    "results": [],
    "image_expires_at": null,
    "processing_time": null
  }
}

Voltooid

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "seedream-5-0-pro",
  "credits": 8,
  "failed_code": null,
  "status": "completed",
  "billing_status": "charged",
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/images/example.png"
    ],
    "image_expires_at": "2026-10-12T00:00:00.000Z",
    "processing_time": 12
  }
}

Mislukt

Wanneer de opvraging status=failed retourneert, is het genereren mislukt. Zie failed_reason voor de oorzaak en billing_status voor het resultaat van de terugbetaling. In dit voorbeeld betekent refunded dat de credits zijn teruggestort. Bij credits blijft het oorspronkelijk gereserveerde aantal staan en de respons bevat geen data.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "seedream-5-0-pro",
  "credits": 8,
  "failed_code": "400",
  "status": "failed",
  "billing_status": "refunded",
  "failed_reason": "The input or output was flagged as sensitive. Please try again with different inputs."
}

Resultaatlinks blijven gedurende 30 dagen na opslag beschikbaar. Na deze periode is de lijst met resultaten (results) leeg.

Webhooks

Stel callback_url in het aanmaak-request in om een JSON POST te ontvangen wanneer de taak is voltooid of mislukt. Retourneer binnen 15 seconden een 2xx-response. Mislukte leveringen worden opnieuw geprobeerd; verwerk herhaalde leveringen idempotent op basis van de taak-ID.

Je callback-endpoint moet POST-verzoeken met een JSON-body accepteren (Content-Type: application/json).

Maak een taak met een callback

curl --fail-with-body https://api.seevio.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream-5-0-pro",
  "input": {
    "prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
    "aspect_ratio": "1:1",
    "resolution": "2K",
    "output_format": "png",
    "generation_type": "text-to-image"
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

Callbacks maken gebruik van de responsstructuur van de taakquery; bij mislukte taken waarbij restitutie heeft plaatsgevonden, bevat het hoogste niveau ook credits_refunded. Gebruik id om de taak te identificeren en status om voltooide taken te onderscheiden van mislukte. Meldingen kunnen herhaald worden: verwerk deze idempotent op basis van id en status. Callbacks zijn niet ondertekend; verifieer de taak via het query-endpoint dat authenticatie vereist. Een mislukte bezorging van de callback leidt niet tot terugbetaling van een succesvol voltooide taak.

Taak voltooid: payload voor succesvolle callback

created_at is de aanmaaktijd van de gebeurtenis; task_created_at die van de taak, in Unix-seconden. Voorbeelden tonen de aanbevolen velden; antwoorden kunnen extra velden bevatten.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171212,
  "model": "seedream-5-0-pro",
  "credits": 8,
  "failed_code": null,
  "status": "completed",
  "billing_status": "charged",
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/images/example.png"
    ],
    "image_expires_at": "2026-10-12T00:00:00.000Z",
    "processing_time": 12
  },
  "task_created_at": 1789171200
}

Taak mislukt: payload voor mislukte callback

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171212,
  "model": "seedream-5-0-pro",
  "credits": 8,
  "failed_code": "400",
  "status": "failed",
  "billing_status": "refunded",
  "failed_reason": "The input or output was flagged as sensitive. Please try again with different inputs.",
  "task_created_at": 1789171200,
  "credits_refunded": 8
}

Voorbeeld van een ontvanger

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const imageUrls = callbackData.data.results;
    // Save the image URLs and mark this task as completed in your application.
    console.log(callbackData.id, imageUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

Dit Next.js-voorbeeld leest de JSON-callback-body en verwerkt voltooide en mislukte taken direct. Voeg persistentie en taak-ID-deduplicatie toe voor je eigen applicatie; zet traag werk in de wachtrij voordat je de callback bevestigt.

Foutmeldingen

HTTP-fouten bevatten een error-object met een code en message. Een succesvol geaccepteerde taak kan later alsnog mislukken; vraag de taak op of handel de fout af via de callback.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPVeldWat te doen
400invalid_request
Corrigeer de JSON, de ontbrekende prompt, het parameterbereik of de media-URL voordat je het opnieuw probeert.
401invalid_api_key
Controleer het Bearer-token en of de API-sleutel actief is.
402insufficient_credits
Waardeer je credits op of verlaag de kosten van de taak. De response kan de vereiste en beschikbare hoeveelheden bevatten.
403forbidden
Controleer de beperking op accountniveau die in de foutmelding wordt beschreven.
404not_found
Controleer de taak-ID en of de sleutel hoort bij de gebruiker van de taak.
429rate_limited
Wacht tot het Retry-After-interval is verstreken voordat je het opnieuw probeert.
500internal_error
Controleer de foutmelding en de API-logs. Wees voorzichtig met opnieuw proberen; het opnieuw verzenden van een aanmaak-request kan leiden tot een nieuwe factureerbare taak.

Foutmeldingen maken gebruik van error.code en error.message: 400 invalid_request, 401 invalid_api_key, 402 insufficient_credits, 403 forbidden, 404 not_found, 429 rate_limited, 500 internal_error. Een 402-fout (insufficient_credits) betekent dat je resterende tegoed onvoldoende is voor deze aanvraag.

Rate limits

Taken aanmaken: elke API-sleutel staat standaard maximaal 100 verzoeken per minuut toe. Aangepaste limieten zijn momenteel niet beschikbaar.

Taken opvragen: elke API-sleutel staat standaard maximaal 120 verzoeken per minuut toe. Zoekopdrachten en verzoeken voor het aanmaken van taken worden apart geteld.

Aanvragen voor het genereren van afbeeldingen en video's delen dezelfde limiet (rate limit) per API-sleutel.

HTTP 429 bevat Retry-After: 60 voor het aanmaken en Retry-After: 5 voor queries. Bouw een vertraging in en vermijd vaker pollen dan nodig is.

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded."
  }
}