SEELE API Docs
Overview

Seele Public API

Intro

The Seele Public API provides a stable, API-key based interface for generating and iterating on any type of content programmatically via jobs.

Typical integration flow:

  1. Create an API key in the Seele developer console.
  2. Upload reference files when needed with POST /v2/api/files.
  3. Start a generation job with POST /v2/api/jobs.
  4. Optionally add a follow-up step to an existing job with POST /v2/api/jobs/{job_id}/steps.
  5. Poll GET /v2/api/jobs/{job_id} until status is finished.

Base URL

https://openapi.seeles.ai

Authentication

All public API endpoints require Bearer authentication. Include your API key in the Authorization header:

Header
Authorization: Bearer YOUR_API_KEY

Create and manage API keys in the Seele developer console.

Endpoints

POST/v2/api/filesCreate a temporary upload session and receive a reusable file_id.
PUT{upload_url}Upload raw bytes to the temporary URL returned by POST /v2/api/files.
POST/v2/api/jobsStart a new generation job request.
POST/v2/api/jobs/{job_id}/stepsSend a follow-up prompt step for an existing job.
GET/v2/api/jobs/{job_id}Check progress and retrieve available job outputs.

Contract notes

  • All documented endpoints are versioned under /v2/api.
  • job_id and file_id are opaque public identifiers.
  • Successful responses return ok: true.
  • Failed responses return ok: false with an error object.
  • Only rely on fields explicitly documented on this page.
  • Additional non-contract fields may appear in some responses for product integration or display convenience and may change without notice.

Response envelope

okboolean
Success responses return ok: true. Error responses return ok: false.
dataobject
Successful response payload. Fields depend on the endpoint.
error.codestring
Machine-readable error code on failed requests.
error.messagestring
Human-readable error message on failed requests.
Representative success payload
JSON
{
  "ok": true,
  "data": {
    "job_id": "job_123",
    "meta": {
      "platform_url": "https://www.seeles.ai/workspace/job_123"
    }
  }
}
Error example
JSON
{
  "ok": false,
  "error": {
    "code": "unauthorized",
    "message": "Invalid or missing API key"
  }
}
Bearer auth

Authentication

Pass the API key from the Seele developer console in the Authorization header as a Bearer token.

Request example

cURL
curl https://openapi.seeles.ai/v2/api/jobs \
  -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Build a cozy cat farming game",
    "model": "Seele02-flash",
    "engine": "threejs"
  }'
POST /v2/api/files

Upload File

POST /v2/api/files creates a temporary upload session. Upload the raw file bytes to the returned upload_url before upload_url_expires_at, then pass the returned file_id to /v2/api/jobs or /v2/api/jobs/{job_id}/steps.

Request fields

filenamestringRequired
Original file name returned for confirmation in the response.
content_typestringRequired
MIME type used when uploading the raw file bytes.
sizeintegerRequired
File size in bytes. Must not exceed 25 MiB.
Step 1: request upload URL
cURL
curl https://openapi.seeles.ai/v2/api/files \
  -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filename": "reference.png",
    "content_type": "image/png",
    "size": 428731
  }'
Step 2: PUT raw bytes
cURL
curl "$UPLOAD_URL" \
  -X PUT \
  -H "Content-Type: image/png" \
  --data-binary "@reference.png"

Response example

JSON
{
  "ok": true,
  "data": {
    "file_id": "0123456789abcdef0123456789abcdef",
    "upload_url": "https://...presigned-put-url...",
    "upload_url_expires_at": "2026-04-17T00:45:00.000Z",
    "upload_headers": {
      "Content-Type": "image/png"
    },
    "filename": "reference.png",
    "content_type": "image/png",
    "size": 428731
  }
}
POST /v2/api/jobs

Create Job

Start a new generation job request from an initial prompt. Store the returned job_id and reuse it for later status checks or step requests. The accepted response can also include meta.platform_url, a hosted Seele workspace link that product users can open as a sandbox for review or further iteration. engine accepts threejs, unity, or unreal as the runtime environment, and unreal is available to subscription users only. Seele02-pro is available to subscription users; otherwise the request returns 403.

Request fields

promptstringRequired
Initial creation prompt. Max length 100000 characters.
modelSeele02-flash | Seele02-pro | Seele01-flash | Seele01-pro
Optional model tier. Defaults to Seele02-flash. Seele02-pro is available to subscription users.
enginethreejs | unity | unreal
Runtime or rendering environment for the generated job. Accepted values are threejs, unity, or unreal. unreal is available to subscription users only.
generation_modelstring
Optional generation model identifier, e.g. seedream5. Discover available models from GET /v2/api/generation_models.
file_idsstring[]
Optional reference file IDs returned by POST /v2/api/files.

Request example

cURL
curl https://openapi.seeles.ai/v2/api/jobs \
  -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Build a cozy cat farming game with planting and fishing",
    "model": "Seele02-flash",
    "engine": "threejs",
    "generation_model": "seedream5",
    "file_ids": ["0123456789abcdef0123456789abcdef"]
  }'

Response example

JSON
{
  "ok": true,
  "data": {
    "job_id": "job_123",
    "meta": {
      "platform_url": "https://www.seeles.ai/workspace/job_123"
    }
  }
}

