Documentation
A quickstart that gets audio out of the API in two calls, the codes every endpoint speaks, the errors worth handling, and the governance terms — which are on this page rather than in a policy document because they change what your integration is allowed to do.
Quickstart
Translate a phrase and speak it, in two calls. Everything else in the API is a variation on this shape.
import { Pison } from "@pison/sdk"; const pison = new Pison({ apiKey: process.env.PISON_API_KEY }); // 1 — translateconst { output } = await pison.translate({ text: "Welcome to our community", source: "en", target: "yo",}); // 2 — speak itconst audio = await pison.speech.synthesize({ text: output, voice: "yor-lagos-adunni",}); await audio.writeTo("welcome.mp3");Set PISON_API_KEY in your environment. Everything the playground does, the API does.
Reference
/v1/translateper 1M charactersTranslate between English and any supported African language, with tone and diacritics preserved rather than normalised away.
/v1/speech/transcribeper hour of audioTranscribe audio with a channel hint. Telephony-channel models are trained on 8 kHz narrowband rather than evaluated on it after the fact.
/v1/speech/synthesizeper 1M charactersGenerate speech from a licensed voice. Tone marks are an input to the model, not something the text front-end strips before it gets there.
/v1/voicesfreeList and filter voices. Every voice carries its consent scope, so a client can refuse to synthesize outside what the speaker granted.
/v1/detectper 1k requestsIdentify language and dialect from text or audio, with code-switching reported rather than collapsed into a single label.
/v1/culturalper 1k requestsRegister, honorifics and address forms for a given language and context. Returns structured fields, and marks generated claims as generated.
/v1/embeddingsper 1M tokensMultilingual embeddings trained on African-language text, so a Yoruba query and its English equivalent land near each other.
/v1/moderationper 1k requestsSafety classification that works in Pidgin and Hausa rather than only in English — the gap that lets abuse through an English-only filter.
Full request and response shapes, with runnable snippets, are on the developers page.
Errors
Two of these are specific to this API and are the ones to write code for: a voice can exist and still refuse a use its speaker did not grant, and a language can be covered for one capability and not another.
400Malformed request
The body names what was wrong and which field.
401Missing or invalid key
Keys are scoped per project and per endpoint.
403 consent_scopeVoice not cleared for this use
The voice exists; its speaker did not grant this purpose. The body lists the scopes that were granted.
404 language_unsupportedLanguage not covered for this endpoint
Coverage varies per capability. The body names which capabilities do cover it.
413Payload too large
Audio over 100MB or text over the per-tier character ceiling.
429Rate limited
Concurrency, not requests per second. Retry-After is always set.
503 model_warmingCold start on a low-traffic language
Retry once after the interval given. Only happens on languages outside the first five.
Governance
Data governance
These are on the documentation rather than in a policy PDF because they change what your integration is permitted to do. Pison Labs is registered at NDPA Ultra-High Level (NDPC UHL-2026-0417) with a designated data protection officer and annual compliance audit returns.
Status
Beta services carry no SLA. Incidents and maintenance windows are announced here and by email to every project owner.
Self-serve to the Business tier. Sales enters where private deployment and a contractual SLA do, and not before.