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"
{
  "code": 200,
  "data": {
    "text": "...", 
    "uploaded_audio_url": "path/file_name.mp3"
  },
  "error": null,
  "object": "stt",
  "status": "success"
}

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}'
{
  "code": 200,
  "data": {
      "generated_audio_url": "path/file_name.wav"  
  },
  "error": null,
  "object": "tts",
  "status": "success"
}

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"] }'
{
  "code": 200,
  "data": {
    "location": [
      "musanze"
    ],
    "organisation": [
      "minisante"
    ],
    "person": [
      "Yohani"
    ]
  },
  "error": null,
  "object": "ner",
  "status": "success"
}