Skip to main content
TokenLab supports text-to-image, image-to-image, and image editing through public image endpoints. Image models do not share one universal parameter set, so production clients should first choose the endpoint, then choose the model, then send only the fields supported by that model.

When To Use Each Endpoint

Always send model. Image endpoints intentionally do not rely on a historical implicit default model for production traffic.

Pick A Model

Start with model discovery, then inspect the selected model’s TokenLab model details:
For non-chat models, the list response may include GET /v1/models. Model detail pages may expose the fuller GET /v1/models/{model}. Use those fields to confirm:
  • The supported operation, such as text-to-image, image-to-image, or image-edit.
  • The request endpoint expected by the model.
  • Which shape to use for references, such as image_url, image_urls, reference_image_urls, multipart image, or JSON images[].
  • Whether the model accepts size, aspect_ratio, resolution, quality, background, output_format, or response_format.

Request Shape Rules

  • gpt-image-2 style requests use OpenAI-like size, quality, and edit fields. For generation and edits, background accepts auto or opaque; transparent is not supported. Leave optional fields out when you want the model or TokenLab to use automatic defaults.
  • Gemini and Nano Banana image families usually use aspect_ratio; only send resolution when the model details expose it.
  • Nano Banana image-to-image belongs on /v1/images/generations with operation: "image-to-image" and reference image URLs.
  • /v1/images/generations does not accept top-level images[] or file_id; those are edit-flow shapes.
  • Remote image references must be public http or https URLs. Do not send private network URLs, embedded credentials, URL fragments, or signed URLs that may expire before processing starts.

Text-To-Image Example

Reference-Image Example

Handling Results

Image responses can be synchronous or asynchronous:
  • Synchronous responses return final data[] with url or b64_json.
  • Async responses return id, task_id, status, and usually poll_url.
  • Prefer poll_url when it is present. If you need a fixed route, poll GET /v1/tasks/{id}.
  • Use synchronous requests when you specifically need b64_json; async image results are URL-oriented.
Persist the returned image URL, task ID, model, and your own user/job ID. Do not keep polling after a terminal status.

Production Checklist

  • Validate user inputs before calling TokenLab: prompt length, image count, URL reachability, and file type.
  • Set HTTP timeouts high enough for synchronous high-resolution requests. Use async mode where available for long work.
  • Store request_id, task_id, poll_url, model, endpoint, and sanitized request shape for support.
  • On client timeout, check whether a task was created before retrying the create request.
  • Reconcile cost with usage records and billing_transaction_id when present, not with provider task IDs.

Common Errors

API Reference