KikiVoice APIkikivoice.ai ↗
Access KikiVoice.ai data via 3 endpoints: browse 910+ voices with metadata, query TTS model capabilities, and retrieve structured FAQ content.
What is the KikiVoice API?
The KikiVoice.ai API provides structured access to the platform's voice library, TTS model capabilities, and help content across 3 endpoints. The get_voice_listings endpoint alone surfaces up to 910 voices — split across LLM (600+) and Standard (310+) libraries — each carrying fields like gender, style tags, category, and a sample audio URL. The get_model_capabilities endpoint exposes per-model language support, emotion controls, region options, and character limits for all three Kiki models.
curl -X GET 'https://api.parse.bot/scraper/0b604dcc-0339-45ff-901e-8c4d22d68549/get_voice_listings?lang=en&library_type=llm' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace kikivoice-ai-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: KikiVoice AI SDK — explore voices, models, and FAQ content."""
from parse_apis.kikivoice_ai_api import KikiVoice, LibraryType, ParseError
client = KikiVoice()
# List available TTS models and inspect their capabilities.
for model in client.models.list(limit=5):
print(model.name, f"({model.model_id})", "-", model.description)
print(f" Credit rate: {model.credit_rate_display}, max text: {model.max_text_length} chars")
if model.supports_emotion and model.emotions:
emotion_names = [e.name for e in model.emotions[:3]]
print(f" Sample emotions: {', '.join(emotion_names)}")
# Browse the LLM voice library filtered to English.
library = client.libraries.list(library_type=LibraryType.LLM, lang="en", limit=1).first()
if library is not None:
print(f"\n{library.display_name}: {library.description}")
print(f" Categories: {len(library.categories)}")
# Show a few voices from this library
for voice in library.voices[:3]:
tags = ", ".join(voice.style_tags) if voice.style_tags else "none"
print(f" {voice.display_name} ({voice.gender}) - tags: {tags}")
# Retrieve FAQ content for a specific category.
try:
faq = client.faq_categories.list(category="getting_started", limit=1).first()
except ParseError as e:
print(f"Could not fetch FAQ: {e.code}")
faq = None
if faq is not None:
print(f"\nFAQ: {faq.category_name} ({faq.question_count} questions)")
for q in faq.questions[:2]:
print(f" Q: {q.question}")
print(f" A: {q.answer[:100]}...")
print("\nexercised: models.list / libraries.list / faq_categories.list")
Retrieve voice listings from the KikiVoice voice library. Returns up to 910 voices across LLM (600+) and Standard (310+) libraries. Each voice includes metadata such as name, description, gender, style tags, category, and sample audio URL. Optionally filter by library type and/or category. One upstream request per call; no pagination needed as the API returns all voices in a single response.
| Param | Type | Description |
|---|---|---|
| lang | string | Language code for localized voice names and descriptions (e.g. 'en', 'zh', 'ja'). |
| category | string | Filter voices by category_id (e.g. 'documentary_narration', 'podcast_hosting'). Omitting returns all categories. Category IDs are returned in the categories array of each library. |
| library_type | string | Filter by voice library type. When omitted or set to 'all', returns both libraries. |
{
"type": "object",
"fields": {
"libraries": "array of library objects, each containing library_type, display_name, description, categories array, and voices array",
"voice_counts": "object with total, llm, and standard voice counts"
},
"sample": {
"data": {
"libraries": [
{
"voices": [
{
"gender": "male",
"status": "active",
"voice_id": "llm_vd_tpl_0001_magnetic_male_narrator",
"avatar_url": "/static/cdn/kikiavatar/llm/friendly_sticker/male/llm_sticker_male_0318_128.png",
"style_tags": [
"male",
"deep",
"calm",
"professional",
"slow",
"authoritative"
],
"voice_code": "L001",
"category_id": "documentary_narration",
"description": "A mature male voice with a deep, resonant timbre, delivering information with calm objectivity, perfect for historical documentaries.",
"display_name": "Magnetic Male Narrator",
"category_name": "Documentary Narration",
"language_hint": "en",
"is_recommended": true,
"sample_audio_url": "https://voice-library.kikivoice-file.com/samples/llm_vd_tpl_0001_magnetic_male_narrator.wav",
"language_display_name": "English"
}
],
"categories": [
{
"local_name": "Documentary Narration",
"sort_order": 10,
"category_id": "documentary_narration",
"voice_count": 50,
"is_available": true,
"category_icon": "lucide:film",
"category_name": "Documentary Narration"
}
],
"description": "Exclusive AI voices generated from KikiVoice voice design templates.",
"display_name": "AI Voice Library",
"library_type": "llm"
}
],
"voice_counts": {
"llm": 600,
"total": 910,
"standard": 310
}
},
"status": "success"
}
}About the KikiVoice API
Voice Library Data
get_voice_listings returns a libraries array where each entry contains a library_type, display_name, description, a categories array, and a voices array. Every voice object includes metadata such as name, description, gender, style tags, category, and a sample audio URL. Responses can be narrowed using the library_type parameter (llm, standard, or all) and a category parameter accepting IDs like documentary_narration or podcast_hosting. A lang parameter controls the locale of returned names and descriptions (e.g. en, zh, ja). The top-level voice_counts object reports total, LLM, and standard counts so you can verify filter results without counting array items.
TTS Model Capabilities
get_model_capabilities requires no parameters and returns a models array covering Kiki Core, Kiki Pro, and Kiki Multilingual. Each model object exposes model_id, name, description, supported_languages, regions, emotions, credit_rate, and limit. A companion model_text_limits map gives the maximum character count per model ID. Two top-level fields — standard_credit_rate and standard_max_text_length — cover the Standard voice library separately, making it straightforward to compare generation constraints across all voice types.
FAQ Content
get_faq returns structured help content organized into categories including Getting Started, Voice Quality, Voice Models, Features, Privacy, 3-Step Process, Use Cases, and Troubleshooting. Each category object carries a category_id, category_name, question_count, and a questions array with full Q&A text. The optional category parameter accepts either a category ID or name to return a single category's content. A total_categories count is included at the response root. This endpoint is useful for building help widgets, onboarding flows, or documentation mirrors without manually maintaining FAQ copy.
The KikiVoice API is a managed, monitored endpoint for kikivoice.ai — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when kikivoice.ai changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official kikivoice.ai API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a voice browser UI that filters the 910+ voice catalog by gender, style tag, and category using
get_voice_listings - Compare emotion and language support across Kiki Core, Kiki Pro, and Kiki Multilingual before choosing a model for a multilingual TTS pipeline
- Populate a voice recommendation engine using sample audio URLs and style tags from the voice metadata
- Generate localized voice selection interfaces by passing
langcodes likezhorjatoget_voice_listings - Display per-model character limits and credit rates in a pricing calculator using fields from
get_model_capabilities - Mirror KikiVoice FAQ content into an in-app help center, filtered to relevant categories like
getting_startedortroubleshooting - Audit supported regional accents and emotion options per model to validate fit for a specific voiceover use case
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does KikiVoice.ai offer an official developer API?+
What does `get_voice_listings` return and how can I filter it?+
get_voice_listings returns a libraries array containing voice objects with fields for name, description, gender, style tags, category, and a sample audio URL, plus a voice_counts summary. You can filter by library_type (llm, standard, or all), by category using IDs like documentary_narration, and by lang to localize the returned text fields.