EasyVoice API

EasyVoice API as documented publicly: 11 operations. Contract generated from the documentation by API Evangelist (2026-11-06); not the provider's own document.

Operations 11

GET /api/v1 OpenAI TTS Removal: tts-1 Ends 6 Jan 2027 #
POST /api/v1 POST /api/v1 #
POST /api/v1/audio/speech POST /api/v1/audio/speech #
POST /api/v1/jobs POST /api/v1/jobs #
GET /api/v1/jobs/{id} Poll job status #
GET /api/v1/voices List voice clones #
POST /api/v1/voices POST /api/v1/voices #
DELETE /api/v1/voices/{id} Delete a voice clone #
POST /v1/audio/speech Generate speech from text. Returns audio file directly. #
GET /v1/jobs/{id} Poll job status #
GET /v1/voices Voice not found. Check the voice ID against GET /v1/voices or the voice browser at /voices. #

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/easyvoice-ae:easyvoice-ae-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

easyvoice-ae-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: EasyVoice API
  version: '2026-11-06'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-06: 11 operation(s) read from 17 public documentation page(s) (each
    operation names its page in x-source). This is not the provider''s published contract; EasyVoice has published no machine-readable contract
    that the pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 7
    documentation: 4
    pages-with-code: 8
    pages-read: 17
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-06'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://easyvoice.ae/openai-tts-alternative/api-reference
  - https://easyvoice.ae/api-docs
  - https://easyvoice.ae/play-ht-alternative
  - https://easyvoice.ae/openai-tts-alternative/quickstart
  - https://easyvoice.ae/text-to-speech-arabic
  - https://easyvoice.ae/mcp
  - https://easyvoice.ae/openai-tts-alternative/migration-guide
  - https://easyvoice.ae/openai-tts-alternative/tts-1-shutdown
  - https://easyvoice.ae/unlimited-text-to-speech
  - https://easyvoice.ae/lovo-alternative
  - https://easyvoice.ae/neets-ai-alternative
  - https://easyvoice.ae/compare/playht
  - https://easyvoice.ae/compare/lovo
  - https://easyvoice.ae/compare/neets-ai
  - https://easyvoice.ae/openai-tts-alternative
  - https://easyvoice.ae/arabic-tts-api
  - https://easyvoice.ae/openai-tts-alternative/free-tier
paths:
  /api/v1:
    get:
      operationId: get_api_v1
      tags:
      - Api
      summary: 'OpenAI TTS Removal: tts-1 Ends 6 Jan 2027'
      description: Not documented on the page; operation omitted.
      x-source: https://easyvoice.ae/openai-tts-alternative/tts-1-shutdown
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    post:
      operationId: post_api_v1
      tags:
      - Api
      summary: POST /api/v1
      x-source: https://easyvoice.ae/openai-tts-alternative/tts-1-shutdown
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1Request'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: curl, maps the OpenAI voice names, and says plainly what is not the same, including that there is no streaming. It ends with
          a ten-line script you can run on a free key today. Get Free API Key → ← OpenAI Alternative Hub Pricing 5,000 characters per day free,
          no credit card. Pro $ 9.99 /mo unlimited (fair use 10 M characters per 30 days). Part of the OpenAI TTS alternative hub — voice mapping,
          migr
  /api/v1/audio/speech:
    post:
      operationId: post_api_v1_audio_speech
      tags:
      - Api
      summary: POST /api/v1/audio/speech
      x-source: https://easyvoice.ae/openai-tts-alternative/api-reference
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1AudioSpeechRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -X POST https://easyvoice.ae/api/v1/audio/speech  -H "Authorization: Bearer YOUR_API_KEY"  -H "Content-Type: application/json"  -d
          ''{"voice":"af_aoede","input":"EasyVoice TTS API — parameter reference."}''  --output out.mp3'
  /api/v1/jobs:
    post:
      operationId: post_api_v1_jobs
      tags:
      - Api
      summary: POST /api/v1/jobs
      x-source: https://easyvoice.ae/api-docs
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1JobsRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://easyvoice.ae/api/v1/jobs  -H \"Authorization: Bearer ev_your_api_key\"  -H \"Content-Type: application/json\"\
          \  -d '{\n \"type\": \"longform\",\n \"input\": \"A long article text...\",\n \"voice\": \"af_aoede\",\n \"callback_url\": \"https://your-endpoint.example/webhook\"\
          \n }'"
  /api/v1/jobs/{id}:
    get:
      operationId: get_api_v1_jobs_id
      tags:
      - Api
      summary: Poll job status
      description: GET /api/v1/jobs/{id}
      x-source: https://easyvoice.ae/api-docs
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Bearer ev_your_api_key
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1JobsIdResponse'
      x-evidence:
        kind: documentation
  /api/v1/voices:
    get:
      operationId: get_api_v1_voices
      tags:
      - Api
      summary: List voice clones
      description: GET /api/v1/voices
      x-source: https://easyvoice.ae/api-docs
      parameters:
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Bearer ev_your_api_key
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1VoicesResponse'
      x-evidence:
        kind: documentation
    post:
      operationId: post_api_v1_voices
      tags:
      - Api
      summary: POST /api/v1/voices
      x-source: https://easyvoice.ae/api-docs
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -X POST https://easyvoice.ae/api/v1/voices  -H "Authorization: Bearer ev_your_api_key"  -F "name=My Voice"  -F "consent=true"  -F
          "audio=@sample.wav" Field Type Required Description name string Yes Display name for the cloned voice consent string Yes Must be "true"
          — attests you own/have consent to clone this voice audio file Yes WAV, MP3, MP4, or M4A, up to 10 MB. 10–30 seconds of clear spee'
  /api/v1/voices/{id}:
    delete:
      operationId: delete_api_v1_voices_id
      tags:
      - Api
      summary: Delete a voice clone
      description: DELETE /api/v1/voices/{id}
      x-source: https://easyvoice.ae/api-docs
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Bearer ev_your_api_key
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v1/audio/speech:
    post:
      operationId: post_v1_audio_speech
      tags:
      - Audio
      summary: Generate speech from text. Returns audio file directly.
      description: POST /v1/audio/speech
      x-source: https://easyvoice.ae/api-docs
      parameters:
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Bearer ev_your_api_key
      - name: Content-Type
        in: header
        required: true
        schema:
          type: string
        description: application/json
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1AudioSpeechRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostV1AudioSpeechResponse'
      x-evidence:
        kind: documentation
  /v1/jobs/{id}:
    get:
      operationId: get_v1_jobs_id
      tags:
      - Jobs
      summary: Poll job status
      description: GET /v1/jobs/{id}
      x-source: https://easyvoice.ae/api-docs
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Bearer ev_your_api_key
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1JobsIdResponse'
      x-evidence:
        kind: documentation
  /v1/voices:
    get:
      operationId: get_v1_voices
      tags:
      - Voices
      summary: Voice not found. Check the voice ID against GET /v1/voices or the voice browser at /voices.
      description: GET /v1/voices
      x-source: https://easyvoice.ae/api-docs
      parameters:
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Bearer ev_your_api_key
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1VoicesResponse'
      x-evidence:
        kind: documentation
