PindoDocs
Web AppWeb

API Reference

All Voice AI endpoints. Each is available with a /public suffix (rate-limited, no token) or authenticated for production.

Speech-to-Text

POST/ai/stt/{lang}
# Public access (rate-limited, no token)
curl -X POST "https://api.pindo.io/ai/stt/rw/public" \
     -F "audio=@/path/to/your/file.mp3"

# Authenticated access
curl -X POST "https://api.pindo.io/ai/stt/rw" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -F "audio=@/path/to/your/file.mp3"
{
  "text": "...",
  "uploaded_audio_url": "path/file_name.mp3"
}

Text-to-Speech

POST/ai/tts/{lang}
# Public access
curl -X POST "https://api.pindo.io/ai/tts/rw/public" \
     -H "Content-Type: application/json" \
     -d '{"text": "Muraho neza!", "speech_rate": 1.0}'

# Authenticated access
curl -X POST "https://api.pindo.io/ai/tts/rw" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -d '{"text": "Muraho neza!", "lang": "rw", "speech_rate": 1.0}'
{
  "generated_audio_url": "path/file_name.wav"
}

Named Entity Recognition

POST/ai/ner/{lang}
# Public access
curl -X POST "https://api.pindo.io/ai/ner/rw/public" \
     -H "Content-Type: application/json" \
     -d '{
       "text": "Yohani ukorera minisante atuye i musanze.",
       "lang": "rw",
       "labels": ["person", "location", "organisation"]
     }'

# Authenticated access
curl -X POST "https://api.pindo.io/ai/ner/rw" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -d '{ "text": "Yohani ukorera minisante atuye i musanze.",
           "lang": "rw",
           "labels": ["person", "location", "organisation"] }'
{
  "person": ["Yohani"],
  "location": ["musanze"],
  "organisation": ["minisante"]
}