Narakeet Text to Speech API

Build narrated audio (MP3, M4A, WAV) from text, SubRip, or WebVTT input.

Operations 2

POST /text-to-speech/{format} Build speech audio from text #
GET /status Poll a build status URL #

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/narakeet-text-to-speech-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

narakeet-text-to-speech-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Narakeet Account Text to Speech API
  description: The Narakeet API turns text and Markdown scripts into narrated audio and video programmatically. It exposes a text-to-speech endpoint (returning MP3, M4A, or WAV) in two modes - a short-content streaming mode that returns audio bytes directly, and a long-content JSON polling mode that returns a status URL to poll while a longer build runs asynchronously - plus a Markdown-to-video build workflow (upload a zip of the script and assets, trigger a build, then poll for the finished MP4), a voice listing endpoint, and an account credits endpoint. All build requests authenticate with an `x-api-key` header. API access requires a top-up or metered commercial Narakeet account; free and unmetered accounts cannot use the API. The default quota is 86,400 requests per day (1 per second). Pre-signed status and result URLs returned by the polling and video workflows do not require the API key.
  version: '1.0'
  contact:
    name: Narakeet
    url: https://www.narakeet.com
    email: contact@narakeet.com
servers:
- url: https://api.narakeet.com
  description: Narakeet API
security:
- apiKeyAuth: []
tags:
- name: Text to Speech
  description: Build narrated audio (MP3, M4A, WAV) from text, SubRip, or WebVTT input.
paths:
  /text-to-speech/{format}:
    post:
      operationId: buildTextToSpeech
      tags:
      - Text to Speech
      summary: Build speech audio from text
      description: 'Converts text (or SubRip / WebVTT subtitle input) into narrated audio. Two modes are selected by the `Accept` header. With `Accept: application/octet-stream` the endpoint operates as a short-content streaming API - input is limited to about 1 KB and the audio bytes are returned directly in the response, with the duration in the `x-duration-seconds` response header (WAV is not available in this mode). Without that Accept header the endpoint operates as a long-content polling API - input up to about 1024 KB is accepted and the response is a JSON object containing a `statusUrl` to poll. Use `Accept: application/zip` with multi-scene input (scenes separated by `---`) for batch audio, or `Accept: application/json+vtt` to also receive subtitle result URLs.'
      parameters:
      - name: format
        in: path
        required: true
        description: Output audio format. WAV is only available via the polling API.
        schema:
          type: string
          enum:
          - mp3
          - m4a
          - wav
      - name: voice
        in: query
        required: false
        description: Name of the voice to use (see the Voices endpoint for valid names).
        schema:
          type: string
          example: mickey
      - name: voice-speed
        in: query
        required: false
        description: Reading speed multiplier (1.2 = 20% faster, 0.8 = 20% slower).
        schema:
          type: number
          example: 1.1
      - name: voice-volume
        in: query
        required: false
        description: Relative loudness of the narration.
        schema:
          type: string
          example: soft
      requestBody:
        required: true
        description: The script to narrate. Content-Type text/plain for plain text, application/x-subrip (or text/srt) for SubRip, or text/vtt for WebVTT.
        content:
          text/plain:
            schema:
              type: string
              example: Hello from the Narakeet text to speech API.
      responses:
        '200':
          description: Streaming mode returns the audio bytes directly. Polling mode returns a JSON object with a statusUrl to poll for the build result.
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
            application/json:
              schema:
                $ref: '#/components/schemas/BuildTask'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /status:
    get:
      operationId: pollBuildStatus
      tags:
      - Text to Speech
      summary: Poll a build status URL
      description: Represents polling the pre-signed `statusUrl` returned by the polling audio build and the video build. The actual URL is time-limited and pre-signed, so no API key is required. Poll until `finished` is true, then read the `result` download URL. This path is illustrative; always use the exact statusUrl returned in the build response.
      responses:
        '200':
          description: Current build status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BuildStatus'
components:
  responses:
    TooManyRequests:
      description: The daily request quota (default 86,400 per day, 1 per second) was exceeded.
    Unauthorized:
      description: Missing or invalid API key, or the account is not eligible for API access.
  schemas:
    BuildTask:
      type: object
      description: Response from a polling audio build or a video build.
      properties:
        statusUrl:
          type: string
          format: uri
          description: Pre-signed URL to poll for build progress and the final result.
    BuildStatus:
      type: object
      description: The state of an asynchronous build, returned when polling the status URL.
      properties:
        message:
          type: string
          description: Status or error message.
        finished:
          type: boolean
          description: True when the build has completed (successfully or not).
        succeeded:
          type: boolean
          description: True when the build finished successfully.
        percent:
          type: integer
          description: Build progress from 0 to 100.
        result:
          type: string
          format: uri
          description: Download URL for the finished audio or video (valid for a limited time).
        poster:
          type: string
          format: uri
          description: Poster image URL for a finished video (video builds only).
        durationInSeconds:
          type: integer
          description: Duration of the produced media in seconds.
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key