RPD Create API Documentation
Integrate AI content generation into your applications. Generate images, videos, avatars, and audio through a single unified API.
Getting Started
The RPD Create API lets you programmatically generate AI content using 50+ cataloged models across current provider integrations, including Kling, Google Veo, HeyGen, OpenAI Images, Stability AI, and more. All through a single unified API.
To get started, sign up for an account, generate an API key from Settings, and make your first generation request. Every request returns a generation ID you can poll for status and output URLs.
Authentication
The API supports two authentication methods. Use API keys for server-to-server integrations and Bearer tokens for browser-based applications.
Quick Start
Generate your first AI video in three steps: create a generation, poll for status, then download the output.
Step 1 — Create a generation
curl -X POST https://api.rpdcreate.com/v1/generations \
-H "X-API-KEY: rpd_sk_your_key" \
-H "Content-Type: application/json" \
-d '{
"type": "text2video",
"provider": "kling",
"model": "kling-3.0",
"prompt": "A golden retriever running through a sunflower field, cinematic lighting",
"params": {
"duration": 5,
"aspectRatio": "16:9"
}
}'{
"success": true,
"data": {
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"status": "queued",
"type": "text2video",
"provider": "kling",
"model": "kling-3.0",
"creditsCost": 10,
"createdAt": "2026-03-20T12:00:00Z"
}
}Step 2 — Poll for status
curl https://api.rpdcreate.com/v1/generations/a1b2c3d4-5678-90ab-cdef-1234567890ab \ -H "X-API-KEY: rpd_sk_your_key"
Step 3 — Download output
When status is "completed", the outputUrls array contains download links for your generated content. URLs are valid for 24 hours.
Endpoints Overview
All API endpoints are prefixed with the base URL https://api.rpdcreate.com. The full OpenAPI spec is available at /openapi.json.
Generations
Generations are the core resource. Create a generation to produce AI content, then poll for status until completion. Supported types include text2image, image2image, text2video, image2video, video2video, avatar, animation, upscale, extend, effect, audio, and motion_transfer.
Create Generation
POST /v1/generations
Content-Type: application/json
{
"type": "text2image", // Required — generation type
"provider": "stability", // Required — provider name
"model": "sd3.5-turbo", // Required — model ID
"prompt": "...", // Prompt text
"negativePrompt": "...", // Negative prompt (optional)
"inputImageUrl": "...", // For image2image, image2video (optional)
"inputVideoUrl": "...", // For video2video (optional)
"params": { // Generation parameters (optional)
"width": 1024,
"height": 1024,
"duration": 5,
"aspectRatio": "16:9",
"style": "cinematic",
"seed": 42
}
}Generation Lifecycle
If something goes wrong, the status becomes failed and credits are automatically refunded. You can also cancel queued or processing generations.
Models
Browse available models with GET /v1/models. Each model includes its provider, supported types, quality tier, speed rating, and credit cost. Use the recommend endpoint to get AI-powered suggestions based on your prompt.
GET /v1/models?type=text2video // Response includes: // - id, provider, displayName, description // - supportedTypes, speed, quality // - creditCostPerSecond, creditCostPerImage // - supportsAudio
Credits
Every generation costs credits. Check your balance, estimate costs before generating, and purchase credit packs or upgrade your plan for more. Failed generations are always refunded automatically.
// Check balance
GET /v1/credits/balance
// Estimate cost before generating
POST /v1/credits/estimate
{ "type": "text2video", "provider": "kling", "model": "kling-3.0", "duration": 5 }
// Response: { "credits": 10, "breakdown": { ... } }Files
Upload input files (images, videos, audio) for use in generations. The upload flow uses presigned URLs: request a URL, upload the file directly to storage, then confirm.
// 1. Get upload URL
POST /v1/files/upload-url
{ "filename": "input.png", "contentType": "image/png" }
// 2. Upload file to the returned URL (PUT request)
// 3. Confirm upload
POST /v1/files/confirm
{ "fileId": "..." }SDKs
Official SDKs are coming soon. In the meantime, you can use the REST API directly with any HTTP client. The API follows standard REST conventions and returns JSON responses.
Rate Limits
Rate limits are applied per API key / user session. Generation endpoints have stricter limits to prevent abuse.
When rate limited, the API returns 429 Too Many Requests. The Retry-After header indicates when you can retry.
Error Codes
All errors follow a consistent format with a machine-readable code and human-readable message.
{
"success": false,
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "You need 10 credits but only have 3.",
"details": null
}
}Webhooks
Instead of polling, you can register webhook endpoints to receive real-time notifications when generations complete or fail. Each webhook delivery includes an HMAC signature for verification.
Supported Events
generation.completed— Generation finished successfully with output URLsgeneration.failed— Generation failed (credits auto-refunded)credits.low— Credit balance dropped below threshold
Webhook Payload
{
"event": "generation.completed",
"timestamp": "2026-03-20T12:05:00Z",
"data": {
"id": "a1b2c3d4-...",
"status": "completed",
"outputUrls": ["https://..."],
"creditsCost": 10
}
}Signature Verification
Every webhook delivery includes an X-Webhook-Signature header. Compute HMAC-SHA256 of the raw request body using your webhook secret and compare.
Changelog
- Initial API release
- 50+ cataloged models across 5 provider integrations
- Generations, models, credits, files, prompts, explore, social, collections, templates, notifications, billing, webhooks
- Side-by-side model comparison
- Batch generation
- AI-powered prompt enhancement