Skip to main content
Eversince is a creative agent that plans and executes across image, video, and audio. It orchestrates the latest AI models and operates in a purpose-built environment with tools, skills, and memory. Works for one-off tasks or as a creative employee in any agent-to-agent workflow.

Base URL

Authentication

All requests require an API key in the Authorization header.
API keys start with es_live_ and can be created in your account settings or via the API. Each account can have up to 10 active keys.

Quick start

Create a project, poll until it’s done, then get the result.

Project lifecycle

Every project follows this status flow:
The idle status appears twice in a typical flow. First idle: the agent finished its work. assembled_url is null, the project is ready for feedback or rendering. Second idle (after you call /render): rendering is complete and assembled_url contains the video URL. Always check assembled_url to distinguish between the two.

Two modes

Autonomous (API default). The agent handles everything start to finish. Create the project, poll until idle, get the result. Collaborative. The agent stops at decision points and returns idle with a message in agent_message. Review the message, send feedback via POST /projects/:id/messages, and the agent continues. Good for guiding creative direction.
The API defaults to autonomous mode. In the studio, the default is collaborative.
Switch modes anytime via PATCH /projects/:id/settings.

Rate limits

For higher limits, contact us at support@eversince.ai Rate limit headers are included on every response:
When rate limited, you’ll receive a 429 response with a Retry-After header.

Errors

All errors follow the same format:
Validation errors join multiple field errors with semicolons: "brief: brief is required; mode: mode must be autonomous or collaborative".

Response headers

Every response includes:

Minimum credit requirements

Best practices

Network retries can duplicate projects. Include an idempotency_key to prevent this. Existing projects return 200, new projects return 202. Handle both as success.
Webhooks are delivered once. Use them as a trigger, then confirm state with GET /projects/:id.
assembled_url expires after 24 hours. Create a share link for a permanent URL, or download the video. Check assembled_url_expires_at for the exact expiry.
When balance drops below 100 credits, responses include credits_warning. Use this to trigger top-up flows before the agent runs out mid-project.
Store the last message ID and pass it as ?after=msg_id to get only new messages.
Every response includes an X-Request-Id header. Log these alongside your requests for debugging with support.