DocsGet startedQuickstart
First REST flow

Estimate, create, and track your first generation

Discover a supported generation task, estimate it without authentication, and optionally create and monitor a paid generation.

On this page

This guide uses the current public video.create task with seedance-2. You can complete discovery and estimation without an API key, creating media, or spending balance.

Before you begin

Create an account in Console, open API Keys, and create a key if you intend to run the optional generation step. The full efapi_live_... secret is displayed once. Keep it out of source control, browser URLs, and prompts.

New organizations start with a zero balance. Discovery and estimation still work without funding. If you continue to the optional paid generation, a signed-in billing manager must add balance in Console after estimating and before creation.

The example price is representative of current pricing. Always use the response from POST /v1/estimate as the request-specific estimate immediately before paid creation.

01

Discover the contract

Read the task catalog before constructing input. This public request creates no media and spends no balance.

curl https://api.entirefeed.com/v1/tasks \
  -X GET

Confirm that video.create is available, select its seedance-2variant, and use that variant's published input schema and defaults.

02

Estimate before any paid request

Public estimateNo credential and no balance spent

Estimation accepts the exact generation payload, returns a request-specific USD amount, and creates no media.

curl https://api.entirefeed.com/v1/estimate \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
  "task": "video.create",
  "model": "seedance-2",
  "input": {
    "prompt": "A crisp product reveal on a clean studio set",
    "duration_seconds": 8,
    "aspect_ratio": "9:16",
    "resolution": "720p"
  }
}'
200 Estimate response
{
  "estimated_cost": {
    "amount_usd": "1.64"
  },
  "line_items": [
    {
      "type": "video_generation",
      "model": "seedance-2",
      "quantity": 1,
      "unit": "operation",
      "amount_usd": "1.64"
    }
  ]
}
You can stop here.Your request is priced and no balance has been spent.
03

Optional: create the generation

Public REST API keyAuthorization: Bearer efapi_live_...
This is the first paid request, and it requires balance.New organizations start with $0. Estimate-only users can stop above without spending. A signed-in billing manager can add balance in Console. The estimated amount is held from your balance while the generation runs; use a stable Idempotency-Key.
curl https://api.entirefeed.com/v1/generations \
  -X POST \
  -H "Authorization: Bearer $ENTIREFEED_API_KEY" \
  -H "Idempotency-Key: quickstart-video-001" \
  -H "Content-Type: application/json" \
  -d '{
  "task": "video.create",
  "model": "seedance-2",
  "input": {
    "prompt": "A crisp product reveal on a clean studio set",
    "duration_seconds": 8,
    "aspect_ratio": "9:16",
    "resolution": "720p"
  }
}'
201 Queued generation
{
  "id": "gen_0123456789abcdef0123456789abcdef",
  "object": "generation",
  "status": "queued",
  "model": "seedance-2",
  "task": "video.create",
  "created_at": "2026-07-12T08:30:00Z",
  "estimated_cost": {
    "amount_usd": "1.64"
  },
  "links": {
    "self": "https://api.entirefeed.com/v1/generations/gen_0123456789abcdef0123456789abcdef"
  }
}
04

Monitor to a terminal state

Follow links.self until the generation status is succeeded, failed, cancelled, or manual_review.

curl https://api.entirefeed.com/v1/generations/gen_0123456789abcdef0123456789abcdef \
  -X GET \
  -H "Authorization: Bearer $ENTIREFEED_API_KEY"
200 Succeeded generation
{
  "id": "gen_0123456789abcdef0123456789abcdef",
  "object": "generation",
  "status": "succeeded",
  "model": "seedance-2",
  "task": "video.create",
  "created_at": "2026-07-12T08:30:00Z",
  "completed_at": "2026-07-12T08:31:14Z",
  "output": {
    "assets": [
      {
        "id": "asset_0123456789abcdef0123456789abcdef",
        "type": "video",
        "url": "https://cdn.entirefeed.com/examples/product-reveal.mp4",
        "mime_type": "video/mp4",
        "expires_at": null
      }
    ]
  },
  "usage": {
    "amount_usd": "1.64",
    "line_items": [
      {
        "type": "video_generation",
        "model": "seedance-2",
        "quantity": 1,
        "unit": "operation",
        "amount_usd": "1.64"
      }
    ],
    "billing_status": "settled"
  },
  "error": null,
  "metadata": null
}
05

Lifecycle, cost, and common errors

Execution

queued and running are active. Terminal states are reported by the generation resource.

Usage

The estimated amount is held while work runs. Final usage shows the amount charged or released.

Failures

Inspect the error code. Do not repeat paid work after authentication, balance, rate-limit, availability, or review failures until you know the request's current status.

authentication_errorCreate or replace the API key; do not substitute a Console or MCP credential.
idempotency_conflictUse the existing request body or choose a new key for a genuinely new operation.
insufficient_balanceNo work starts. A signed-in billing user can manage balance in Console.
rate_limit_exceededRespect the limit and retry deliberately; keep the same key for the same intended work.