EVERYTHING Studios
API Documentation

Create a job

POST /v1/jobs submits a generation job. The body carries the image input for an image-to-3D job, and may carry an idempotency key. Creation returns immediately with a job id — poll GET /v1/jobs/{id} or subscribe to task.updated webhooks for the result.

POST/v1/jobs

Submit a generation job. Returns 202 with a job id immediately; generation runs asynchronously.

Request body

FieldTypeRequiredDescription
typestringyesMust be image-to-3d — the only supported job type. Other values are accepted but reserved for upcoming features and currently fail during processing.
inputobjectyesThe job input — see the image-to-3d table below.
optionsobjectnoAccepted for forward compatibility; not yet applied (see Options below).
idempotency_keystringno1–256 characters. Submitting the same key again returns the original job with 202 instead of creating a duplicate. Keys are scoped to your account.

Input

image-to-3d

Generates a model from a single product photo or reference image.

FieldTypeRequiredDescription
image_urlsstring[]yesExactly 1 image URL. See image rules below.

Image rules

Every entry in an image_urls array must be one of:

  • An http(s) URL — https recommended. Remote images are fetched by the pipeline and must be at most 25 MiB.
  • An inline base64 data URI data:image/(png|jpeg|webp);base64,... with a decoded payload of at most 4 MiB.

Non-http(s) schemes are rejected. Use data URIs to avoid making your images publicly fetchable; use https URLs for anything larger than 4 MiB.

Options

options is accepted on every job for forward compatibility. Its fields are not yet applied — the generation pipeline currently uses its own defaults, and GLB is the only output format produced today. Sending options is harmless but has no effect.

Responses

StatusMeaning
202 AcceptedJob created. Body: {"job_id":"..."} — the id is a ULID. Same id is returned for a repeated idempotency_key.
400 invalid_requestValidation failed or the JSON body was malformed. The error message names the offending field.
402 insufficient_balanceYour prepaid balance is below the minimum required to start a new job. The body additionally carries top-level balance_usd and min_balance_usd.

Examples

Create a job

The simplest job: one product photo in, one GLB out.

POST /v1/jobs — image-to-3d
curl -X POST https://api.everythingstudios.ai/v1/jobs \
  -H "Authorization: Bearer esk_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "image-to-3d",
    "input": {
      "image_urls": ["https://example.com/product-photo.jpg"]
    }
  }'

Keep reading