CraftStory Audio API

The audio API from CraftStory — 3 operation(s) for audio.

GitHub OpenAPI

Operations 5

GET /audio/clips/ Audio clips — the soundtrack every model takes as input #
POST /audio/clips/ Audio clips — the soundtrack every model takes as input #
GET /audio/clips/{id}/ Audio clips — the soundtrack every model takes as input #
DELETE /audio/clips/{id}/ Audio clips — the soundtrack every model takes as input #
GET /audio/clips/{id}/status/ Audio clips — the soundtrack every model takes as input #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/craftstory-com:craftstory-com-audio-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

craftstory-com-audio-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Craftstory Com Audio API
  version: 1.0.0
  description: 'Operations tagged audio across 2 of this provider''s published API definitions: craftstory-com-swagger.json, craftstory-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.craftstory.com/api/v1
security:
- ApiKey: []
tags:
- name: Audio
paths:
  /audio/clips/:
    parameters: []
    get:
      operationId: audio_clips_list
      summary: Audio clips — the soundtrack every model takes as input
      description: '``POST`` either ``text`` + a voice (``voice_id`` from

        ``/craftstory-2/voices/`` or ``voice_user_id`` from

        ``/craftstory-2/user-voices/``) or an uploaded ``file`` (WAV/MP3/M4A).

        Poll ``GET /audio/clips/{id}/status/`` until ``done``, then pass the

        ``id`` as ``audios`` to any model.'
      parameters:
      - name: status
        in: query
        description: Filter by status
        schema:
          type: string
      - name: kind
        in: query
        description: Filter by kind
        schema:
          type: string
      - name: duration__gte
        in: query
        description: Filter by duration__gte
        schema:
          type: number
      - name: duration__lte
        in: query
        description: Filter by duration__lte
        schema:
          type: number
      - name: language
        in: query
        description: Filter by language
        schema:
          type: string
      - name: created__gte
        in: query
        description: Filter by created__gte
        schema:
          type: string
          format: date
      - name: created__lte
        in: query
        description: Filter by created__lte
        schema:
          type: string
          format: date
      - name: created__range
        in: query
        description: Filter by created__range
        schema:
          type: string
          format: date
      - name: updated__gte
        in: query
        description: Filter by updated__gte
        schema:
          type: string
          format: date
      - name: updated__lte
        in: query
        description: Filter by updated__lte
        schema:
          type: string
          format: date
      - name: updated__range
        in: query
        description: Filter by updated__range
        schema:
          type: string
          format: date
      - name: limit
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      - name: offset
        in: query
        description: The initial index from which to return the results.
        required: false
        schema:
          type: integer
      - name: project
        in: query
        description: Filter by project
        schema:
          type: string
      - name: ordering
        in: query
        description: 'Sort by any of the following fields: created, updated. Prefix with ''-'' for descending order.'
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AudioClip'
      tags:
      - Audio
    post:
      operationId: audio_clips_create
      summary: Audio clips — the soundtrack every model takes as input
      description: '``POST`` either ``text`` + a voice (``voice_id`` from

        ``/craftstory-2/voices/`` or ``voice_user_id`` from

        ``/craftstory-2/user-voices/``) or an uploaded ``file`` (WAV/MP3/M4A).

        Poll ``GET /audio/clips/{id}/status/`` until ``done``, then pass the

        ``id`` as ``audios`` to any model.'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AudioClip'
      tags:
      - Audio
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AudioClipCreate'
        required: true
    servers:
    - url: https://api.craftstory.com/api/v1
  /audio/clips/{id}/:
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: audio_clips_read
      summary: Audio clips — the soundtrack every model takes as input
      description: '``POST`` either ``text`` + a voice (``voice_id`` from

        ``/craftstory-2/voices/`` or ``voice_user_id`` from

        ``/craftstory-2/user-voices/``) or an uploaded ``file`` (WAV/MP3/M4A).

        Poll ``GET /audio/clips/{id}/status/`` until ``done``, then pass the

        ``id`` as ``audios`` to any model.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AudioClip'
      tags:
      - Audio
    delete:
      operationId: audio_clips_delete
      summary: Audio clips — the soundtrack every model takes as input
      description: '``POST`` either ``text`` + a voice (``voice_id`` from

        ``/craftstory-2/voices/`` or ``voice_user_id`` from

        ``/craftstory-2/user-voices/``) or an uploaded ``file`` (WAV/MP3/M4A).

        Poll ``GET /audio/clips/{id}/status/`` until ``done``, then pass the

        ``id`` as ``audios`` to any model.'
      responses:
        '204':
          description: ''
      tags:
      - Audio
    servers:
    - url: https://api.craftstory.com/api/v1
  /audio/clips/{id}/status/:
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: audio_clips_status
      summary: Audio clips — the soundtrack every model takes as input
      description: '``POST`` either ``text`` + a voice (``voice_id`` from

        ``/craftstory-2/voices/`` or ``voice_user_id`` from

        ``/craftstory-2/user-voices/``) or an uploaded ``file`` (WAV/MP3/M4A).

        Poll ``GET /audio/clips/{id}/status/`` until ``done``, then pass the

        ``id`` as ``audios`` to any model.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AudioClipStatus'
      tags:
      - Audio
    servers:
    - url: https://api.craftstory.com/api/v1
