クレジットと使用量
Direct API の呼び出しの請求、精算、返金の仕組み、事前に見積もる方法、キーの消費額と台帳の読み方を説明します。
Direct API は、組織の残高(Studio と共通のプール)から Morphic クレジットを請求し、すべてのレスポンスでその額を示します。
- Direct API の呼び出しは組織の API 料金で請求され、Studio で同じ作業をした場合の費用とは異なることがあります。API が返す数値(
plan_mediaの見積もり、estimated_credits、billingブロック、生成の読み取り、Webhook、/usage)には、すべてこの料金が反映されています。 - 料金は組織ごとに設定され、公開されていません。担当者が API の料金表をお伝えします。
- 料金の変更は、変更後に開始された生成に適用されます。実行中の生成は、開始時の料金で精算されます。
- Studio の「設定」>「クレジット」では、API の消費がメンバーと並んで独立した行「API」として表示され、「API をキー別に表示」でキーごとの内訳を確認できます。API の消費は組織のクレジットから差し引かれますが、メンバーの割り当てから差し引かれることはなく、各キーの クレジット上限 で制限されます。
生成の請求方法
- 開始時に、生成には見積もり価格が請求されます。開始レスポンスでは、この額が
billing.credits_chargedとresult.estimated_creditsに示されます。 - 一部の出力は、実際に生成された量に応じて価格が決まります。音声合成と音楽は生成された長さ、タイムラインのレンダリングは計算時間で決まります。これらには
credits_settle_on_output_duration: trueが付き、開始時の請求額は下限で、最終的な額は生成の完了時に精算されます。 failedまたはcancelledで終了した生成は全額返金され、返されたクレジットはbilling.credits_refundedに示されます。succeededの生成にも一部返金が付くことがあります。たとえば、精算対象の出力が開始時の請求額でカバーされる長さより短くなった場合です。- 生成が最終状態になると、
billing.credits_chargedは台帳上の正味の合計額(開始時の請求額に精算分を加減し、credits_refundedを差し引いた額)になり、credits_are_finalはtrueになります。失敗またはキャンセルされた生成は、最終的にcredits_charged: 0となり、credits_refundedは請求されていた額と等しくなります。
| フィールド | 意味 |
|---|---|
estimated_credits | 開始時に見積もられ、請求された価格 |
credits_charged | この生成についてこれまでに記録された正味のクレジット(精算と返金の反映後) |
credits_refunded | この生成について返されたすべてのクレジット。failed または cancelled では請求額の全額、succeeded では一部返金の額。返金がなければ 0 で、負の値になることはありません |
credits_are_final | 生成の実行中、または精算や返金がまだ残っている間は false。それ以上変わらなくなると true |
credits_settle_on_output_duration | 開始時の請求額が下限で、生成された出力に基づいて精算される場合は true |
生成の実行中、credits_charged は開始時の請求額と等しくなります。精算後の額を知るには、生成が最終状態になってから再度読み取ってください。Webhook は最終状態になってから一度だけ送信されます。
各レスポンスの課金情報
呼び出しのレスポンスに含まれる 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 | created_at に対する ISO 8601 の範囲。既定は直近 30 日、最大 92 日 |
generation_id | 1 件の生成のエントリのみ |
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.