Credits und Nutzung

Wie Aufrufe der Direct API berechnet, abgerechnet und erstattet werden, wie Sie einen Auftrag vorab kalkulieren und wie Sie die Ausgaben und das Buchungsprotokoll Ihres Schlüssels lesen.

Die Direct API berechnet Morphic-Credits aus dem Guthaben Ihrer Organisation, demselben Kontingent, das auch Studio nutzt, und jede Antwort nennt die Anzahl.

  • Aufrufe der Direct API werden zu den API-Tarifen Ihrer Organisation berechnet, die von den Kosten derselben Arbeit in Studio abweichen können. Jede Zahl, die Ihnen die API liefert, berücksichtigt sie bereits: Kalkulationen von plan_media, estimated_credits, der billing-Block, gelesene Generierungen, Webhooks und /usage.
  • Tarife werden pro Organisation festgelegt und nicht veröffentlicht. Ihre Ansprechperson bei Morphic kann Ihnen Ihre API-Preisliste zukommen lassen.
  • Eine Tarifänderung gilt für Generierungen, die danach gestartet werden; eine laufende Generierung wird zu dem Tarif abgerechnet, mit dem sie gestartet wurde.
  • In Studio erscheinen die API-Ausgaben unter Einstellungen > Credits als eigene Zeile, API, neben Ihren Mitgliedern, und API nach Schlüssel aufteilen schlüsselt sie pro Schlüssel auf. Sie werden aus den Credits der Organisation bezahlt, aber nie aus dem Kontingent eines Mitglieds, und die Credit-Limits jedes Schlüssels begrenzen sie.

Wie eine Generierung berechnet wird

  1. Beim Start wird der kalkulierte Preis der Generierung belastet. Die Startantwort meldet ihn in billing.credits_charged und result.estimated_credits.
  2. Manche Ausgaben werden nach dem tatsächlich Erzeugten berechnet: Sprache und Musik nach erzeugter Länge, Timeline-Renders nach Rechenzeit. Sie tragen credits_settle_on_output_duration: true; die Startbelastung ist ein Mindestbetrag, und der endgültige Betrag wird abgerechnet, wenn die Generierung abgeschlossen ist.
  3. Eine Generierung, die mit failed oder cancelled endet, wird vollständig erstattet, und billing.credits_refunded meldet die zurückgegebenen Credits. Auch eine erfolgreiche Generierung kann eine Teilerstattung enthalten, etwa wenn eine abgerechnete Ausgabe kürzer ausfiel, als die Startbelastung abdeckte.
  4. Sobald eine Generierung endgültig ist, ist billing.credits_charged die Nettosumme im Buchungsprotokoll (Startbelastung, plus oder minus Abrechnung, minus credits_refunded), und credits_are_final ist true. Eine fehlgeschlagene oder abgebrochene Generierung endet mit credits_charged: 0 und credits_refunded in Höhe der Belastung.
FeldBedeutung
estimated_creditsder beim Start kalkulierte und belastete Preis
credits_chargeddie bisher für diese Generierung verbuchten Netto-Credits, nach Abrechnung und Erstattungen
credits_refundedalle für diese Generierung zurückgegebenen Credits: die gesamte Belastung bei failed oder cancelled, eine etwaige Teilerstattung bei einer erfolgreichen; 0, wenn keine, nie negativ
credits_are_finalfalse, solange die Generierung läuft oder eine Abrechnung oder Erstattung noch aussteht; true, sobald sich nichts mehr daran ändert
credits_settle_on_output_durationtrue, wenn die Startbelastung ein Mindestbetrag ist, der anhand der erzeugten Ausgabe abgerechnet wird

Solange eine Generierung läuft, entspricht credits_charged der Startbelastung. Lesen Sie sie erneut, sobald die Generierung endgültig ist, um den abgerechneten Betrag zu erhalten; ein Webhook wird erst dann gesendet.

Abrechnung in jeder Antwort

Der billing-Block in der Antwort eines Aufrufs meldet, was der Aufruf zum Zeitpunkt seiner Antwort berechnet hat; Ein Tool aufrufen listet ihn nach Art des Aufrufs auf. Erstattungen erfolgen später und erscheinen daher an der Generierung (GET /generations/{id} und /usage), nie in der ursprünglichen Antwort.

  • Ein kostenpflichtiges Tool, das innerhalb des Aufrufs antwortet und dessen Arbeit fehlschlägt, etwa analyze_video, antwortet mit credits_charged: 0 und credits_refunded in Höhe der Erstattung.
  • Der Header Morphic-Credits-Charged: <integer> enthält dieselbe Zahl wie billing.credits_charged, außer bei einer idempotenten Wiederholung, die nichts weiter berechnet und 0 sendet, während ihr Body die ursprüngliche Belastung wiederholt.

Vor dem Ausgeben kalkulieren

POST /v1/direct/tools/plan_media prüft einen Plan mit bis zu 20 Schritten und kalkuliert die Schritte, die sich kalkulieren lassen, ohne etwas zu starten oder zu berechnen.

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"] }
          ]
        }
      }'
  • Lassen Sie Asset-Felder weg, deren Ausgaben noch nicht existieren, und nennen Sie in depends_on den Schritt, aus dem sie stammen.
  • Jeder Schritt erhält seine validation, seinen quote_status und seine estimated_credits.
  • Das Ergebnis enthält außerdem execution_order, known_estimated_credits, unquoted_step_ids und complete_estimate. Ist complete_estimate gleich false, ist die Summe eine Untergrenze und kein Budget.

Schlüssel und Guthaben

GET /v1/direct/me liefert den aufrufenden Schlüssel, seine Limits und Ausgaben sowie das Guthaben der Organisation. Jeder Schlüssel kann es aufrufen.

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
  }
}

Buchungsprotokoll der Nutzung

GET /v1/direct/usage (Berechtigung assets:read) liefert jeden Buchungseintrag, den der Schlüssel verursacht hat, zum Abgleich mit Ihren eigenen Aufzeichnungen.

Query-ParameterBedeutung
from, toISO-8601-Grenzen für created_at; standardmäßig die letzten 30 Tage, höchstens 92 Tage
generation_idnur die Einträge einer Generierung
limit1 bis 200, standardmäßig 50
cursorder next_cursor der vorherigen Seite
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 ist charge, settlement oder refund; ein negativer Wert in credits gibt Credits zurück.
  • totals umfasst den gesamten gefilterten Zeitraum, nicht nur die Seite.
  • Ein Tool, das innerhalb des Aufrufs antwortet (analyze_video, analyze_audio, filmlab_edit), startet keine Generierung. Seine Einträge tragen daher generation_id: null und lassen sich über tool unterscheiden.

Wenn Sie Probleme haben oder Fragen haben, können Sie sich gerne an uns wenden. Wir helfen Ihnen gerne. Schreiben Sie uns an support@morphic.com.

Auf dieser Seite