Text to speech for agents
Text to speech for agents: send text (up to 2,000 chars) in English, Spanish, French, Chinese, Japanese or Korean and get a WAV voice clip (base64 in JSON, or raw audio/wav with response_format=wav). $0.001 USDC per started 1,000 characters on Base; failures are not charged. Accepts dTelecom-style text/lang_code fields. MeloTTS. By DevX.
Not tested: has real-world effectsour last check, 2026-10-24
0 of 0checks answered this week
n/amedian answer time
$0.001listed price per call
n/aprice it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://voice.madebydevx.com/v1/tts
| Category | Image and media |
|---|---|
| Provider host | voice.madebydevx.com |
| Networks | eip155:137, eip155:196, eip155:42161, eip155:43114, eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 4 from 2 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"body": {
"lang": "en",
"text": "Hello from DevX Voice."
},
"bodyType": "json",
"discoverable": true,
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"lang": {
"description": "Language (default en). Aliases: language, lang_code (dTelecom/Kokoro letters a, b, e, f, j, z)",
"enum": [
"en",
"es",
"fr",
"zh",
"ja",
"ko"
],
"type": "string"
},
"lang_code": {
"type": "string"
},
"language": {
"type": "string"
},
"requestKey": {
"description": "Optional idempotency key: the same payer + requestKey + input within 7 days returns the stored result without a second charge.",
"maxLength": 128,
"minLength": 8,
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$",
"type": "string"
},
"response_format": {
"description": "json (default): base64 WAV inside JSON; wav: raw audio/wav body",
"enum": [
"json",
"wav"
],
"type": "string"
},
"speed": {
"enum": [
1
],
"type": "number"
},
"text": {
"description": "Text to speak (max 2,000 characters)",
"maxLength": 2000,
"minLength": 1,
"type": "string"
},
"voice": {
"enum": [
"default"
],
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"bodyType": {
"enum": [
"json"
],
"type": "string"
},
"discoverable": {
"type": "boolean"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"operation_id": {
"type": "string"
},
"payment": {
"type": "object"
},
"result": {
"type": "object"
},
"status": {
"type": "string"
}
},
"required": [
"operation_id",
"status",
"result"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}