Two endpoints, one header.
Authenticate with a bearer key from your dashboard. Everything is multipart form data — no SDK, no client library, nothing to keep updated.
https://nutq.dev/v1/transcribeTranscribe audio
Send a recording, get the text. Long files are split and stitched for you. Dialect is preserved rather than rewritten into Modern Standard Arabic.
filefilerequired- Audio or video, any common format, up to 100 MB and one hour.
languagestring- The language actually spoken in the recording. Defaults to ar. Also accepts en, fr, es, de, it, pt, nl, pl, el, ja, ko, zh, vi. Asking for the wrong one returns fluent-looking nonsense rather than an error, so set it deliberately.
curl -X POST https://nutq.dev/v1/transcribe \ -H "Authorization: Bearer $NUTQ_API_KEY" \ -F "file=@call.mp3"
{
"text": "هلا وغلا فيك، شحالك اليوم؟",
"language": "ar",
"usage": {
"audio_seconds": 13.23,
"cost_usd": 0.00056
},
"model": "nutq-listen-1"
}usage is what this request cost you, not an estimate. model names the engine that served the request, so a response can be traced back to a version.
/v1/speechGenerate speech
Send Arabic text and a reference voice. The model clones the voice from a few seconds of audio and speaks your text in it. Arabic only — Latin script is not pronounced. Returns a WAV; usage travels in the response headers.
textstringrequired- Arabic text, up to 5,000 characters. English input is not supported by the voice model.
referencefilerequired- The voice to clone. Six to ten seconds is the sweet spot; over twenty is rejected.
ref_textstringrequired- What the reference audio says. The model aligns against it.
nfe_stepinteger- Quality against speed, 8–96. Defaults to 32; 64 is noticeably cleaner and about twice as slow.
speedfloat- Playback rate of the generated speech. Defaults to 1.
curl -X POST https://nutq.dev/v1/speech \ -H "Authorization: Bearer $NUTQ_API_KEY" \ -F "text=هلا وغلا فيك، شحالك اليوم؟" \ -F "reference=@voice.wav" \ -F "ref_text=نص التسجيل المرجعي" \ --output speech.wav
HTTP/1.1 200 OK Content-Type: audio/wav X-Nutq-Characters: 57 X-Nutq-Audio-Seconds: 5.672 X-Nutq-Cost-USD: 0.000285 X-Nutq-Model: nutq-speak-1
The body is the audio itself, so usage is returned in headers.
Models
Two of them. Every response names the one that served it, so output can be traced back to a version — and when a model is retired the name keeps working, pointed at its successor.
nutq-listen-1Speech to textGulf and Levantine Arabic at dialect level, plus thirteen other languages. Keeps what was said rather than rewriting it into Modern Standard Arabic.nutq-speak-1Text to speechGulf Arabic, cloned from a few seconds of reference audio. Trained on Emirati and Saudi speech, so the accent is Gulf rather than broadcast MSA.When things fail
Standard HTTP codes, and a message that names the problem. A request that fails is never billed.