Response fields

job_idstringRequired
Opaque public job identifier for later polling or step requests.
step_idstring
Opaque step identifier for the accepted generation turn when available (only present for step requests).
meta.platform_urlstring
Hosted Seele workspace link for the same job. Useful as a product sandbox for review or further iteration, but not required for API workflows.

Build workflow around job_id and later status. Treat meta.platform_url as a convenience field for product review flows, not as required contract for automation.

Status codes

201
Job request accepted successfully.
400
Invalid request payload.
401
Missing or invalid API key.
403
The requested model, engine, or generation_model option is not available for this API key. Seele02-pro and unreal require a subscription user.
502
Service temporarily unavailable.
POST /v2/api/jobs/{job_id}/steps

Create Job Step

Submit a follow-up prompt step for an existing job using its public job_id. Successful responses follow the same shape as create and may also include meta.platform_url pointing to the updated workspace, plus a step_id for the new step. Seele02-pro is available to subscription users; otherwise the request returns 403.

Request fields

promptstringRequired
Follow-up instruction for the existing job.
modelSeele02-flash | Seele02-pro | Seele01-flash | Seele01-pro
Optional model tier override. Defaults to Seele02-flash. Seele02-pro is available to subscription users.
enginethreejs | unity | unreal
Optional runtime or rendering environment override for this step.
generation_modelstring
Optional generation model identifier for this step.
file_idsstring[]
Optional extra references uploaded through POST /v2/api/files.

Request example

cURL
curl https://openapi.seeles.ai/v2/api/jobs/$JOB_ID/steps \
  -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Add a day-night cycle and a boss battle",
    "model": "Seele02-flash",
    "file_ids": ["fedcba9876543210fedcba9876543210"]
  }'

Response example

JSON
{
  "ok": true,
  "data": {
    "job_id": "job_123",
    "step_id": "step_456",
    "meta": {
      "platform_url": "https://www.seeles.ai/workspace/job_123"
    }
  }
}

Response fields

job_idstringRequired
Opaque public job identifier for later polling or step requests.
step_idstring
Opaque step identifier for the accepted generation turn when available (only present for step requests).
meta.platform_urlstring
Hosted Seele workspace link for the same job. Useful as a product sandbox for review or further iteration, but not required for API workflows.

If the job is still processing, the API returns 409 instead of accepting the step request.

As with create, build automation around documented identifiers and status fields. Treat meta.platform_url as convenience product metadata.

Status codes

200
Job step request accepted successfully.
400
Invalid request payload.
401
Missing or invalid API key.
403
The requested model, engine, or generation_model option is not available for this API key. Seele02-pro requires a subscription user.
409
The job is still processing and cannot accept a new step request yet.
502
Service temporarily unavailable.

Error example

409 job still processing
JSON
{
  "ok": false,
  "error": {
    "code": "JOB_ALREADY_PROCESSING",
    "message": "job is still generating, new steps are not allowed yet"
  }
}
GET /v2/api/jobs/{job_id}

Get Job Status

Query the current job state with a job_id. Poll this endpoint every 10–30 seconds until status becomes finished. Finished responses include summary, total_koin, an artifacts array with latest-turn generated output URLs, and meta.platform_url for opening the result in the Seele workspace interface.

Generation states

processing
Generation is still running. Poll again later; the response may include a current_operation hint.
finished
Generation is complete. The response contains the final summary, total Koin consumed, and any currently available output artifacts.

Request example

cURL
curl https://openapi.seeles.ai/v2/api/jobs/$JOB_ID \
  -H "Authorization: Bearer YOUR_API_KEY"

Representative finished response

JSON
{
  "ok": true,
  "data": {
    "job_id": "job_123",
    "status": "finished",
    "summary": "A time detective puzzle with a boss room.",
    "total_koin": 125,
    "artifacts": [
      {
        "id": "artifact_789",
        "name": "Game Project",
        "description": "Generated Unity project package",
        "urls": ["https://...download-url..."]
      },
      {
        "id": "artifact_987",
        "name": "Preview",
        "description": "Browser playable preview",
        "urls": ["https://...preview-url..."]
      }
    ],
    "meta": {
      "platform_url": "https://www.seeles.ai/workspace/job_123"
    }
  }
}

Response fields

job_idstringRequired
Opaque public job identifier for subsequent API requests.
statusprocessing | finishedRequired
Primary workflow state. Poll until this field becomes finished.
current_operationstring
Optional progress hint while status is processing (display only).
summarystring
High-level summary of the finished result.
total_koininteger
Cumulative Koin consumed by this job across all completed steps (only present when status is finished).
artifactsarray
Latest-turn output artifacts generated by the job, each including id, name, description, urls, status, version, lineage_root, and create_at when available (only present when status is finished).
meta.platform_urlstring
Hosted Seele workspace link for the same job.

For automation, rely on status and the documented output fields. Treat artifact URLs as availability-dependent outputs rather than guaranteed fields in every finished response.

Status codes

200
Job status returned successfully.
401
Missing or invalid API key.
502
Service temporarily unavailable.