الأرصدة والاستخدام
كيف تُخصم استدعاءات Direct API وتُسوّى وتُسترد، وكيف تحصل على عرض سعر لمهمة أولًا، وكيف تقرأ إنفاق مفتاحك وسجله.
تخصم Direct API أرصدة Morphic من رصيد مؤسستك، وهو المجمّع نفسه الذي يستخدمه Studio، وكل استجابة تذكر عددها.
- تُخصم استدعاءات Direct API وفق أسعار API الخاصة بمؤسستك، والتي قد تختلف عن تكلفة العمل نفسه في Studio. وكل رقم تعطيك إياه الواجهة يعكسها بالفعل: عروض أسعار
plan_media، وestimated_credits، وكتلةbilling، وقراءات عمليات التوليد، والويبهوك، و/usage. - تُحدَّد الأسعار لكل مؤسسة ولا تُنشر. ويمكن لجهة الاتصال الخاصة بحسابك مشاركة جدول أسعار API الخاص بك.
- يسري تغيير السعر على عمليات التوليد التي تبدأ بعده؛ أما عملية التوليد الجارية فتُسوّى بالسعر الذي بدأت به.
- في Studio، ضمن 'Settings' > 'Credits'، يظهر إنفاق API في صف مستقل باسم 'API' بجوار أعضائك، ويفصّله 'Split API by key' حسب كل مفتاح. ويُسحب من أرصدة المؤسسة لكن لا يُسحب أبدًا من حصة أي عضو، وتضع حدود الرصيد لكل مفتاح سقفًا له.
كيف تُخصم عملية التوليد
- عند البدء، يُخصم من عملية التوليد سعرها المعروض. وتُبلغ استجابة البدء به في
billing.credits_chargedوresult.estimated_credits. - تُسعَّر بعض المخرجات بحسب ما يُنتج فعلًا: الكلام والموسيقى بحسب الطول المُنتج، وعمليات عرض الخط الزمني بحسب وقت الحوسبة. وتحمل هذه
credits_settle_on_output_duration: true؛ فيكون خصم البدء حدًا أدنى، ويُسوّى المبلغ النهائي عند انتهاء عملية التوليد. - عملية التوليد التي تنتهي بـ
failedأوcancelledتُسترد بالكامل، ويُبلغbilling.credits_refundedبالأرصدة المُعادة. وقد تحمل عملية التوليد الناجحة أيضًا استردادًا جزئيًا، على سبيل المثال عندما تأتي مخرجات مُسوّاة أقصر مما غطّاه خصم البدء. - بعد أن تصبح عملية التوليد نهائية، يكون
billing.credits_chargedهو الإجمالي الصافي في السجل (خصم البدء، زائد التسوية أو ناقصها، ناقصcredits_refunded)، ويكونcredits_are_finalهوtrue. وتنتهي عملية التوليد الفاشلة أو الملغاة بـcredits_charged: 0وcredits_refundedمساويًا لما خُصم منها.
| الحقل | المعنى |
|---|---|
estimated_credits | السعر المعروض والمخصوم عند البدء |
credits_charged | صافي الأرصدة المسجلة لعملية التوليد هذه حتى الآن، بعد التسوية والاستردادات |
credits_refunded | كل رصيد أُعيد لعملية التوليد هذه: الخصم كاملًا عند failed أو cancelled، وأي استرداد جزئي لعملية ناجحة؛ و0 إن لم يوجد، ولا يكون سالبًا أبدًا |
credits_are_final | false ما دامت عملية التوليد جارية أو ما زالت تسوية أو استرداد مستحقين؛ وtrue عندما لا يعود شيء سيغيّره |
credits_settle_on_output_duration | true عندما يكون خصم البدء حدًا أدنى يُسوّى بناءً على المخرجات المُنتجة |
ما دامت عملية التوليد جارية، يساوي credits_charged خصم البدء. اقرأه مرة أخرى بعد أن تصبح عملية التوليد نهائية لمعرفة المبلغ المُسوّى؛ ولا يُرسَل الويبهوك إلا بعد ذلك.
الفوترة في كل استجابة
تُبلغ كتلة billing في استجابة الاستدعاء بما خصمه الاستدعاء عند عودته؛ وتسردها صفحة استدعاء أداة حسب نوع الاستدعاء. تحدث الاستردادات لاحقًا، لذا تظهر على عملية التوليد (GET /generations/{id} و/usage)، ولا تظهر أبدًا على الاستجابة الأصلية.
- الأداة المدفوعة التي تُجيب ضمن الاستدعاء ويفشل عملها، مثل
analyze_video، تُجيب بـcredits_charged: 0وبتعيينcredits_refundedعلى قيمة الاسترداد. - تحمل الترويسة
Morphic-Credits-Charged: <integer>الرقم نفسه الذي فيbilling.credits_charged، إلا في إعادة التشغيل الآمنة لطلب سابق، التي لا تخصم شيئًا إضافيًا وترسل0بينما يكرر جسمها الخصم الأصلي.
احصل على عرض سعر قبل الإنفاق
يتحقق POST /v1/direct/tools/plan_media من خطة تضم حتى 20 خطوة ويسعّر الخطوات التي يستطيع تسعيرها، دون أن يبدأ أو يخصم أي شيء.
curl -s https://mcp.morphic.com/v1/direct/tools/plan_media \
-H "Authorization: Bearer $MORPHIC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"steps": [
{ "id": "still", "tool_name": "generate_image", "arguments_json": "{\"prompt\":\"A red vintage bicycle\",\"aspect_ratio\":\"16:9\"}" },
{ "id": "clip", "tool_name": "generate_video", "arguments_json": "{\"prompt\":\"The bicycle rolls away\",\"duration_seconds\":8}", "depends_on": ["still"] }
]
}
}'- احذف حقول الأصول التي لم تُنتج مخرجاتها بعد، واذكر في
depends_onالخطوة التي ستأتي منها. - تحصل كل خطوة على
validationوquote_statusوestimated_creditsالخاصة بها. - تعطي النتيجة أيضًا
execution_orderوknown_estimated_creditsوunquoted_step_idsوcomplete_estimate. وعندما يكونcomplete_estimateهوfalse، يكون المجموع حدًا أدنى، لا ميزانية.
المفتاح والرصيد
يعيد GET /v1/direct/me المفتاح المستدعي وحدوده وإنفاقه، ورصيد المؤسسة. ويمكن لأي مفتاح استدعاؤه.
curl -s https://mcp.morphic.com/v1/direct/me \
-H "Authorization: Bearer $MORPHIC_API_KEY"{
"api_key": {
"id": "01928e00-…",
"name": "Order pipeline (prod)",
"scopes": ["assets:read", "assets:write", "generations:write", "projects:read"],
"expires_at": null,
"credit_limits": {
"total": { "limit": 500000, "used": 182340, "remaining": 317660 },
"monthly": { "limit": 100000, "used": 41200, "remaining": 58800, "resets_at": "2026-11-01T00:00:00.000Z" },
"daily": { "limit": null, "used": 2310, "remaining": null, "resets_at": "2026-10-26T00:00:00.000Z" }
}
},
"organization": {
"id": "01928d00-…",
"plan": "enterprise",
"remaining_credits": 1240000,
"unlimited": false
}
}سجل الاستخدام
يعيد GET /v1/direct/usage (النطاق assets:read) كل قيد في السجل تسبب فيه المفتاح، لمطابقته مع سجلاتك الخاصة.
| معامل الاستعلام | المعنى |
|---|---|
from، to | حدود ISO 8601 على created_at؛ الافتراضي آخر 30 يومًا، و92 يومًا كحد أقصى |
generation_id | قيود عملية توليد واحدة فقط |
limit | من 1 إلى 200، والافتراضي 50 |
cursor | قيمة next_cursor من الصفحة السابقة |
curl -s "https://mcp.morphic.com/v1/direct/usage?from=2026-10-01T00:00:00Z&limit=200" \
-H "Authorization: Bearer $MORPHIC_API_KEY"{
"usage": [
{ "id": "0192a7b3-…", "created_at": "2026-10-25T09:14:03.500Z", "kind": "charge", "credits": 120, "generation_id": "0192a7b3-a1c4-…", "tool": "generate_video", "model_id": "mdl_7rk2pq9vxa4m", "metadata": { "order_id": "4411" } },
{ "id": "0192a7b4-…", "created_at": "2026-10-25T09:15:41.950Z", "kind": "settlement", "credits": -24, "generation_id": "0192a7b3-a1c4-…", "tool": "generate_video", "model_id": "mdl_7rk2pq9vxa4m", "metadata": { "order_id": "4411" } }
],
"totals": { "charged": 120, "settled": -24, "refunded": 0, "net": 96 },
"next_cursor": null
}- قيمة
kindواحدة منchargeأوsettlementأوrefund؛ وتعني قيمةcreditsالسالبة إعادة أرصدة. - يغطي
totalsالنطاق المُصفّى كاملًا، لا الصفحة فقط. - الأداة التي تُجيب ضمن الاستدعاء (
analyze_video،analyze_audio،filmlab_edit) لا تبدأ عملية توليد، لذا تحمل قيودهاgeneration_id: nullويُميَّز بينها بواسطةtool.
إذا واجهت أي مشكلة أو كانت لديك أي أسئلة، فلا تتردد في التواصل معنا. يسعدنا مساعدتك. اكتب لنا على support@morphic.com.