Your creations
Everything generated through the API. Renders take 1–5 minutes; the file link appears here the moment it's ready.
| When | Product | Endpoint | Key | Status | Credits | File |
|---|---|---|---|---|---|---|
| Loading… | ||||||
API keys
A key is shown once, at creation — we store only its hash, so it can't be recovered later. Lost it? Revoke and create another.
| Name | Key | Created | Last used | |
|---|---|---|---|---|
| Loading… | ||||
Credits
API calls draw from the same credit balance as the SquidFace studio.
One video costs 60 credits; prompt enhancement
(/v1/prompt) is free.
Loading plans…
The products
One key reaches all five. Every generation call runs your prompt through Takin first, so a one-line idea becomes a production-ready prompt.
SquidMotion
POST /v1/video
Text → video, up to 60s and 4K. Returns a job id.
60 creditsSquidBeat
POST /v1/music
Text → a full song with vocals, or instrumental. Returns a job id.
25 creditsSquidPic
POST /v1/image
Text → image up to 2K. Returns the URL inline.
8 creditsSquidVolume
POST /v1/voice
Text → speech, any language. Returns the URL inline.
5 creditsTakin
POST /v1/prompt
The prompt engine on its own — preview what the model will receive.
FreeQuickstart
Base URL https://api.squidface.ai · authenticate with
Authorization: Bearer sk_squid_live_…
1 · Generate a video
# Returns a job id immediately — renders take 1-5 min. curl -X POST https://api.squidface.ai/v1/video \ -H "Authorization: Bearer $SQUIDFACE_KEY" \ -H "content-type: application/json" \ -d '{"prompt":"a squid drifting through a neon reef","duration":8}'
2 · Poll until it's done
curl https://api.squidface.ai/v1/video/{id} \ -H "Authorization: Bearer $SQUIDFACE_KEY" {"id":"…","status":"done","url":"https://…/video.mp4"}
Python
import httpx, time h = {"Authorization": f"Bearer {KEY}"} job = httpx.post("https://api.squidface.ai/v1/video", headers=h, json={"prompt": "a squid in a neon reef"}).json() while True: s = httpx.get(f"https://api.squidface.ai/v1/video/{job['id']}", headers=h).json() if s["status"] in ("done", "error"): break time.sleep(20) print(s["url"])
Image, voice and music
# SquidPic — returns the URL inline, no polling. curl -X POST https://api.squidface.ai/v1/image -H "Authorization: Bearer $KEY" \ -H "content-type: application/json" -d '{"prompt":"a neon squid","hd":true}' # SquidVolume — any language, up to 40k characters. curl -X POST https://api.squidface.ai/v1/voice -H "Authorization: Bearer $KEY" \ -H "content-type: application/json" -d '{"text":"Welcome to SquidFace."}' # SquidBeat — a job, like video. Poll /v1/music/{id}. curl -X POST https://api.squidface.ai/v1/music -H "Authorization: Bearer $KEY" \ -H "content-type: application/json" \ -d '{"prompt":"dreamy synthwave for a night drive","instrumental":true}'
Endpoints
| Method | Path | Product | What it does |
|---|---|---|---|
| POST | /v1/video | SquidMotion | Submit → job id |
| GET | /v1/video/{id} | SquidMotion | Poll, get the file URL |
| POST | /v1/music | SquidBeat | Submit → job id |
| GET | /v1/music/{id} | SquidBeat | Poll, get every track |
| POST | /v1/image | SquidPic | Image URL, inline |
| POST | /v1/voice | SquidVolume | Audio URL, inline |
| GET | /v1/voices | SquidVolume | The voice catalogue |
| POST | /v1/prompt | Takin | Expand a prompt — free |
| GET | /v1/models | — | Products your key can reach |
| GET | /v1/me | — | Key identity + balance |
Use it from Claude (MCP)
Add SquidFace to Claude Desktop or Claude Code and just ask for a video —
Claude calls the API itself. Download
squidface_mcp.py, then:
{
"mcpServers": {
"squidface": {
"command": "python",
"args": ["/path/to/squidface_mcp.py"],
"env": { "SQUIDFACE_API_KEY": "sk_squid_live_…" }
}
}
}