components:
  schemas:
    PostApiV1Request:
      type: object
      properties:
        model:
          type: string
        voice:
          type: string
        input:
          type: string
    PostApiV1AudioSpeechRequest:
      type: object
      properties:
        voice:
          type: string
        input:
          type: string
    PostApiV1JobsRequest:
      type: object
      properties:
        type:
          type: string
        input:
          type: string
        voice:
          type: string
        callback_url:
          type: string
    GetApiV1JobsIdResponse:
      type: object
      properties:
        id:
          type: string
          description: Job identifier
        status:
          type: string
          description: Job status
        audio_url:
          type: string
          description: URL to the generated audio (when completed)
        created_at:
          type: integer
          description: Timestamp of creation
        completed_at:
          type: integer
          description: Timestamp of completion
    GetApiV1VoicesResponse:
      type: object
      properties:
        voices:
          type: array
          description: Array of cloned voice objects with id, name, status, createdAt.
    PostV1AudioSpeechRequest:
      type: object
      properties:
        model:
          type: string
          description: 'Any string is accepted and ignored (default: "kokoro-82m")'
        input:
          type: string
          description: Text to convert.
        voice:
          type: string
          description: 'Voice ID (default: af_aoede), or one of the six OpenAI voice names.'
        response_format:
          type: string
          description: '"mp3", "wav" or "pcm" (default: mp3).'
        speed:
          type: number
          description: '0.5 to 2.0 (default: 1.0).'
        ev_pitch:
          type: number
          description: Pitch shift in semitones, -4 to +4.
        ev_volume_db:
          type: number
          description: Output gain in dB, -6 to +6.
        ev_tone:
          type: string
          description: '"neutral", "warm", "bright", or "bass".'
        ev_timestamps:
          type: boolean
          description: If true, returns JSON envelope with audio base64.
      required:
      - input
    PostV1AudioSpeechResponse:
      type: object
      properties:
        audio:
          type: string
          description: Base64‑encoded audio when ev_timestamps is true.
        format:
          type: string
          description: Audio format.
        words:
          type: string
          description: Word timings (currently null).
        timestamps_available:
          type: boolean
          description: Always false currently.
    GetV1JobsIdResponse:
      type: object
      properties:
        id:
          type: string
          description: Job identifier
        status:
          type: string
          description: Job status
        audio_url:
          type: string
          description: URL to the generated audio (when completed)
        created_at:
          type: integer
          description: Timestamp of creation
        completed_at:
          type: integer
          description: Timestamp of completion
    GetV1VoicesResponse:
      type: object
      properties:
        voices:
          type: array
          description: List of voice objects with id, name, status, createdAt.
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Api
- name: Audio
- name: Jobs
- name: Voices