Troubleshooting
If requests fail, run zero doctor check-connector --env-name PIKA_TOKEN or zero doctor check-connector --url https://srkibaanghvsriahb.pika.art/developer/balance --method GET
Base URL
https://srkibaanghvsriahb.pika.art
Authentication
All requests use a DevKey header:
Authorization: DevKey $PIKA_TOKEN
Core APIs
Check Balance
curl -s "https://srkibaanghvsriahb.pika.art/developer/balance" \
-H "Authorization: DevKey $PIKA_TOKEN" | jq '.data // .'
Returns { "balance": <int> }. Minimum 100 credits required before joining a meeting.
Join a Meeting
curl -s -X POST "https://srkibaanghvsriahb.pika.art/proxy/realtime/meeting-session" \
-H "Authorization: DevKey $PIKA_TOKEN" \
-H "X-Skill-Name: pikastream" \
-F "meet_url=<google-meet-or-zoom-url>" \
-F "bot_name=<display-name>" \
-F "platform=<google_meet|zoom>" \
-F "image=@<path-to-avatar.png>" \
-F "voice_id=<voice-id>" \
-F "system_prompt=<context for the bot>" | jq '.'
| Field | Required | Description |
|---|---|---|
meet_url |
Yes | Google Meet (meet.google.com/...) or Zoom URL |
bot_name |
Yes | Display name shown in the meeting |
platform |
Yes | google_meet or zoom (inferred from URL if omitted) |
image |
Yes | Avatar image file (portrait/headshot, PNG or JPG, > 1 KB) |
voice_id |
No | Voice clone ID. Default: English_radiant_girl |
system_prompt |
No | Background context for the bot's in-meeting conversation |
meeting_password |
No | Meeting password if required |
Returns: { "session_id": "...", "platform": "...", "status": "created" }
Poll Session Status
curl -s "https://srkibaanghvsriahb.pika.art/proxy/realtime/session/<session_id>" \
-H "Authorization: DevKey $PIKA_TOKEN" | jq '{status, video_worker_connected, meeting_bot_connected}'
status |
Meaning |
|---|---|
created |
Bot is starting up |
ready |
Bot is live in the meeting |
error |
Something went wrong |
closed |
Session ended |
Poll every 2 seconds. The bot is ready when status == "ready" or both video_worker_connected and meeting_bot_connected are true. Default timeout: 90s.
Leave a Meeting
curl -s -X DELETE "https://srkibaanghvsriahb.pika.art/proxy/realtime/session/<session_id>" \
-H "Authorization: DevKey $PIKA_TOKEN" | jq '.'
Returns: { "session_id": "...", "closed": true }
Billing stops when this call completes.
List Topup Products
curl -s "https://srkibaanghvsriahb.pika.art/developer/topup/products" \
-H "Authorization: DevKey $PIKA_TOKEN" | jq '.data // . | .products[]? | {name, numCredits, productId}'
Create Topup Checkout
Write to /tmp/pika_topup.json:
{
"product_id": "<productId>"
}
curl -s -X POST "https://srkibaanghvsriahb.pika.art/developer/topup" \
-H "Authorization: DevKey $PIKA_TOKEN" \
-H "Content-Type: application/json" \
-d @/tmp/pika_topup.json | jq '.data // . | {checkout_url}'
Returns a checkout_url. Share with the user to complete payment, then poll /developer/balance until balance ≥ 100.
Guidelines
- Check balance first: Always run the balance check before joining. Minimum 100 credits required.
- Avatar is mandatory: The bot cannot join without an image file > 1 KB.
- Platform inference:
meet.google.com→google_meet;zoom.usorzoom.com→zoom. - Voice clones expire: Cloned voices are deleted after 7 days of non-use.
- Pricing: $0.275/min, billed from join until
DELETEis called. - Post-meeting notes: After leaving, the API may provide a meeting notes URL in the session response.