Singing Pet API
Singing Pet has a REST API. Song templates and pricing are open to anyone. Anything that touches a person's videos, credits or billing needs a Firebase ID token.
OpenAPI specification
The machine-readable description of the whole API, with a unique operation id, typed parameters and a response schema for every endpoint. Point a client generator or an agent's function-calling loader straight at it.
View the OpenAPI spechttps://singing.pet/openapi.json
Authentication
Send a Firebase Authentication ID token as a bearer token. Signing in with Google or an email link on this site mints one. Endpoints marked public need no header at all.
Endpoints
https://api.singing.pet
| GET | / | getServiceIndex | Public |
| GET | /openapi.json | getOpenApiSpec | Public |
| GET | /health | getHealth | Public |
| GET | /templates | listTemplates | Public |
| GET | /subscription/pricing | getPricing | Public |
| GET | /user/me | getCurrentUser | Token |
| GET | /user/videos | listUserVideos | Token |
| POST | /create-with-template | createVideoFromTemplate | Token |
| POST | /create-with-audio | createVideoFromAudio | Token |
| DELETE | /delete-video | deleteVideo | Token |
| GET | /tts/voices | listVoices | Token |
| POST | /tts | generateSpeech | Token |
| POST | /tiktok/extract-audio | extractTikTokAudio | Token |
| GET | /subscription/status | getSubscriptionStatus | Token |
| POST | /subscription/create-checkout-session | createCheckoutSession | Token |
| POST | /subscription/create-one-time-checkout | createOneTimeCheckout | Token |
| POST | /subscription/create-portal-session | createPortalSession | Token |
| GET | /versions | listApiVersions | Public |
| GET | /v1/templates | listApiTemplates | Token |
| GET | /v1/me | getApiAccount | Token |
| GET | /v1/credits | getApiCredits | Token |
| GET | /v1/videos | listApiVideos | Token |
| POST | /v1/videos | createApiVideo | Token |
| GET | /v1/videos/{id} | getApiVideo | Token |
| DELETE | /v1/videos/{id} | deleteApiVideo | Token |
| POST | /mcp | callMcpServer | Token |
Example request
curl https://api.singing.pet/templates
curl https://api.singing.pet/user/videos?page=1 \
-H "Authorization: Bearer $FIREBASE_ID_TOKEN"Errors
Every failure comes back as JSON. Anything not handled by a specific endpoint uses one envelope with a stable code, a human message and a hint about what to do next.
{
"error": {
"code": "not_found",
"message": "No route matches GET /nope",
"status": 404,
"hint": "Check the path against https://singing.pet/openapi.json.",
"documentation_url": "https://singing.pet/developers"
},
"message": "No route matches GET /nope"
}Rendering is asynchronous
A create call returns as soon as the render is queued. Poll listUserVideos until the status moves from pending to completed or failed, or listen on the websocket at wss://api.singing.pet.
Limits
Audio must be between 2 and 30 seconds and the video is exactly as long as the audio. Text-to-speech takes up to 500 characters. Free accounts get two videos a month; paid plans are unlimited.
Markdown for agents
Every content page on this site serves clean Markdown when you ask for it with an Accept header, following acceptmarkdown.com. The hand-written site index lives at llms.txt.