Créditos y uso
Cómo se cobran, liquidan y reembolsan las llamadas de la Direct API, cómo presupuestar un trabajo de antemano y cómo leer el gasto y el registro de su clave.
La Direct API cobra créditos de Morphic del saldo de su organización, el mismo fondo que usa Studio, y cada respuesta indica cuántos.
- Las llamadas de la Direct API se cobran según las tarifas de API de su organización, que pueden diferir de lo que cuesta el mismo trabajo en Studio. Todas las cifras que le da la API ya las reflejan: los presupuestos de
plan_media,estimated_credits, el bloquebilling, las lecturas de generaciones, los webhooks y/usage. - Las tarifas se fijan por organización y no se publican. Su contacto de cuenta puede compartir con usted su hoja de tarifas de API.
- Un cambio de tarifa se aplica a las generaciones iniciadas después de él; una generación en curso se liquida con la tarifa con la que se inició.
- En Studio, en 'Configuración' > 'Créditos', el gasto de la API aparece como una fila propia, 'API', junto a sus miembros, y 'Desglosar la API por clave' lo detalla por clave. Se descuenta de los créditos de la organización pero nunca de la asignación de un miembro, y los límites de créditos de cada clave lo acotan.
Cómo se cobra una generación
- Al iniciarse, a la generación se le cobra su precio presupuestado. La respuesta de inicio lo indica en
billing.credits_chargedyresult.estimated_credits. - Algunas salidas se cobran según lo que realmente se produce: la voz y la música según la duración producida, los renderizados de línea de tiempo según el tiempo de cómputo. Llevan
credits_settle_on_output_duration: true; el cobro inicial es un mínimo, y el importe final se liquida cuando termina la generación. - Una generación que termina en
failedocancelledse reembolsa por completo, ybilling.credits_refundedindica los créditos devueltos. Una generación correcta también puede llevar un reembolso parcial, por ejemplo cuando una salida liquidada resultó más corta de lo que cubría el cobro inicial. - Una vez que una generación es final,
billing.credits_chargedes el total neto en el registro (cobro inicial, más o menos la liquidación, menoscredits_refunded) ycredits_are_finalestrue. Una generación fallida o cancelada termina concredits_charged: 0ycredits_refundedigual a lo que se le cobró.
| Campo | Significado |
|---|---|
estimated_credits | el precio presupuestado y cobrado al inicio |
credits_charged | los créditos netos registrados hasta ahora para esta generación, tras la liquidación y los reembolsos |
credits_refunded | todos los créditos devueltos por esta generación: el cobro completo en failed o cancelled, cualquier reembolso parcial en una correcta; 0 si no hay ninguno, nunca negativo |
credits_are_final | false mientras la generación está en curso o queda pendiente una liquidación o un reembolso; true cuando ya nada lo va a cambiar |
credits_settle_on_output_duration | true cuando el cobro inicial es un mínimo que se liquida a partir de la salida producida |
Mientras una generación está en curso, credits_charged es igual al cobro inicial. Vuelva a leerla cuando sea final para obtener el importe liquidado; solo se envía un webhook cuando ya lo es.
Facturación en cada respuesta
El bloque billing de la respuesta de una llamada indica lo que cobró la llamada en el momento de responder; Llamar a una herramienta lo detalla por tipo de llamada. Los reembolsos se producen después, así que aparecen en la generación (GET /generations/{id} y /usage), nunca en la respuesta original.
- Una herramienta de pago que responde dentro de la llamada y cuyo trabajo falla, como
analyze_video, responde concredits_charged: 0ycredits_refundedcon el importe reembolsado. - El encabezado
Morphic-Credits-Charged: <integer>lleva la misma cifra quebilling.credits_charged, salvo en una repetición idempotente, que no cobra nada más y envía0mientras su cuerpo repite el cobro original.
Presupueste antes de gastar
POST /v1/direct/tools/plan_media valida un plan de hasta 20 pasos y pone precio a los pasos que puede, sin iniciar ni cobrar nada.
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"] }
]
}
}'- Omita los campos de recursos cuyas salidas todavía no existen e indique en
depends_onel paso del que proceden. - Cada paso recibe su
validation, suquote_statusy susestimated_credits. - El resultado también da el
execution_order,known_estimated_credits,unquoted_step_idsycomplete_estimate. Cuandocomplete_estimateesfalse, la suma es un límite inferior, no un presupuesto.
Clave y saldo
GET /v1/direct/me devuelve la clave que hace la llamada, sus límites y su gasto, y el saldo de la organización. Cualquier clave puede llamarlo.
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
}
}Registro de uso
GET /v1/direct/usage (permiso assets:read) devuelve cada entrada del registro que causó la clave, para conciliarla con sus propios registros.
| Parámetro de consulta | Significado |
|---|---|
from, to | límites ISO 8601 sobre created_at; por defecto, los últimos 30 días, como máximo 92 días |
generation_id | solo las entradas de una generación |
limit | de 1 a 200, por defecto 50 |
cursor | el next_cursor de la página anterior |
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
}kindescharge,settlementorefund; un valor negativo decreditsdevuelve créditos.totalsabarca todo el intervalo filtrado, no solo la página.- Una herramienta que responde dentro de la llamada (
analyze_video,analyze_audio,filmlab_edit) no inicia ninguna generación, así que sus entradas llevangeneration_id: nully se distinguen portool.
Si tiene algún problema o alguna pregunta, no dude en ponerse en contacto con nosotros. Estaremos encantados de ayudarle. Escríbanos a support@morphic.com.
Webhooks
Reciba un aviso firmado cuando termine una generación de la Direct API, verifíquelo y lea la generación para obtener sus detalles.
Pasar su propio contenido multimedia
Entregue a Morphic sus propias imágenes, videos, audios y documentos por URL, en cualquier campo que acepte contenido multimedia.