API Reference
Content Generation API
Generate images, UGC videos, logos, and carousels. Pay per use with credits or crypto (x402).
How It Works
Generate images, logos, carousels, and UGC videos via simple REST API calls. Authenticate with your API key and start generating immediately.
Simple REST API
POST your request, poll for results. That's it.
API Key Auth
Authenticate with x-api-key header. Get your key from the dashboard.
Pay Per Use
Credits-based pricing. No monthly minimums.
Async Generation
Submit → poll status → get result when ready.
The Flow
1. POST /api/public/generate-ugc { productName, productDetails, ... }
→ 200 { runId, accessToken, statusUrl }
2. GET /api/public/status?runId=xxx
→ 200 { status: "completed", result: { videoUrl } }Pricing
| Endpoint | Price | Output |
|---|---|---|
| /generate | $0.05 | 1 AI-generated image |
| /generate-logo | $0.20 | 4 logo variations |
| /generate-carousel | $0.21 | 3-slide carousel ($0.07/slide) |
| /generate-ugc | $2/10s | UGC talking head video (15s=$4, 30s=$6, 60s=$12) |
| /status | Free | Poll generation status + get result |
| /models | Free | List capabilities, pricing, and API schema |
Base URL
https://vibiz.ai/api/publicUnified Endpoint
One endpoint for everything. Pass type to choose what to generate.
/api/v1/generateGenerate Content
Single endpoint for all content types. Set "type" to image, logo, carousel, or ugc.
Parameters
| Parameter | Type | Description |
|---|---|---|
type* | string | Content type to generate.imagelogocarouselugc |
prompt | string | Text prompt (for image type). |
style | string | Image style. Simple presets or creative styles from the ad pipeline.photographycinematicminimalshotsinfographichyperrealisticbranded_ad |
aspectRatio | string= 1:1 | Output aspect ratio.1:19:1616:94:53:4 |
Image Styles
shots — Product photography, no text. Studio-quality.hyperrealistic — Cinematic scenes with real people + headline.infographic — Structured layouts with text, stats, comparisons.branded_ad — Social media ad with logo + headline + hero visual.Example — Hyperrealistic Ad
curl -X POST https://vibiz.ai/api/v1/generate \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"type": "image", "prompt": "Diverse group of athletes celebrating after a race", "style": "hyperrealistic", "aspectRatio": "4:5"}'Example — Product Shot
curl -X POST https://vibiz.ai/api/v1/generate \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"type": "image", "prompt": "Matte black perfume bottle with gold cap on marble surface", "style": "shots", "aspectRatio": "1:1"}'Example — UGC Video
curl -X POST https://vibiz.ai/api/v1/generate \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"type": "ugc", "productName": "Glow Serum", "productDetails": "Visible results in 2 weeks", "gender": "female", "platform": "tiktok", "duration": "15s"}'Response
{
"runId": "run_abc123",
"type": "ugc",
"status": "queued",
"price": "$4.00",
"accessToken": "eyJhbG...",
"statusUrl": "/api/public/status?runId=run_abc123"
}Individual Endpoints
You can also call each endpoint directly. These also support x402 crypto payments.
/api/public/generate$0.05 USDCGenerate Image
Generate a single AI image from a text prompt. Multi-model fallback chain for maximum reliability.
Request Body
| Parameter | Type | Description |
|---|---|---|
prompt* | string | The image description. Max 2000 chars. |
aspectRatio | string= "1:1" | Output aspect ratio.1:12:33:44:59:163:24:35:416:921:9 |
style | string | Visual style preset.photographyillustrationminimalbold_graphiccinematiceditorialabstract |
resolution | string= "2K" | Output resolution.2K4K |
referenceImageUrl | string | URL of a reference image for style guidance. |
brandContext | object | Optional brand context for brand-aware generation. |
brandContext.companyName | string | Company name. |
brandContext.primaryColor | string | Primary brand color (hex). |
brandContext.secondaryColor | string | Secondary brand color (hex). |
brandContext.industry | string | Business industry. |
brandContext.tone | string | Brand tone of voice. |
brandContext.targetAudience | string | Target audience description. |
Example
curl -X POST https://vibiz.ai/api/public/generate \
-H "Content-Type: application/json" \
-d '{
"prompt": "Modern SaaS dashboard with dark theme and neon accents",
"aspectRatio": "16:9",
"style": "photography",
"brandContext": {
"companyName": "Acme Labs",
"primaryColor": "#6366F1"
}
}'Response
{
"runId": "run_abc123",
"status": "queued",
"accessToken": "eyJhbG...",
"statusUrl": "/api/public/status?runId=run_abc123",
"remaining": 199
}/api/public/generate-logo$0.20 USDCGenerate Logo
Generate 4 logo variations: icon, lettermark, wordmark, and abstract. Powered by Ideogram V3.
Request Body
| Parameter | Type | Description |
|---|---|---|
companyName* | string | The company/brand name. |
industry | string | Business industry for context. |
description | string | Brief company description. Max 500 chars. |
primaryColor | string | Primary brand color (hex). |
secondaryColor | string | Secondary brand color (hex). |
Example
curl -X POST https://vibiz.ai/api/public/generate-logo \
-H "Content-Type: application/json" \
-d '{
"companyName": "Acme Labs",
"industry": "Technology",
"primaryColor": "#6366F1"
}'Response
{
"runId": "run_xyz789",
"status": "queued",
"accessToken": "eyJhbG...",
"statusUrl": "/api/public/status?runId=run_xyz789",
"variations": ["icon", "lettermark", "wordmark", "abstract"]
}/api/public/generate-carousel$0.07/slideGenerate Carousel
Generate a multi-slide carousel. Each slide is generated separately with narrative context (hook → story → CTA).
Request Body
| Parameter | Type | Description |
|---|---|---|
topic* | string | Carousel topic/concept. Max 2000 chars. |
slideCount | number= 3 | Number of slides (2-10). |
platform | string= "instagram_story" | Target platform.instagram_portraitinstagram_storytiktok_storyfacebook_feedlinkedin |
brandContext | object | Optional branding (same as /generate). |
targetAudience | string | Target audience for content. |
tone | string | Desired tone (professional, casual, bold, etc.). |
Example
curl -X POST https://vibiz.ai/api/public/generate-carousel \
-H "Content-Type: application/json" \
-d '{
"topic": "5 reasons to switch to AI-powered marketing",
"slideCount": 5,
"platform": "instagram_story"
}'Response
{
"slideCount": 5,
"status": "queued",
"slides": [
{ "position": 1, "type": "hook", "runId": "run_s1", "accessToken": "..." },
{ "position": 2, "type": "story", "runId": "run_s2", "accessToken": "..." },
{ "position": 3, "type": "story", "runId": "run_s3", "accessToken": "..." },
{ "position": 4, "type": "story", "runId": "run_s4", "accessToken": "..." },
{ "position": 5, "type": "cta", "runId": "run_s5", "accessToken": "..." }
]
}/api/public/generate-ugc$2/10s (15s=$4, 30s=$6, 60s=$12)Generate UGC Video
Generate a UGC-style talking head video. Provide a script or product details and the AI writes the script, generates the video with Sora-2, adds lip-synced speech, background music, and TikTok-style captions.
Parameters
| Parameter | Type | Description |
|---|---|---|
script | string | Full script text. If provided, skips AI script generation. |
productName | string | Product name. Required if no script. |
productDetails | string | Key selling points. Required if no script. |
model | string= sora-2 | Video model to use.sora-2 |
gender | string= female | Creator gender.femalemale |
platform | string= tiktok | Target platform (affects aspect ratio).tiktokreelsshorts |
duration | string= 15s | Video length.15s30s60s |
style | string= talking_head | Video style.talking_headreviewunboxingpov |
hook | string | Opening hook line (optional). |
Example — from product details
curl -X POST https://vibiz.ai/api/public/generate-ugc \
-H "Content-Type: application/json" \
-d '{
"productName": "Glow Serum",
"productDetails": "Hydrating, lightweight formula, visible results in 2 weeks",
"gender": "female",
"platform": "tiktok",
"duration": "15s",
"style": "review"
}'Example — with your own script
curl -X POST https://vibiz.ai/api/public/generate-ugc \
-H "Content-Type: application/json" \
-d '{
"script": "OK so I have to tell you about this serum. I have been using it for two weeks and my skin has literally never looked better. Like, it absorbs in seconds and the glow is insane.",
"gender": "female",
"platform": "tiktok",
"duration": "15s"
}'Response
{
"runId": "run_abc123",
"status": "queued",
"model": "sora-2",
"credits": 5,
"accessToken": "eyJhbG...",
"statusUrl": "/api/public/status?runId=run_abc123",
"remaining": 9
}/api/public/status?runId={runId}FreeCheck Status
Poll the status of a generation task. Requires the accessToken from the generation response.
Headers
| Parameter | Type | Description |
|---|---|---|
Authorization* | string | Bearer {accessToken} from the generation response. |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
runId* | string | The run ID from the generation response. |
Example
curl "https://vibiz.ai/api/public/status?runId=run_abc123" \
-H "Authorization: Bearer eyJhbG..."Response (completed)
{
"runId": "run_abc123",
"status": "completed",
"progress": 100,
"result": {
"imageUrl": "https://storage.vibiz.ai/public_generations/public/abc123.png",
"model": "fal-nano-banana-pro",
"aspectRatio": "16:9",
"resolution": "2K"
}
}Status Values
queuedprocessingcompletedfailedcanceled/api/public/modelsFreeList Capabilities & Pricing
Returns all available capabilities, pricing, and API schema in JSON.
Example
curl https://vibiz.ai/api/public/modelsCapabilities
What you can generate with the API. All generation uses multi-model fallback for maximum reliability.
| Capability | Output | Features |
|---|---|---|
| Image Generation | 1 image (2K or 4K) | 10 aspect ratios, 7 style presets, brand-aware, reference images |
| Logo Generation | 4 variations | Icon, lettermark, wordmark, abstract — brand colors supported |
| Carousel Generation | 2-10 slides | AI narrative planning (hook → story → CTA), 5 platform formats |
Full Example
Generate a UGC video and poll until complete.
const API_BASE = "https://vibiz.ai/api/public";
// 1. Generate a UGC video
const res = await fetch(`${API_BASE}/generate-ugc`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
productName: "Glow Serum",
productDetails: "Lightweight, absorbs in seconds, visible results in 2 weeks",
gender: "female",
platform: "tiktok",
duration: "15s",
style: "review",
}),
});
const { runId, accessToken } = await res.json();
// 2. Poll for result
let result;
while (true) {
const status = await fetch(
`${API_BASE}/status?runId=${runId}`,
{ headers: { Authorization: `Bearer ${accessToken}` } }
).then(r => r.json());
if (status.status === "completed") {
result = status.result;
break;
}
if (status.status === "failed") throw new Error(status.error);
await new Promise(r => setTimeout(r, 5000)); // poll every 5s
}
console.log("Video URL:", result.videoUrl);Realtime Updates
Instead of polling, use the accessToken with the Trigger.dev Realtime SDK for live progress.
import { runs } from "@trigger.dev/sdk";
for await (const run of runs.subscribeToRun(runId, { accessToken })) {
console.log(`Status: ${run.status}, Progress: ${run.metadata?.progress}%`);
if (run.status === "COMPLETED") {
console.log("Video:", run.output.videoUrl);
break;
}
}Pay with Crypto (x402)
All endpoints also support the x402 protocol for wallet-based payments. No API key needed — just a Solana, Base, or Ethereum wallet with USDC.
How x402 works
- 1.Send your request without payment — server returns
402 Payment Required - 2.Your wallet signs a USDC payment based on the 402 response
- 3.Retry the same request with
X-PAYMENTheader - 4.Payment settles only after successful generation
Supported Networks
Solana (mainnet + devnet)Base (mainnet + Sepolia)Ethereum (mainnet + Sepolia)x402 Example
import { x402HTTPClient } from "@x402/core/http";
import { createSvmClient } from "@x402/svm/client";
const client = createSvmClient({ signer: yourSolanaWallet });
const httpClient = new x402HTTPClient(client);
// x402 handles payment automatically on 402 response
const res = await httpClient.fetch("https://vibiz.ai/api/public/generate-ugc", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
productName: "Glow Serum",
productDetails: "Visible results in 2 weeks",
gender: "female",
platform: "tiktok",
duration: "15s",
}),
});
const { runId, accessToken } = await res.json();Testing with Devnet
Use devnet to test without spending real money. Devnet returns sample results immediately. Get free test USDC from the Solana faucet.
Rate Limits
Per wallet address, 1-hour sliding window. Responses include X-RateLimit-* headers.
| Network | Limit | Window |
|---|---|---|
| Mainnet | 200 requests | 1 hour |
| Devnet | 20 requests | 1 hour |
Response Headers
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 187