Browse the API docs
Endpoint reference

Catalogs

The Crayo Catalogs API lists the voices, narration languages, subtitle styles and background music tracks you can reference from other endpoints. All four endpoints are free and return the ids that projects and generators accept.

List voices

GET/v1/voices

Lists every narration voice available to your account, with a preview file for each one. Voice ids from this endpoint are the only ids accepted by the voiceover generator and the voice changer, so resolve a voice here before generating audio.

Credits:
Free
Rate limit:
Default tier, 2/s and 50/min

Parameters

NameInTypeRequiredDescription
genderquerystringNoFilter by voice gender.
accentquerystringNoFilter by accent, for example american or british.
searchquerystringNoCase-insensitive match against the voice name.
limitqueryintegerNoVoices per page. 1 to 500. Returns every match when omitted.
offsetqueryintegerNoNumber of voices to skip.default 0

Request

curl
curl "https://api.crayo.ai/v1/voices?gender=female" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "total": 412,
  "voices": [
    {
      "voice_id": "v_9f2c41ab77d0e315",
      "name": "Nova",
      "gender": "female",
      "age": "young",
      "accent": "american",
      "description": "Bright and conversational",
      "preview_url": "https://cdn-crayo.com/voices/v_9f2c41ab77d0e315.mp3"
    }
  ]
}

Errors

  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.

List voice languages

GET/v1/voices/languages

Lists the languages narration can be generated in. Voices are multilingual: write the script in the language you want and the voice follows it, so this list is for building language pickers rather than for passing a code to another endpoint.

Credits:
Free
Rate limit:
Default tier, 2/s and 50/min

Request

curl
curl "https://api.crayo.ai/v1/voices/languages" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "total": 32,
  "languages": [
    {
      "code": "en",
      "name": "English"
    },
    {
      "code": "es",
      "name": "Spanish"
    }
  ]
}

Errors

  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.

List subtitle styles

GET/v1/subtitle-styles

Lists the burned-in subtitle styles you can attach to a project. Pass a style_id from this list as subtitles.style_id when creating or updating a project.

Credits:
Free
Rate limit:
Default tier, 2/s and 50/min

Request

curl
curl "https://api.crayo.ai/v1/subtitle-styles" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "total": 32,
  "styles": [
    {
      "style_id": "9",
      "name": "Bold Bounce",
      "font_family": "Montserrat",
      "primary_color": "#FFFFFF",
      "has_background": false,
      "animation": "word"
    }
  ]
}

Errors

  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.

List music

GET/v1/music

Lists background music tracks from the Crayo library. Pass a track_id as music.track_id on a project to score it without uploading your own audio.

Credits:
Free
Rate limit:
Default tier, 2/s and 50/min

Parameters

NameInTypeRequiredDescription
genrequerystringNoFilter by genre. Use recommended for the curated shortlist.recommendedrapanimesadclassicalquirkychillvlog
limitqueryintegerNoTracks per page. 1 to 100.default 50
offsetqueryintegerNoNumber of tracks to skip.default 0

Request

curl
curl "https://api.crayo.ai/v1/music?genre=vlog" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "total": 64,
  "tracks": [
    {
      "track_id": "clq0ax9as00d2udfzijarenj2",
      "name": "Sunday Drive",
      "genre": "vlog",
      "duration_seconds": 132,
      "url": "https://cdn-crayo.com/music/sunday-drive.mp3"
    }
  ]
}

Errors

  • 400VALIDATION_ERRORgenre is not one of the supported genres.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
New to the Crayo API? See what it is forUse cases, pricing and the console walkthrough live on the API feature page.

FAQs

Frequent questions

No. All four are free and use the default rate tier of 50 requests per minute.

GET /v1/voices accepts gender, accent, search, limit and offset query parameters. Each voice comes back with a preview_url you can play before choosing it.

GET /v1/music accepts genre set to recommended, rap, anime, sad, classical, quirky, chill or vlog, plus limit and offset.

Pass a style_id from GET /v1/subtitle-styles as subtitles.style_id, and a track_id from GET /v1/music as music.track_id, when creating or updating a project.

Still have questions?

Contact our 24/7 support team for any concerns or inquiries.

Get in touch