Direct API

Generate, edit and manage images, video and audio in Morphic from your own backend over HTTPS.

The Morphic Direct API gives your backend the same generation, editing and library tools the Morphic MCP server gives an AI assistant, over plain HTTPS and JSON. You call a tool with an organization API key, every paid call reports what it charged, and you follow each generation by polling or by a signed webhook.

At a glance

Base URLhttps://mcp.morphic.com/v1/direct
AuthAuthorization: Bearer mor_live_…
FormatJSON request and response bodies, UTF-8, up to 1 MB per request
IdsUUID v7 strings for your data, mdl_… for models, voice UUIDs from list_voices
TimesISO 8601 in UTC, such as 2026-10-25T09:14:03.120Z
MoneyMorphic credits, as integers: the same credits your plan and Studio spend

Getting access

The Direct API is switched on per organization, by invitation. Until it is, every call answers 403 direct_api_disabled.

  1. Ask your Morphic account contact to enable the Direct API for your organization. Morphic also switches paid tools on once your order form is in place; until then the Direct API scopes do not appear in Studio, and paid tools answer 403 tool_not_available.
  2. An admin of your organization creates a key in Studio, under Settings > API keys, and accepts the Morphic Terms of Use, including their Developer API section, for the organization. See Create a key.
  3. Call the API with Authorization: Bearer <secret>.

Quick start

Find the project the output should land in, start an image, then wait for it.

export MORPHIC_API_KEY=mor_live_9f2c…   # created once in Studio > Settings > API keys

# 1. Which project should the output land in?
curl -s https://mcp.morphic.com/v1/direct/tools/list_projects \
  -H "Authorization: Bearer $MORPHIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input": {}}'

# 2. Start an image
curl -s https://mcp.morphic.com/v1/direct/tools/generate_image \
  -H "Authorization: Bearer $MORPHIC_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-4411-hero-image" \
  -d '{
        "input": {
          "prompt": "A red vintage bicycle against a pastel wall, soft morning light",
          "aspect_ratio": "16:9",
          "project_id": "01928f4e-5b7c-7d2a-9e11-3c4b5a6d7e8f"
        },
        "webhook_id": "01929a10-0c3d-7f44-8a21-0b1c2d3e4f50",
        "metadata": { "order_id": "4411" }
      }'

# 3. Wait for it (holds up to 45 s, returns the moment it finishes)
curl -s "https://mcp.morphic.com/v1/direct/generations/0192a7b3-…?wait=45" \
  -H "Authorization: Bearer $MORPHIC_API_KEY"

Every generation lands in your organization's Morphic library, in the project you named, as if it had been made in Studio. In Studio it shows as created by API, and the library's Created by > API filter lists everything your API keys made or imported.

Endpoints

MethodPathScopeDoes
GET/v1/direct/menonethe key, its limits and spend, the organization's balance
GET/v1/direct/toolsnonethe tool catalog with JSON Schemas
GET/v1/direct/tools/{tool_name}noneone tool
GET/v1/direct/openapi.jsonnoneOpenAPI 3.1 document
POST/v1/direct/tools/{tool_name}per toolcall a tool
GET/v1/direct/generations/{id}assets:readone generation, optional long-poll
POST/v1/direct/generations/batch-getassets:readup to 10 generations, optional long-poll
GET/v1/direct/usageassets:readledger entries and totals
POST/v1/direct/webhooksgenerations:writeregister an endpoint
GET/v1/direct/webhooksassets:readlist endpoints
DELETE/v1/direct/webhooks/{webhook_id}generations:writeremove an endpoint
GET/v1/direct/webhooks/{webhook_id}/eventsassets:readdelivery log

If you have any trouble or have any questions, feel free to reach out. We're happy to help. Write to us at support@morphic.com.

On this page