Skip to main content

List models


GET /models
Returns all available generation models with their capabilities and supported features.
ParameterTypeDescription
typestringFilter by video or image.

Response 200

{
  "models": [
    {
      "id": "kling-3.0",
      "name": "Kling 3.0",
      "type": "video",
      "generation_types": ["text-to-video", "image-to-video"],
      "aspect_ratios": ["16:9", "9:16", "1:1"],
      "durations": ["4s", "6s", "8s"],
      "resolutions": ["1080p"],
      "has_sound": true,
      "supports_audio_toggle": true,
      "supports_audio_input": false,
      "supports_image_input": true,
      "supports_end_frame": false,
      "supports_multi_shot": false,
      "supports_reference_images": false,
      "max_reference_images": null,
      "supports_reference_videos": false,
      "max_reference_videos": null,
      "supports_video_input": false,
      "max_input_video_duration": null,
      "supports_negative_prompt": true,
      "supports_camera_fixed": false,
      "supports_camera_motion": true,
      "camera_motion_options": ["static", "dolly_in", "dolly_out", "tracking_left", "tracking_right"],
      "max_prompt_length": 2500
    }
  ]
}
Use model IDs when setting project defaults (video_model, image_model) or when directing the agent to use a specific model.

List voices


GET /voices
Returns available voiceover voices with descriptions.
ParameterTypeDescription
genderstringFilter by male, female, or neutral.

Response 200

{
  "voices": [
    {
      "name": "Isabella",
      "gender": "female",
      "age": "young adult",
      "accent": "American",
      "style": "warm, conversational",
      "description": "Warm and engaging, ideal for lifestyle brands and conversational narration."
    },
    {
      "name": "James",
      "gender": "male",
      "age": "middle-aged",
      "accent": "British",
      "style": "authoritative, cinematic",
      "description": "Deep and commanding, suited for luxury brands and cinematic narration."
    }
  ]
}
Voice names can be used when directing the agent: "Use the voice Isabella for the voiceover".

Estimate costs


POST /estimate-cost
Estimate credit costs for planned operations before committing.

Request body

ParameterTypeRequiredDescription
operationsarrayYesList of planned operations. Max 50.
Each operation:
FieldTypeRequiredDescription
toolstringYesgenerate_image, generate_video, generate_audio, upscale_media, analyze_media, remove_background, motion_overlay.
modelstringVariesRequired for generate_image and generate_video.
typestringVariesRequired for generate_audio (voiceover, music, sound_effect) and upscale_media (image, video).
durationnumberVariesRequired for generate_video (seconds).
countintegerNoNumber of generations. Default 1, max 100.
soundbooleanNoInclude audio in video generation.
resolutionstringNoOutput resolution.
music_modelstringNoMusic engine for audio generation.

Response 200

{
  "items": [
    {
      "operation": "generate_video",
      "credits_per_unit": 55,
      "count": 4,
      "subtotal": 220
    },
    {
      "operation": "generate_image",
      "credits_per_unit": 12,
      "count": 4,
      "subtotal": 48
    }
  ],
  "total_credits": 268,
  "is_partial": false,
  "note": "Covers generation costs only. Agent reasoning costs are additional."
}

Example

curl -X POST https://eversince.ai/api/v1/estimate-cost \
  -H "Authorization: Bearer $EVERSINCE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "operations": [
      { "tool": "generate_video", "model": "kling-3.0", "duration": 5, "count": 4 },
      { "tool": "generate_image", "model": "nano-banana-pro", "count": 4 },
      { "tool": "generate_audio", "type": "voiceover", "duration": 15 },
      { "tool": "generate_audio", "type": "music", "duration": 15 }
    ]
  }'

Discover existing projects


GET /projects/discover
List projects created in the studio that are available for API management.
ParameterTypeDefaultDescription
limitinteger20Results per page. 1–100.
offsetinteger0Pagination offset.
titlestringSearch by title.

Response 200

The title field can be null if the project has no title set.
{
  "projects": [
    {
      "project_id": "proj_abc123",
      "title": "My Project",
      "aspect_ratio": "16:9",
      "project_url": "https://eversince.ai/app/projects/...",
      "created_at": "2025-03-15T10:30:00Z",
      "updated_at": "2025-03-15T10:35:00Z"
    }
  ],
  "total": 5,
  "limit": 20,
  "offset": 0
}

Adopt a project


POST /projects/adopt
Take control of an existing studio project via the API.

Request body

ParameterTypeRequiredDescription
project_idstringYesThe project ID from discovery.
modestringNoautonomous or collaborative (default).

Response 201 (newly adopted)

{
  "id": "proj_abc123",
  "status": "idle",
  "mode": "collaborative",
  "project_url": "https://eversince.ai/app/projects/..."
}

Response 200 (already adopted)

If the project was already adopted, returns the existing record with a message field.
{
  "id": "proj_abc123",
  "status": "idle",
  "mode": "collaborative",
  "project_url": "https://eversince.ai/app/projects/...",
  "message": "Project already adopted"
}
After adoption, all project endpoints work normally. The project remains accessible in the studio.