components:
  schemas:
    AudioClip:
      required:
      - kind
      - voice
      - voice_11labs
      - voice_user
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
          readOnly: true
        status:
          title: Status
          type: string
          enum:
          - created
          - in_progress
          - done
          - failed_tts
          - failed_moderation
          - failed_duration
          - failed
          - not_pass_moderation
        kind:
          title: Kind
          type: string
          enum:
          - text
          - file
          - silent
        duration:
          title: Duration
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: 0
        language:
          title: Language
          type:
          - integer
          - 'null'
        moderation_labels:
          title: Moderation labels
          type:
          - object
          - 'null'
        created:
          title: Created
          type: string
          format: date-time
          readOnly: true
        updated:
          title: Updated
          type: string
          format: date-time
          readOnly: true
        file:
          title: File
          type:
          - string
          - 'null'
          readOnly: true
          format: uri
        text:
          title: Text
          type:
          - string
          - 'null'
        voice:
          $ref: '#/components/schemas/AudioClipVoice'
        voice_11labs:
          $ref: '#/components/schemas/AudioClipVoice11Labs'
        voice_user:
          $ref: '#/components/schemas/AudioClipUserVoice'
        is_voice_default:
          title: Is voice default
          type: boolean
        is_user_selected_voice:
          title: Is user selected voice
          type: boolean
    AudioClipVoice11Labs:
      required:
      - name
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
          readOnly: true
        name:
          title: Name
          type: string
          maxLength: 256
          minLength: 1
        labels:
          type: array
          items:
            type: string
            format: uuid
          uniqueItems: true
        gender:
          title: Gender
          type:
          - string
          - 'null'
          enum:
          - male
          - female
          - null
        age:
          title: Age
          type:
          - string
          - 'null'
          enum:
          - child
          - young_adult
          - middle_adult
          - old
          - null
        language:
          title: Language
          type:
          - integer
          - 'null'
    Voice11LabsVoiceListRetrieveLanguage:
      required:
      - code
      - elevenlabs_code
      type: object
      properties:
        id:
          title: ID
          type: integer
          readOnly: true
        code:
          title: Code
          type: string
          maxLength: 8
          minLength: 1
        elevenlabs_code:
          title: Elevenlabs code
          type: string
          maxLength: 8
          minLength: 1
    AudioClipCreate:
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
          readOnly: true
        file:
          title: File
          type:
          - string
          - 'null'
          readOnly: true
          format: uri
        silent_duration:
          title: Silent duration
          type:
          - integer
          - 'null'
          enum:
          - 500
          - 1000
          - 1500
          - 2000
          - 2500
          - 3000
          - 3500
          - 4000
          - 4500
          - 5000
          - null
        text:
          title: Text
          type:
          - string
          - 'null'
          maxLength: 2000
          minLength: 1
        avatar:
          title: Avatar
          type:
          - string
          - 'null'
          format: uuid
        voice:
          title: Voice
          type:
          - string
          - 'null'
          format: uuid
        voice_id:
          title: Voice id
          description: Library voice id (from GET /craftstory-2/voices/). Send this OR voice_user_id, not both.
          type:
          - string
          - 'null'
          format: uuid
        voice_user_id:
          title: Voice user id
          description: Cloned voice id (from GET /craftstory-2/user-voices/). Send this OR voice_id, not both.
          type:
          - string
          - 'null'
          format: uuid
        is_user_selected_voice:
          title: Is user selected voice
          type: boolean
    AudioClipStatus:
      type: object
      properties:
        status:
          title: Status
          type: string
          enum:
          - created
          - in_progress
          - done
          - failed_tts
          - failed_moderation
          - failed_duration
          - failed
          - not_pass_moderation
        file:
          title: File
          type:
          - string
          - 'null'
          readOnly: true
          format: uri
        status_display:
          title: Status display
          type: string
          readOnly: true
        moderation_labels:
          title: Moderation labels
          type:
          - object
          - 'null'
        is_voice_default:
          title: Is voice default
          type: boolean
    AudioClipUserVoice:
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
          readOnly: true
        name:
          title: Name
          type: string
          maxLength: 256
        voice_id:
          title: Voice id
          type:
          - string
          - 'null'
          maxLength: 128
        example:
          title: Example
          type:
          - string
          - 'null'
          readOnly: true
          format: uri
        language:
          $ref: '#/components/schemas/Voice11LabsVoiceListRetrieveLanguage'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Voice11LabsVoiceListRetrieve11Label'
          readOnly: true
        gender:
          title: Gender
          type:
          - string
          - 'null'
          enum:
          - male
          - female
          - null
        age:
          title: Age
          type:
          - string
          - 'null'
          enum:
          - child
          - young_adult
          - middle_adult
          - old
          - null
        status:
          title: Status
          type: string
          enum:
          - created
          - in_progress
          - done
          - failed
    AudioClipVoice:
      required:
      - name
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
          readOnly: true
        name:
          title: Name
          type: string
          maxLength: 256
          minLength: 1
        kind:
          title: Kind
          type:
          - string
          - 'null'
          enum:
          - avatar
          - eleven_labs
          - null
        labels:
          type: array
          items:
            type: string
            format: uuid
          uniqueItems: true
        gender:
          title: Gender
          type:
          - string
          - 'null'
          enum:
          - male
          - female
          - null
        age:
          title: Age
          type:
          - string
          - 'null'
          enum:
          - child
          - young_adult
          - middle_adult
          - old
          - null
        language:
          title: Language
          type:
          - integer
          - 'null'
    Voice11LabsVoiceListRetrieve11Label:
      required:
      - name
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
          readOnly: true
        name:
          title: Name
          type: string
          maxLength: 64
          minLength: 1
  securitySchemes:
    ApiKey:
      type: apiKey
      name: Authorization
      in: header
      description: Enter 'Bearer sk-cs-...' (your API key from Account → API Access).
x-refined-from:
- craftstory-com-swagger.json
- craftstory-com-openapi.yml