# CreoHub API Base URL: https://api.creohub.ai/v1 CreoHub API is a prepaid generation queue for video, image, avatar, upscale and speech models. One key, one account balance shared with the CreoHub studio, the price is fixed before a job starts. ## Request format POST https://api.creohub.ai/v1/queue/{model_id} Authorization: Key Content-Type: application/json The body is the model's input schema: prompt, image_url, video_url, duration, resolution, aspect_ratio, generate_audio, num_images and so on. Use the model id exactly as listed in the catalog below. Unknown ids return 400 unknown_model. Text models use POST https://api.creohub.ai/v1/chat/completions, not the queue. Body: {"model":"openai/gpt-4.1","messages":[{"role":"user","content":"…"}],"max_tokens":400} A missing max_tokens reserves 4096 completion tokens, and that same limit is applied to the reply. The reservation is replaced by the actual token charge and is never higher than the reservation. stream:true answers as text/event-stream. POST https://api.creohub.ai/v1/estimate with input.input_tokens and input.output_tokens prices a text call without running it. Optional: Idempotency-Key header. The same key with the same body replays the original response; a different body returns 409. Optional: webhook_url in the body or as a query parameter. The URL must be public. CreoHub POSTs the final request object there once. Treat it as a notification and confirm through response_url with your key. 202 response: {"status":"IN_QUEUE","request_id":"…","status_url":"https://api.creohub.ai/v1/requests/{id}/status","response_url":"https://api.creohub.ai/v1/requests/{id}/response","cancel_url":"https://api.creohub.ai/v1/requests/{id}/cancel","model_id":"…","quoted_usd_micro":"…"} Poll GET status_url until status is COMPLETED (other values: IN_QUEUE, IN_PROGRESS, FAILED, CANCELLED). Each status GET refreshes the live queue state. Then GET response_url. The body is the model output. Media fields hold signed CreoHub URLs: https://api.creohub.ai/v1/requests/{id}/output/{index}?exp=…&sig=… Signed URLs are reissued on every response read. Download promptly. A single request allows 200 full downloads; Range requests do not count. After the cap the URL returns 429 download_cap. Cancel: POST or PUT cancel_url while the status is IN_QUEUE. A job already IN_PROGRESS cannot be cancelled. Short models can use POST https://api.creohub.ai/v1/run/{model_id}: the call waits up to 90 seconds and returns the result, or 202 if still running. GET https://api.creohub.ai/v1/requests lists recent jobs for the key. ## Input files POST https://api.creohub.ai/v1/files with the raw bytes and the correct Content-Type. Response: {"file_id":"chfile_…"}. Put the file_id in image_url, video_url, audio_url or any URL field of the model input. ## Pricing and billing GET https://api.creohub.ai/v1/models is the live price list. Prices are per second, per image, per megapixel or per 1M tokens and already include everything the caller pays. POST https://api.creohub.ai/v1/estimate with {"model_id","input"} returns the exact price for a request without starting it. On submit the estimated amount is reserved on the account. After the result the actual amount is charged, never above the estimate. If the generation fails, the reservation is released and nothing is charged. Send duration and num_images explicitly. A missing duration or num_images uses the model's default_units from the catalog, not the maximum. Catalog field omitted_units shows that default. Send resolution when the model prices tiers differently (see resolutions in the catalog). Seedance reference-to-video with video references: pass input_duration_sec so the estimate matches the final charge. The account currency may be RUB. The FX rate is fixed at reservation time; estimate returns price_rub_micro for RUB accounts. ## Errors 401 unauthorized — missing or revoked key 402 insufficient_balance — top up the balance at https://creohub.ai/developers/billing 402 key_limit_reached — the key's monthly spend limit is reached; raise it in the cabinet or use another key 400 unknown_model | unpriceable | bad_webhook_url | bad_messages | use_chat_completions | validation_error | unknown_file 409 idempotency_conflict | request_not_ready | not_cancellable 429 rate_limited — writes per key per minute. Status polls do not count. 429 too_many_in_flight — too many open jobs for the key 429 download_cap — this output was downloaded too many times 503 capacity_unavailable — temporary, retry with backoff 502 submit_failed — nothing was charged 410 expired — the signed output URL is no longer valid ## References OpenAPI: https://api.creohub.ai/v1/openapi.json Catalog JSON: https://api.creohub.ai/v1/models Cabinet and keys: https://creohub.ai/developers ## Catalog Price per unit includes everything the caller pays. max = the longest duration or the largest count one request may ask for. - veo3.1 | video | $0.6000/sec | max 8 sec - veo3.1/image-to-video | video | $0.6000/sec | max 8 sec - veo3.1/fast | video | $0.2250/sec | max 8 sec - veo3.1/fast/image-to-video | video | $0.2250/sec | max 8 sec - veo3.1/lite | video | $0.0750/sec | max 8 sec - veo3.1/lite/image-to-video | video | $0.0750/sec | max 8 sec - veo3.1/reference-to-video | video | $0.6000/sec | max 8 sec - veo3.1/fast/reference-to-video | video | $0.2250/sec | max 8 sec - kling-video/v3/pro/text-to-video | video | $0.2100/sec | max 15 sec - kling-video/v3/pro/image-to-video | video | $0.2100/sec | max 15 sec - kling-video/v3/standard/text-to-video | video | $0.2100/sec | max 15 sec - kling-video/v3/standard/image-to-video | video | $0.2100/sec | max 15 sec - kling-video/v3/4k/text-to-video | video | $0.6300/sec | max 15 sec - kling-video/v3/4k/image-to-video | video | $0.6300/sec | max 15 sec - kling-video/v2.6/pro/text-to-video | video | $0.1050/sec | max 10 sec - kling-video/v2.6/pro/image-to-video | video | $0.1050/sec | max 10 sec - kling-video/v2.5-turbo/pro/text-to-video | video | $0.1050/sec | max 10 sec - kling-video/v2.5-turbo/pro/image-to-video | video | $0.1050/sec | max 10 sec - kling-video/o3/pro/text-to-video | video | $0.2100/sec | max 15 sec - kling-video/o3/pro/image-to-video | video | $0.2100/sec | max 15 sec - kling-video/v3/pro/motion-control | video | $0.2520/sec | max 30 sec - kling-video/v2.6/standard/motion-control | video | $0.1050/sec | max 30 sec - kling-video/o1/standard/video-to-video/edit | video | $0.1890/sec | max 30 sec - kling-video/o1/video-to-video/edit | video | $0.2520/sec | max 30 sec - kling-video/o3/pro/video-to-video/edit | video | $0.2100/sec | max 30 sec - kling-video/o3/4k/video-to-video/edit | video | $0.6300/sec | max 30 sec - luma-dream-machine/ray-2/reframe | video | $0.3000/sec | max 30 sec - bytedance/seedance-2.0/text-to-video | video | $1.02/sec | max 15 sec resolutions=480p|720p|1080p|4k - bytedance/seedance-2.0/image-to-video | video | $1.02/sec | max 15 sec resolutions=480p|720p|1080p|4k - bytedance/seedance-2.0/fast/text-to-video | video | $0.3629/sec | max 15 sec resolutions=480p|720p|1080p - bytedance/seedance-2.0/fast/image-to-video | video | $0.3629/sec | max 15 sec resolutions=480p|720p|1080p - bytedance/seedance-2.0/reference-to-video | video | $1.02/sec | max 15 sec resolutions=480p|720p|1080p|4k - bytedance/seedance-2.5/text-to-video | video | $0.6934/sec | max 30 sec resolutions=480p|720p|1080p - bytedance/seedance-2.5/image-to-video | video | $0.6934/sec | max 30 sec resolutions=480p|720p|1080p - bytedance/seedance-2.5/reference-to-video | video | $0.6934/sec | max 30 sec resolutions=480p|720p|1080p - sora-2/text-to-video | video | $0.1500/sec | max 20 sec - sora-2/image-to-video | video | $0.1500/sec | max 20 sec - sora-2/text-to-video/pro | video | $0.4500/sec | max 20 sec resolutions=720p|1080p - sora-2/image-to-video/pro | video | $0.4500/sec | max 20 sec resolutions=720p|1080p - wan/v2.7/text-to-video | video | $0.1500/sec | max 15 sec - wan/v2.7/image-to-video | video | $0.1500/sec | max 15 sec - alibaba/wan-3.0-prime/text-to-video | video | $0.2100/sec | max 30 sec resolutions=480p|720p|1080p - alibaba/wan-3.0-prime/image-to-video | video | $0.2100/sec | max 30 sec resolutions=480p|720p|1080p - alibaba/happy-horse/text-to-video | video | $0.4200/sec | max 15 sec resolutions=720p|1080p - alibaba/happy-horse/image-to-video | video | $0.4200/sec | max 15 sec resolutions=720p|1080p - alibaba/happy-horse/v1.1/text-to-video | video | $0.2700/sec | max 15 sec resolutions=720p|1080p - alibaba/happy-horse/v1.1/image-to-video | video | $0.2700/sec | max 15 sec resolutions=720p|1080p - blackforestlabs/flux-3/text-to-video | video | $0.2550/sec | max 20 sec resolutions=720p|1080p - blackforestlabs/flux-3/image-to-video | video | $0.2550/sec | max 20 sec resolutions=720p|1080p - xai/grok-imagine-video/text-to-video | video | $0.1050/sec | max 15 sec resolutions=480p|720p - xai/grok-imagine-video/image-to-video | video | $0.1050/sec | max 15 sec resolutions=480p|720p - xai/grok-imagine-video/v1.5/text-to-video | video | $0.2100/sec | max 15 sec resolutions=480p|720p|1080p - xai/grok-imagine-video/v1.5/image-to-video | video | $0.2250/sec | max 15 sec resolutions=480p|720p|1080p - xai/grok-imagine-video/v1.5/reference-to-video | video | $0.2100/sec | max 15 sec resolutions=480p|720p|1080p - nano-banana-pro | image | $0.2250/image | max 4 image - nano-banana-2 | image | $0.1200/image | max 4 image resolutions=0.5k|1k|2k|4k - openai/gpt-image-2 | image | $0.0795/image | max 4 image - flux-2-pro | image | $0.0450/MP | max 16 MP - bytedance/seedream/v5/lite/edit | image | $0.0525/image | max 4 image - bytedance/seedream/v5/lite/text-to-image | image | $0.0525/image | max 4 image - bytedance/seedream/v5/pro/text-to-image | image | $0.2025/image | max 4 image resolutions=480p|720p|1080p|4k - recraft/v4/pro/text-to-image | image | $0.3750/image | max 4 image - recraft/v4/text-to-vector | image | $0.1200/image | max 4 image - hidream-o1-image | image | $0.0150/MP | max 16 MP - qwen-image | image | $0.0300/MP | max 16 MP - qwen-image-edit | image | $0.0450/MP | max 16 MP - xai/grok-imagine-image/quality/text-to-image | image | $0.0750/image | max 4 image - birefnet | image | $0.0300/image | max 1 image - topaz/upscale/image | upscale | $0.1200/image | max 4 image - topaz/upscale/image/generative | upscale | $0.7200/image | max 4 image - topaz/upscale/video | upscale | $0.1200/sec | max 60 sec - topaz/upscale/video/generative | upscale | $0.3900/sec | max 60 sec - kling-video/ai-avatar/v2/standard | avatar | $0.0843/sec | max 30 sec - bytedance/omnihuman/v1.5 | avatar | $0.0843/sec | max 30 sec - latentsync | avatar | $0.0075/sec | max 60 sec - sync-lipsync/v2 | avatar | $0.0750/sec | max 60 sec - sync-lipsync/v2/pro | avatar | $0.1250/sec | max 60 sec - sync-lipsync/v3 | avatar | $0.1999/sec | max 60 sec - whisper | audio | $0.0019/sec | max 3600 sec - elevenlabs/speech-to-text/scribe-v2 | audio | $0.0002/sec | max 3600 sec - demucs | audio | $0.0010/sec | max 3600 sec - openai/gpt-6-astra | text | $30.00/1M input, $75.00/1M output | context 1050000 - openai/gpt-6-astra-pro | text | $30.00/1M input, $75.00/1M output | context 1050000 - openai/gpt-5.4 | text | $3.75/1M input, $22.50/1M output | context 256000 - anthropic/claude-sonnet-4.6 | text | $4.50/1M input, $22.50/1M output | context 200000 - anthropic/claude-opus-4.6 | text | $7.50/1M input, $37.50/1M output | context 200000 - google/gemini-2.5-pro | text | $1.88/1M input, $15.00/1M output | context 1000000 - openai/gpt-4.1 | text | $3.00/1M input, $12.00/1M output | context 1047576 - google/gemini-2.5-flash | text | $0.4500/1M input, $3.75/1M output | context 1000000 - deepseek/deepseek-chat-v3-0324 | text | $0.3750/1M input, $1.50/1M output | context 128000 - meta-llama/llama-4-maverick | text | $0.3000/1M input, $1.20/1M output | context 128000