Luma AI Dream Machine
تولید ویدیوی هنری با سبک سورئال منحصربهفرد و جلوههای خلاقانه.
✓ سبک سورئال
✓ جلوههای خلاقانه
✓ پردازش سریع
✓ زیباییشناسی منحصربهفرد
احراز هویت
برای دسترسی به Luma Dream Machine از طریق API دویتانگ (Doitong)، از کلید API خود استفاده کنید. این کلید را در هدرهای REST API یا Mutationهای GraphQL قرار دهید.
// GraphQL Header
{
"Authorization": "Bearer YOUR_API_KEY"
}
// REST Header
"X-API-Key": "YOUR_API_KEY"
شروع سریع
در عرض چند دقیقه کار با Luma Labs API را شروع کنید. این مراحل ساده را برای ساخت اولین text to video خود دنبال کنید.
مرحله ۱: دریافت کلید API
در سایت دویتانگ ثبتنام کنید و برای ساخت کلید API به پنل کاربری خود بروید.
مرحله ۲: اولین درخواست خود را ارسال کنید
از نمونه کدهای زیر برای ارسال اولین درخواست API خود استفاده کنید.
curl -X POST https://api.doitong.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: unique-request-id-123" \
-d '{
"query": "mutation Generate($input: GenerateInput!) { generate(input: $input) { id status type provider url metadata creditCost } }",
"variables": {
"input": {
"type": "VIDEO",
"provider": "luma",
"input": {
"text": "A serene landscape with mountains and a lake at sunset"
},
"options": {
"duration": 5,
"aspectRatio": "16:9"
}
}
}
}'
const response = await fetch('https://api.doitong.com/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY',
'Idempotency-Key': 'unique-request-id-123'
},
body: JSON.stringify({
query: `
mutation Generate($input: GenerateInput!) {
generate(input: $input) {
id
status
type
provider
url
metadata
creditCost
}
}
`,
variables: {
input: {
type: 'VIDEO',
provider: 'luma',
input: {
text: 'A serene landscape with mountains and a lake at sunset'
},
options: {
duration: 5,
aspectRatio: '16:9'
}
}
}
})
});
const data = await response.json();
console.log('Result:', data.data.generate);
import requests
import json
url = "https://api.doitong.com/graphql"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
}
query = """
mutation Generate($input: GenerateInput!) {
generate(input: $input) {
id
status
type
provider
url
metadata
creditCost
}
}
"""
variables = {
"input": {
"type": "VIDEO",
"provider": "luma",
"input": {
"text": "A serene landscape with mountains and a lake at sunset"
},
"options": {
"duration": 5,
"aspectRatio": "16:9"
}
}
}
response = requests.post(url, json={
"query": query,
"variables": variables
}, headers=headers)
data = response.json()
print("Result:", data["data"]["generate"])
mutation Generate($input: GenerateInput!) {
generate(input: $input) {
id
status
type
provider
url
metadata
creditCost
createdAt
}
}
# Variables
{
"input": {
"type": "VIDEO",
"provider": "luma",
"input": {
"text": "A serene landscape with mountains and a lake at sunset"
},
"options": {
"duration": 5,
"aspectRatio": "16:9",
"version": "dream-machine",
"quality": "high"
}
}
}
قیمتگذاری
سرویس Luma Labs API از مدل قیمتگذاری مبتنی بر اعتبار (Credit) استفاده میکند. میزان مصرف اعتبار بر اساس پیچیدگی و زمان محتوای تولید شده محاسبه میشود.
| قابلیت | اعتبار | توضیحات |
|---|---|---|
| حالت استاندارد | 100-200 اعتبار | ویدیوی ۵ تا ۱۰ ثانیهای با کیفیت استاندارد |
| حالت حرفهای | 300-500 اعتبار | ویدیوی ۵ تا ۱۰ ثانیهای با کیفیت حرفهای |
نقاط اتصال API
سرویس Luma Labs API از طریق نقطه اتصال یکپارچه GraphQL ما در دسترس است.
نقطه اتصال GraphQL
POST https://api.doitong.com/graphql
نقطه اتصال REST
POST https://api.doitong.com/v1/text_to_video
پارامترها
پارامترهای موجود برای درخواستهای Luma Labs API:
| پارامتر | نوع | اجباری | توضیحات |
|---|---|---|---|
service |
رشته (String) | Yes | شناسه سرویس: "luma" |
prompt |
رشته (String) | Yes | توضیح متنی از آنچه میخواهید تولید شود |
duration |
عدد صحیح (Integer) | No | مدت زمان ویدیو به ثانیه (پیشفرض: ۵) |
aspectRatio |
رشته (String) | No | نسبت تصویر: "16:9"، "9:16"، "1:1" (پیشفرض: "16:9") |
version |
رشته (String) | No | Model version: "dream-machine" |
webhookUrl |
رشته (String) | No | آدرس URL برای دریافت اعلانهای تکمیل عملیات |
فرمت پاسخ
تمامی پاسخهای API از یک ساختار ثابت پیروی میکنند:
پاسخ موفق (Success)
{
"data": {
"generatevideo": {
"id": "abc123xyz",
"status": "processing",
"url": null,
"webhookUrl": "https://your-webhook.com/callback",
"createdAt": "2024-01-01T00:00:00Z"
}
}
}
پاسخ تکمیل شده (Completed)
{
"data": {
"generatevideo": {
"id": "abc123xyz",
"status": "completed",
"url": "https://cdn.doitong.com/outputs/abc123xyz.mp4",
"duration": 5,
"createdAt": "2024-01-01T00:00:00Z"
}
}
}
مدیریت خطاها
این API از کدهای وضعیت استاندارد HTTP استفاده کرده و پیامهای خطای دقیقی را برمیگرداند.
کدهای خطای رایج
| کد وضعیت | نوع خطا | توضیحات |
|---|---|---|
| 400 | Bad Request | Invalid parameters or malformed request |
| 401 | Unauthorized | Missing or invalid API key |
| 402 | Payment Required | Insufficient credits |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Server error, please retry |
فرمت پاسخ خطا
{
"errors": [
{
"message": "Insufficient credits for this operation",
"extensions": {
"code": "INSUFFICIENT_CREDITS",
"creditsRequired": 100,
"creditsAvailable": 50
}
}
]
}
وبهوکها (Webhooks)
هنگام اتمام فرآیند تولید text to video، اعلانهای لحظهای دریافت کنید.
راهاندازی وبهوکها
Include a <code>webhookUrl</code> parameter in your request to receive a POST notification when processing is complete.
پیکره (Payload) وبهوک
{
"id": "abc123xyz",
"status": "completed",
"url": "https://cdn.doitong.com/outputs/abc123xyz.mp4",
"service": "luma",
"createdAt": "2024-01-01T00:00:00Z",
"completedAt": "2024-01-01T00:01:00Z",
"metadata": {
"duration": 5,
"width": 1920,
"height": 1080
}
}
امنیت وبهوک
تمامی درخواستهای وبهوک شامل یک هدر امضا (Signature) برای تایید اصالت هستند:
X-Doitong-Signature: sha256=abc123...
محدودیت نرخ فراخوانی
برای اطمینان از استفاده منصفانه و پایداری سیستم، محدودیتهای زیر اعمال میشوند:
| طرح | درخواست در دقیقه | پردازشهای همزمان | محدودیت روزانه |
|---|---|---|---|
| رایگان | 10 | 1 | 100 |
| استارتر | 30 | 3 | 1,000 |
| حرفهای | 60 | 10 | 10,000 |
| سازمانی | سفارشی | سفارشی | نامحدود |
X-RateLimit-Limit: Maximum requests per windowX-RateLimit-Remaining: Requests remainingX-RateLimit-Reset: Window reset timestamp
توصیههای کلیدی
۱. بهینهسازی پرامپتها
برای دریافت بهترین نتیجه، پرامپتهای دقیق و توصیفی بنویسید:
- Be specific about visual elements, style, and mood
- Include details about lighting, camera angles, and composition
- Avoid contradictory or impossible requests
۲. مدیریت پردازشهای نامتقارن
فرآیند تولید محتوا بهصورت نامتقارن (Async) است. از روش Polling یا Webhook استفاده کنید:
// Polling example
async function pollStatus(jobId) {
let status = 'processing';
while (status === 'processing') {
await sleep(2000); // Wait 2 seconds
const result = await checkJobStatus(jobId);
status = result.status;
}
return result;
}
۳. بازیابی خطا
منطق تلاش مجدد (Retry) را با استفاده از عقبنشینی نمایی (Exponential Backoff) پیادهسازی کنید:
async function retryWithBackoff(fn, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (error) {
if (i === maxRetries - 1) throw error;
await sleep(Math.pow(2, i) * 1000);
}
}
}
۴. نظارت بر مصرف اعتبار
میزان مصرف اعتبار خود را زیر نظر داشته باشید تا از قطع سرویس جلوگیری کنید:
- Check credit balance before large batch operations
- Set up alerts for low credit thresholds
- Implement credit-aware request queuing
آماده شروع هستید؟
به هزاران توسعهدهندهای بپیوندید که از Luma Labs API برای خلق محتوای شگفتانگیز استفاده میکنند.