Quickstart
Get up and running with PixelByte API in three simple steps.
Step 1: Get Your API Key
Create an API key from the PixelByte Dashboard.
- Sign in to your account
- Navigate to Settings > API Keys
- Click Create New Key
- Copy your key and store it securely
Your API key is shown only once. Store it in a secure location like an environment variable.
export PIXELBYTE_API_KEY="pb_your_api_key_here"
Step 2: Submit Your First Job
Let’s generate a video using Google’s Veo model.
curl -X POST https://api.muvi.video/v1/jobs/submit \
-H "Authorization: Bearer $PIXELBYTE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/veo-3.1-fast/text-to-video",
"input": {
"prompt": "A cat playing piano"
}
}'
import requests
url = "https://api.muvi.video/v1/jobs/submit"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"model": "google/veo-3.1-fast/text-to-video",
"input": {
"prompt": "A cat playing piano"
}
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
print(data)
const response = await fetch("https://api.muvi.video/v1/jobs/submit", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "google/veo-3.1-fast/text-to-video",
input: {
prompt: "A cat playing piano"
}
})
});
const data = await response.json();
console.log(data);
Response:
{
"success": true,
"data": {
"jobId": "job_abc123",
"status": "pending",
"model": "google/veo-3.1-fast/text-to-video",
"estimatedCost": 500000,
"createdAt": "2026-02-18T12:00:00Z"
},
"requestId": "req_xyz789"
}
Save the jobId from the response — you’ll need it to check the status and retrieve the result.
Step 3: Check Job Status & Get Result
AI generation takes time. Poll the status endpoint until the job completes.
curl https://api.muvi.video/v1/jobs/job_abc123 \
-H "Authorization: Bearer $PIXELBYTE_API_KEY"
import requests
import time
job_id = "job_abc123"
url = f"https://api.muvi.video/v1/jobs/{job_id}"
headers = {
"Authorization": "Bearer YOUR_API_KEY"
}
while True:
response = requests.get(url, headers=headers)
data = response.json()
status = data["data"]["status"]
print(f"Status: {status}")
if status == "completed":
print(f"Output: {data['data']['output']['url']}")
break
elif status == "failed":
print(f"Error: {data['data']['error']}")
break
time.sleep(5)
const jobId = "job_abc123";
async function pollJob() {
while (true) {
const response = await fetch(
`https://api.muvi.video/v1/jobs/${jobId}`,
{
headers: {
"Authorization": "Bearer YOUR_API_KEY"
}
}
);
const data = await response.json();
const status = data.data.status;
console.log(`Status: ${status}`);
if (status === "completed") {
console.log(`Output: ${data.data.output.url}`);
break;
} else if (status === "failed") {
console.log(`Error: ${data.data.error}`);
break;
}
await new Promise((r) => setTimeout(r, 5000));
}
}
pollJob();
Completed response:
{
"success": true,
"data": {
"jobId": "job_abc123",
"status": "completed",
"model": "google/veo-3.1-fast/text-to-video",
"output": {
"url": "https://cdn.muvi.video/outputs/job_abc123/output.mp4",
"contentType": "video/mp4",
"durationSeconds": 8
},
"cost": 480000,
"createdAt": "2026-02-18T12:00:00Z",
"completedAt": "2026-02-18T12:01:30Z"
},
"requestId": "req_def456"
}
Tip: Use webhooks instead of polling to get notified when jobs complete.
Next Steps
Authentication
Learn about API key scopes, IP whitelisting, and key rotation.
API Reference
Explore all available endpoints and parameters.