Meldport

DOCUMENTATION

Meldport API

Make your first request, generate media, and track usage.

QUICKSTART

Your first request

Choose a published model, create one project API key in the console, and send a request to the shared gateway endpoint. GET /v1/models lists the Meldport model IDs; existing model IDs remain valid for requests.

Base URLhttps://api.meldport.com/v1
chat.shcURL
curl https://api.meldport.com/v1/chat/completions \
  -H "Authorization: Bearer $MELDPORT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: request-123" \
  -d '{
    "model": "YOUR_MODEL_ID",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

AUTHENTICATION

Use a scoped API key

Send the key as a Bearer token. Keys are scoped to a project and can be revoked or rotated from the console without changing your application code.

Keep keys server-side.Never ship a Meldport key in browser JavaScript, mobile bundles, or public repositories.

API KEY POLICY

One key covers the published catalog

A project key created in the dashboard includes catalog reads, LLM inference, image generation, video generation, and audio generation scopes. The model allowlist is intentionally empty, which means every currently published model in that project is available.

Keep the secret server-side.The full key is shown once. Store it in an environment variable, rotate it when exposure is suspected, and revoke old keys from the console. Never paste it into browser code or commit it.
  • Keys are project-scoped and can carry request, daily, spend, and output limits.
  • API keys with a daily spend limit can use fixed-price media only. Actual-cost jobs require a key without a daily spend limit.
  • Existing older keys may still have narrower scopes; create a new all-product key when Media access is needed.
  • Reusing an Idempotency-Key with another payload is rejected rather than creating a second request.

REQUESTS

Request body

The gateway accepts the familiar Chat Completions shape. Model IDs and capabilities are listed in the public model catalog.

FieldTypeRequiredNotes
modelstringYesStable public model ID.
messagesarrayYesOrdered system, user, assistant, or tool messages.
streambooleanNoUse Server-Sent Events when true.
max_tokensintegerNoOutput limit; defaults to 512 when omitted. Requests above 65,536 are capped to 65,536.
max_completion_tokensintegerNoAlternative output limit for clients that include reasoning tokens. The same 65,536 cap applies.
toolsarrayNoTool definitions for models that publish tool support.

In an OpenAI-compatible IDE, set the base URL above, use a published meldport/... model ID, and configure the model's output limit at or below 65,536 tokens. Meldport accepts larger client-advertised limits but runs the request with the supported cap. A key's own output limit can be lower.

Idempotency-Key is recommended for non-stream requests. Reusing a key with a different payload returns a conflict instead of silently creating a second request.

response.jsonJSON
{
  "id": "req_01J...",
  "object": "chat.completion",
  "model": "meldport/qwen3.8-max",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello"
      }
    }
  ],
  "usage": {
    "prompt_tokens": 8,
    "completion_tokens": 3,
    "total_tokens": 11
  }
}
Available · scope: inference:invokeInput, output, and an explicitly published cache rate are billed per 1M tokens. Retry 429 and safely retryable 5xx responses with backoff; never replay a partly delivered stream automatically.

STREAMING

Read the response as events

Streaming responses use Server-Sent Events. Process each data frame in order and treat data: [DONE] as the terminal marker.

stream.shcURL
curl -N https://api.meldport.com/v1/chat/completions \
  -H "Authorization: Bearer $MELDPORT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_MODEL_ID",
    "stream": true,
    "stream_options": {"include_usage": true},
    "messages": [{"role": "user", "content": "Hello"}]
  }'
Streaming is not replayed.If delivery has started, retry only after your client has decided whether the partial response is safe to discard.

IMAGE API

Run an asynchronous image job

List published image configurations, select one by ID, then submit a prompt. The configuration owns its accepted inputs, output types, maximum charge, and retention window. Use the images:generate scope.

image.shcURL
curl https://api.meldport.com/v1/media/configurations \
  -H "Authorization: Bearer $MELDPORT_API_KEY"

# Quote the exact prompt and options before reserving wallet credit
curl -X POST https://api.meldport.com/v1/media/quotes \
  -H "Authorization: Bearer $MELDPORT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"configuration_id":"<published-configuration-id>","prompt":"A quiet studio desk"}'

# Use the same prompt, options and uploaded asset IDs as the quote.
# Include billing_policy_version: actual-cost-v1 when returned by the quote.
# Create a job with a published configuration
curl -X POST https://api.meldport.com/v1/media/jobs \
  -H "Authorization: Bearer $MELDPORT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: media-request-123" \
  -d '{"configuration_id":"<published-configuration-id>","prompt":"A quiet studio desk","accepted_customer_price_microusd":"<customer_price_microusd from quote>","accepted_maximum_reservation_microusd":"<maximum_reservation_microusd from quote>"}'

# Poll the job until it is succeeded or failed
curl https://api.meldport.com/v1/media/jobs/<job-id> \
  -H "Authorization: Bearer $MELDPORT_API_KEY"
job.jsonJSON
{
  "job": {
    "id": "8f05b647-1a44-4f13-9a4e-7be283221ad2",
    "configuration_id": "e06a4324-3b43-4c55-ae84-c6a9b6a6d452",
    "state": "queued",
    "billing_state": "held",
    "maximum_charge_microusd": "125000",
    "output_asset_id": null
  },
  "idempotent": false
}
Jobs are asynchronous and settled before download.List configurations first, upload private input assets when the configuration requires them, create an idempotent job, then poll its safe state. A download URL is issued only for a settled output owned by the same project. Internal task IDs, routing URLs, and credentials never appear in the customer response. A repeated Idempotency-Key replays the same compatible job; a new key intentionally requests a new (stochastic) generation even when its prompt and options match an earlier job.
Use catalog records as a reference.The image catalog distinguishes a reference record from an available configuration. Missing values stay marked as not listed, and a catalog record cannot receive traffic until its Meldport configuration is published.

VIDEO API

Submit once, then follow the job state

Video uses /v1/media/jobs with a published video configuration and the videos:generate scope. A create call returns a job, not a finished file. Poll the job until it reaches a terminal state, then request its project-owned output.

video.shcURL
curl https://api.meldport.com/v1/media/configurations \
  -H "Authorization: Bearer $MELDPORT_API_KEY"

# Quote the exact prompt and options before reserving wallet credit
curl -X POST https://api.meldport.com/v1/media/quotes \
  -H "Authorization: Bearer $MELDPORT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"configuration_id":"<published-configuration-id>","prompt":"A quiet studio desk"}'

# Use the same prompt, options and uploaded asset IDs as the quote.
# Include billing_policy_version: actual-cost-v1 when returned by the quote.
# Create a job with a published configuration
curl -X POST https://api.meldport.com/v1/media/jobs \
  -H "Authorization: Bearer $MELDPORT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: media-request-123" \
  -d '{"configuration_id":"<published-configuration-id>","prompt":"A quiet studio desk","accepted_customer_price_microusd":"<customer_price_microusd from quote>","accepted_maximum_reservation_microusd":"<maximum_reservation_microusd from quote>"}'

# Poll the job until it is succeeded or failed
curl https://api.meldport.com/v1/media/jobs/<job-id> \
  -H "Authorization: Bearer $MELDPORT_API_KEY"
Available only for a published configuration.The maximum charge is reserved before work starts and the actual published price settles after success. Reuse the same Idempotency-Key only for the same payload. Retry safe polling requests with backoff; do not submit another generation job just because polling timed out.

AUDIO API

Generate with a published audio configuration

List configurations and select one with modality audio. Quote your exact text with POST /v1/media/quotes, then submit POST /v1/media/jobs with the audio:generate scope. Supply required options such as voice, and accept actual-cost billing when the configuration requires it. Poll the job and download the settled output.

A catalog entry alone cannot receive traffic.Only a published configuration on the Audio models page is usable. A model without one remains a reference record; no paid generation is used by the automatic publication check.

Model API references

This index uses the current published catalog. Each model page contains its request example, capabilities and prices. Media pages list every published configuration, its options and its exact API configuration ID.

ModelAPIRequest reference
MiniMax M2.7
meldport/minimax-m2.7
POST /v1/chat/completionsParameters, examples and pricing
Kimi K2.7 Code
meldport/kimi-k2.7
POST /v1/chat/completionsParameters, examples and pricing
MiniMax M3
meldport/minimax-m3
POST /v1/chat/completionsParameters, examples and pricing
Gemini 4 Argon
meldport/gemini-4-argon
POST /v1/chat/completionsParameters, examples and pricing
DeepSeek V4.1 Flash
meldport/deepseek-v4.1-flash
POST /v1/chat/completionsParameters, examples and pricing
claude-sonnet-5
meldport/claude-sonnet-5
POST /v1/chat/completionsParameters, examples and pricing
DeepSeek V3.2 (Kiro)
meldport/deepseek-3.2-kiro
POST /v1/chat/completionsParameters, examples and pricing
Claude Opus 4.8
meldport/claude-opus-4.8
POST /v1/chat/completionsParameters, examples and pricing
Claude Opus 5
meldport/claude-opus-5
POST /v1/chat/completionsParameters, examples and pricing
Claude Sonnet 5.5
meldport/claude-sonnet-5.5
POST /v1/chat/completionsParameters, examples and pricing
Qwen3 Coder Next (Kiro)
meldport/qwen3-coder-next-kiro
POST /v1/chat/completionsParameters, examples and pricing
claude-haiku-4.5
meldport/claude-haiku-4.5
POST /v1/chat/completionsParameters, examples and pricing
DeepSeek V4 Flash 0731
meldport/deepseek-v4-flash-0731-alicn
POST /v1/chat/completionsParameters, examples and pricing
Kimi K2.7 Code HighSpeed
meldport/kimi-k2.7-code-highspeed
POST /v1/chat/completionsParameters, examples and pricing
MiniMax M2.5 HighSpeed
meldport/minimax-m2.5-highspeed
POST /v1/chat/completionsParameters, examples and pricing
MiniMax M3.1 Flash Preview
meldport/minimax-m3.1-flash-preview
POST /v1/chat/completionsParameters, examples and pricing
MiniMax M2.7 HighSpeed
meldport/minimax-m2.7-highspeed
POST /v1/chat/completionsParameters, examples and pricing
MiniMax M2.1 HighSpeed
meldport/minimax-m2.1-highspeed
POST /v1/chat/completionsParameters, examples and pricing
MiniMax M2
meldport/minimax-m2
POST /v1/chat/completionsParameters, examples and pricing
MiniMax M3.1 Flash
meldport/minimax-m3.1-flash
POST /v1/chat/completionsParameters, examples and pricing
MiniMax M2.1
meldport/minimax-m2.1
POST /v1/chat/completionsParameters, examples and pricing
DeepSeek V4.1 Flash Fast
meldport/deepseek-v4.1-flash-fast
POST /v1/chat/completionsParameters, examples and pricing
MiMo V2.6 Flash
meldport/mimo-v2.6-flash
POST /v1/chat/completionsParameters, examples and pricing
Qwen3.7 Max
meldport/qwen3.7-max
POST /v1/chat/completionsParameters, examples and pricing
MiMo V2.6 Pro
meldport/mimo-v2.6-pro
POST /v1/chat/completionsParameters, examples and pricing
Mistral Large 4
meldport/mistral-large-4
POST /v1/chat/completionsParameters, examples and pricing
Qwen3.7 Plus
meldport/qwen3.7-plus
POST /v1/chat/completionsParameters, examples and pricing
GLM 5.3 FlashX
meldport/glm-5.3-flashx
POST /v1/chat/completionsParameters, examples and pricing
LongCat 2.0
meldport/longcat-2.0
POST /v1/chat/completionsParameters, examples and pricing
Grok 4.7 Fast
meldport/grok-4.7-build-fast
POST /v1/chat/completionsParameters, examples and pricing
Grok 4.7
meldport/grok-4.7
POST /v1/chat/completionsParameters, examples and pricing
Kimi K3.1 Pro HighSpeed
meldport/kimi-k3.1-pro-highspeed
POST /v1/chat/completionsParameters, examples and pricing
Kimi For Coding (K2.8 Preview)
meldport/kimi-for-coding
POST /v1/chat/completionsParameters, examples and pricing
Kimi K3.1 Pro
meldport/kimi-k3.1-pro
POST /v1/chat/completionsParameters, examples and pricing
Kimi For Coding HighSpeed (K2.7 Code)
meldport/kimi-for-coding-highspeed
POST /v1/chat/completionsParameters, examples and pricing
Muse Spark 1.2
meldport/muse-spark-1.2
POST /v1/chat/completionsParameters, examples and pricing
Claude Sonnet 4.6
meldport/claude-sonnet-4.6
POST /v1/chat/completionsParameters, examples and pricing
MiniMax M2.5
meldport/minimax-m2.5
POST /v1/chat/completionsParameters, examples and pricing
Qwen3.8 Flash
meldport/qwen3.8-flash
POST /v1/chat/completionsParameters, examples and pricing
GPT 6.1 Sol
meldport/gpt-6.1-sol
POST /v1/chat/completionsParameters, examples and pricing
GPT 6 Astra
meldport/gpt-6-astra
POST /v1/chat/completionsParameters, examples and pricing
Claude Opus 4.1
meldport/claude-opus-4.1
POST /v1/chat/completionsParameters, examples and pricing
claude-sonnet-4.5
meldport/claude-sonnet-4.5
POST /v1/chat/completionsParameters, examples and pricing
GPT-6 Astra Pro
meldport/gpt-6-astra-pro
POST /v1/chat/completionsParameters, examples and pricing
GPT-6.1 Sol Pro
meldport/gpt-6.1-sol-pro
POST /v1/chat/completionsParameters, examples and pricing
GPT-6 Luna Pro
meldport/gpt-6-luna-pro
POST /v1/chat/completionsParameters, examples and pricing
GPT-6 Sol Pro
meldport/gpt-6-sol-pro
POST /v1/chat/completionsParameters, examples and pricing
Claude Opus 4.7 (1M)
meldport/claude-opus-4.7
POST /v1/chat/completionsParameters, examples and pricing
Claude Opus 4.5
meldport/claude-opus-4.5
POST /v1/chat/completionsParameters, examples and pricing
Claude Opus 4.6
meldport/claude-opus-4.6
POST /v1/chat/completionsParameters, examples and pricing
Claude Haiku 5.5
meldport/claude-haiku-5.5
POST /v1/chat/completionsParameters, examples and pricing
GPT 6.1 Terra
meldport/gpt-6.1-terra
POST /v1/chat/completionsParameters, examples and pricing
GPT 6 Sol
meldport/gpt-6-sol
POST /v1/chat/completionsParameters, examples and pricing
GLM 5.3 Flash
meldport/glm-5.3-flash
POST /v1/chat/completionsParameters, examples and pricing
Muse Wonder 1.0
meldport/muse-wonder-1.0
POST /v1/chat/completionsParameters, examples and pricing
Muse Spark 1.1
meldport/muse-spark-1.1
POST /v1/chat/completionsParameters, examples and pricing
Gemini 3.1 Pro
meldport/gemini-3.1-pro
POST /v1/chat/completionsParameters, examples and pricing
GPT 5.3 Codex
meldport/gpt-5.3-codex
POST /v1/chat/completionsParameters, examples and pricing
Gemini 2.5 Flash Image
meldport/gemini-2.5-flash-image
POST /v1/chat/completionsParameters, examples and pricing
Qwen3.8 27B
meldport/qwen3.8-27b
POST /v1/chat/completionsParameters, examples and pricing
glm-5.2
meldport/glm-5.2
POST /v1/chat/completionsParameters, examples and pricing
GLM 5.3
meldport/glm-5.3
POST /v1/chat/completionsParameters, examples and pricing
Qwen3.8 Omni Flash
meldport/qwen3.8-omni-flash
POST /v1/chat/completionsParameters, examples and pricing
Qwen 3.8 Max
meldport/qwen3.8-max
POST /v1/chat/completionsParameters, examples and pricing
Kimi K3 (256K)
meldport/k3-256k-kc
POST /v1/chat/completionsParameters, examples and pricing
GLM-5.1 (flagship)
meldport/glm-5.1
POST /v1/chat/completionsParameters, examples and pricing
GLM-4.6V (vision)
meldport/glm-4.6v
POST /v1/chat/completionsParameters, examples and pricing
Qwen3.8 2.4T-A95B
meldport/qwen3.8-2.4t-a95b
POST /v1/chat/completionsParameters, examples and pricing
Qwen3.8 Max 0902
meldport/qwen3.8-max-0902
POST /v1/chat/completionsParameters, examples and pricing
DeepSeek V4 Pro 0813
meldport/deepseek-v4-pro-0813-ali
POST /v1/chat/completionsParameters, examples and pricing
DeepSeek V4 Flash
meldport/deepseek-v4-flash
POST /v1/chat/completionsParameters, examples and pricing
DeepSeek V4 Pro
meldport/deepseek-v4-pro
POST /v1/chat/completionsParameters, examples and pricing
Muse Spark 1.2 Contributor
meldport/muse-spark-1.2-contributor
POST /v1/chat/completionsParameters, examples and pricing
Grok 4.5
meldport/grok-4.5
POST /v1/chat/completionsParameters, examples and pricing
Claude Opus 4.6
meldport/claude-opus-4.6-thinking
POST /v1/chat/completionsParameters, examples and pricing
claude-fable-5
meldport/claude-fable-5
POST /v1/chat/completionsParameters, examples and pricing
Claude Fable 5.1
meldport/claude-fable-5.1
POST /v1/chat/completionsParameters, examples and pricing
Kimi K3 (256K)
meldport/k3-256k-kcai
POST /v1/chat/completionsParameters, examples and pricing
GPT 5.6 Sol
meldport/gpt-5.6-sol
POST /v1/chat/completionsParameters, examples and pricing
Terra
meldport/gpt-5.6-terra
POST /v1/chat/completionsParameters, examples and pricing
Kimi K3
meldport/kimi-k3
POST /v1/chat/completionsParameters, examples and pricing
DeepSeek V4.1 Flash 1017
meldport/deepseek-v4.1-flash-1017
POST /v1/chat/completionsParameters, examples and pricing
Kimi K2.7 Code
meldport/kimi-k2.7-code
POST /v1/chat/completionsParameters, examples and pricing
DeepSeek V4 Pro 0813
meldport/deepseek-v4-pro-0813-alicn
POST /v1/chat/completionsParameters, examples and pricing
Kimi K2.6
meldport/kimi-k2.6
POST /v1/chat/completionsParameters, examples and pricing
GPT 5.6 Luna
meldport/gpt-5.6-luna
POST /v1/chat/completionsParameters, examples and pricing
DeepSeek V4 Flash 0731
meldport/deepseek-v4-flash-0731-ali
POST /v1/chat/completionsParameters, examples and pricing
Kimi K2.5
meldport/kimi-k2.5
POST /v1/chat/completionsParameters, examples and pricing
Hy3
meldport/hy3
POST /v1/chat/completionsParameters, examples and pricing
Gemini 4 Argon Contributor
meldport/gemini-4-argon-contributor
POST /v1/chat/completionsParameters, examples and pricing
MiMo V2.5
meldport/mimo-v2.5
POST /v1/chat/completionsParameters, examples and pricing
Step 5 Preview
meldport/step-5-preview
POST /v1/chat/completionsParameters, examples and pricing
Space Bunny
meldport/space-bunny
POST /v1/chat/completionsParameters, examples and pricing
Kimi K2.8 Preview
meldport/kimi-k2.8-preview
POST /v1/chat/completionsParameters, examples and pricing
GPT 6 Luna
meldport/gpt-6-luna
POST /v1/chat/completionsParameters, examples and pricing
Gemini 3.8 Flash
meldport/gemini-3.8-flash
POST /v1/chat/completionsParameters, examples and pricing
Muse Spark 1.3 Contributor
meldport/muse-spark-1.3-contributor
POST /v1/chat/completionsParameters, examples and pricing
Fish Audio S2.1 ProPOST /v1/media/jobs
text to audio
Configurations and request examples
HeyGen Voice 1.0POST /v1/media/jobs
text to audio
Configurations and request examples
HeyGen Voice 1.0 TurboPOST /v1/media/jobs
text to audio
Configurations and request examples
MiniMax Music 2.6POST /v1/media/jobs
text to audio
Configurations and request examples
MiniMax Speech 2.8POST /v1/media/jobs
text to audio
Configurations and request examples
Qwen3-TTS 1.7B CustomVoicePOST /v1/media/jobs
text to audio
Configurations and request examples
xAI Text-to-SpeechPOST /v1/media/jobs
text to audio
Configurations and request examples
Bria 3.2POST /v1/media/jobs
text to image
Configurations and request examples
Bria FIBO 2.0POST /v1/media/jobs
text to image
Configurations and request examples
Bria FIBO 2.0 EditPOST /v1/media/jobs
image to image
Configurations and request examples
Bria FIBO LitePOST /v1/media/jobs
text to image
Configurations and request examples
FLUX 3 ImagePOST /v1/media/jobs
text to image, image to image
Configurations and request examples
FLUX.1 Kontext [max]POST /v1/media/jobs
text to image, image to image
Configurations and request examples
FLUX.1 Kontext [pro]POST /v1/media/jobs
text to image, image to image
Configurations and request examples
FLUX.1.1 [pro]POST /v1/media/jobs
text to image
Configurations and request examples
FLUX.1.1 [pro] UltraPOST /v1/media/jobs
text to image
Configurations and request examples
FLUX.2 [flex]POST /v1/media/jobs
text to image
Configurations and request examples
FLUX.2 [max]POST /v1/media/jobs
text to image
Configurations and request examples
FLUX.2 [pro]POST /v1/media/jobs
text to image
Configurations and request examples
Grok Imagine ImagePOST /v1/media/jobs
text to image
Configurations and request examples
Grok Imagine Image 2.0POST /v1/media/jobs
text to image
Configurations and request examples
Ideogram 2.0POST /v1/media/jobs
text to image
Configurations and request examples
Ideogram 2.0 RemixPOST /v1/media/jobs
image to image
Configurations and request examples
Ideogram 2aPOST /v1/media/jobs
text to image
Configurations and request examples
Ideogram 2a RemixPOST /v1/media/jobs
image to image
Configurations and request examples
Ideogram 3.0POST /v1/media/jobs
text to image
Configurations and request examples
Ideogram 3.0 RemixPOST /v1/media/jobs
image to image
Configurations and request examples
Ideogram 4.0POST /v1/media/jobs
text to image
Configurations and request examples
Ideogram 4.0qPOST /v1/media/jobs
text to image
Configurations and request examples
Ideogram 4.5POST /v1/media/jobs
image to image, text to image
Configurations and request examples
Ideogram 4.5 Precise EditPOST /v1/media/jobs
image to image
Configurations and request examples
ImagineArt 1.5POST /v1/media/jobs
text to image
Configurations and request examples
ImagineArt 1.5 ProPOST /v1/media/jobs
text to image
Configurations and request examples
ImagineArt 2.0POST /v1/media/jobs
text to image, image to image
Configurations and request examples
Kling IMAGE 3.0POST /v1/media/jobs
image to image, text to image
Configurations and request examples
Kling IMAGE O1POST /v1/media/jobs
image to image, text to image
Configurations and request examples
Kling IMAGE O3POST /v1/media/jobs
image to image, text to image
Configurations and request examples
Krea 2 LargePOST /v1/media/jobs
text to image, image to image
Configurations and request examples
Krea 2 MediumPOST /v1/media/jobs
image to image, text to image
Configurations and request examples
Krea 2 Medium TurboPOST /v1/media/jobs
text to image
Configurations and request examples
Krea 2 RawPOST /v1/media/jobs
text to image, image to image
Configurations and request examples
Krea 2 TurboPOST /v1/media/jobs
image to image, text to image
Configurations and request examples
Muse ImagePOST /v1/media/jobs
image to image, text to image
Configurations and request examples
P-ImagePOST /v1/media/jobs
text to image
Configurations and request examples
P-Image-EditPOST /v1/media/jobs
image to image
Configurations and request examples
P-Image-IdeogramPOST /v1/media/jobs
text to image
Configurations and request examples
Qwen-Image-2.0POST /v1/media/jobs
image to image, text to image
Configurations and request examples
Qwen-Image-2.0-ProPOST /v1/media/jobs
text to image, image to image
Configurations and request examples
Qwen-Image-2.1-ProPOST /v1/media/jobs
image to image, text to image
Configurations and request examples
Qwen-Image-2.1-TurboPOST /v1/media/jobs
text to image, image to image
Configurations and request examples
Qwen-Image-3.0POST /v1/media/jobs
text to image
Configurations and request examples
Qwen-Image-3.0-ProPOST /v1/media/jobs
text to image
Configurations and request examples
Qwen-Image-Edit-2511POST /v1/media/jobs
image to image
Configurations and request examples
Recraft V4POST /v1/media/jobs
text to image
Configurations and request examples
Recraft V4 ProPOST /v1/media/jobs
text to image
Configurations and request examples
Recraft V4.1POST /v1/media/jobs
text to image
Configurations and request examples
Recraft V4.1 FlashPOST /v1/media/jobs
text to image
Configurations and request examples
Recraft V4.1 ProPOST /v1/media/jobs
text to image
Configurations and request examples
Recraft V4.1 UtilityPOST /v1/media/jobs
text to image
Configurations and request examples
Recraft V4.1 Utility ProPOST /v1/media/jobs
text to image
Configurations and request examples
Runway Gen-4 ImagePOST /v1/media/jobs
image to image, text to image
Configurations and request examples
Runway Gen-4 Image TurboPOST /v1/media/jobs
image to image
Configurations and request examples
Seedream 4.0POST /v1/media/jobs
image to image, text to image
Configurations and request examples
Seedream 4.5POST /v1/media/jobs
text to image, image to image
Configurations and request examples
Seedream 5.0 FlashPOST /v1/media/jobs
text to image, image to image
Configurations and request examples
Seedream 5.0 LitePOST /v1/media/jobs
image to image, text to image
Configurations and request examples
Seedream 5.0 ProPOST /v1/media/jobs
text to image
Configurations and request examples
UNI-1POST /v1/media/jobs
text to image
Configurations and request examples
UNI-1 MaxPOST /v1/media/jobs
text to image
Configurations and request examples
Vidu Q1POST /v1/media/jobs
image to image
Configurations and request examples
Wan2.5-Preview ImagePOST /v1/media/jobs
text to image
Configurations and request examples
Wan2.6 ImagePOST /v1/media/jobs
text to image, image to image
Configurations and request examples
Wan2.7 ImagePOST /v1/media/jobs
image to image, text to image
Configurations and request examples
Wan2.7 Image ProPOST /v1/media/jobs
text to image, image to image
Configurations and request examples
Grok Imagine VideoPOST /v1/media/jobs
image to video, text to video
Configurations and request examples
LTX-2POST /v1/media/jobs
image to video
Configurations and request examples
MiniMax 01 LivePOST /v1/media/jobs
image to video
Configurations and request examples
MiniMax H3 Max TurboPOST /v1/media/jobs
image to video
Configurations and request examples
MiniMax Hailuo 2.3POST /v1/media/jobs
text to video, image to video
Configurations and request examples
Runway Gen-4 TurboPOST /v1/media/jobs
image to video
Configurations and request examples
Vidu 2.0POST /v1/media/jobs
image to video
Configurations and request examples
Vidu Q1POST /v1/media/jobs
image to video, text to video
Configurations and request examples
Vidu Q1 ClassicPOST /v1/media/jobs
image to video
Configurations and request examples
Vidu Q2 ProPOST /v1/media/jobs
image to video
Configurations and request examples
Vidu Q2 TurboPOST /v1/media/jobs
image to video
Configurations and request examples
Wan2.6POST /v1/media/jobs
text to video, image to video
Configurations and request examples

Upload an input image

Image editing and image-to-video configurations need an uploaded input asset. Upload and generate with the same API key and project. An asset uploaded in the browser session cannot be used as an API-key input.

Read input_requirements, max_input_bytes and allowed_options from GET /v1/media/configurations. They define the input dimensions, prompt limits, required voice and other permitted options for the selected configuration. The example uploads one PNG and does not generate anything.

upload.mjsJavaScript
import {readFile} from "node:fs/promises";
import {createHash} from "node:crypto";
const api = "https://api.meldport.com";
const key = process.env.MELDPORT_API_KEY;
const image = await readFile("./input.png");
const response = await fetch(api + "/v1/media/assets/upload-url", {
  method: "POST", headers: {Authorization: `Bearer ${key}`, "Content-Type": "application/json"},
  body: JSON.stringify({configuration_id: "YOUR_CONFIGURATION_ID", modality: "image",
    content_type: "image/png", size_bytes: image.length,
    sha256: createHash("sha256").update(image).digest("hex")})
});
const upload = await response.json();
if (!response.ok) throw new Error(JSON.stringify(upload.error));
const stored = await fetch(upload.upload_url, {method: "PUT", headers: {"Content-Type": "image/png"}, body: image});
if (stored.status !== 201) throw new Error(`Upload failed: ${stored.status}`);
console.log(upload.asset_id);

For an image-to-video configuration, set modality to video. The file remains an image. Use the returned asset_id in input_asset_ids for both the quote and the job.

Poll and download the result

Keep the job ID returned by the create request. Poll that job with backoff. A new job ID or idempotency key starts a separate paid generation.

result.mjsJavaScript
const api = "https://api.meldport.com";
const key = process.env.MELDPORT_API_KEY;
const id = process.env.MELDPORT_JOB_ID;
const headers = {Authorization: `Bearer ${key}`};
const response = await fetch(api + "/v1/media/jobs/" + id, {headers});
const result = await response.json();
if (!response.ok) throw new Error(JSON.stringify(result.error));
if (result.job.state === "succeeded" && result.job.billing_state === "settled") {
  const response = await fetch(api + "/v1/media/jobs/" + id + "/download-url", {method: "POST", headers});
  const ticket = await response.json();
  if (!response.ok) throw new Error(JSON.stringify(ticket.error));
  console.log(new URL(ticket.download_url, api).href);
} else {
  console.log(result.job.state, result.job.error_code);
}

A failed job releases its hold once failure is verified. A reconciling job has an unresolved provider, output or billing state. Continue checking the same job. Signed download URLs expire; request a fresh link for the existing job instead of generating again.

MODELS

A catalog record is not automatically available

Meldport uses one identity, project hierarchy, and USD service-credit wallet while keeping each product contract separate.

SurfaceAvailable nowHow it works
LLM GatewayYes, for published modelsChat Completions requests, streaming, tools, and usage.
Image, video, and audioOnly when a verified configuration is publishedAPI-first async jobs, private assets, polling, and signed delivery.
GPU ComputePlanned, not provisionableFuture whole-server SSH profile after contract and reliability gates.
Use the API or Generation workspace.The Generation workspace uses your signed-in project and wallet. Server applications use a scoped API key. Both follow the same configuration, quote, job and settlement contract. Keep keys on your server and use the Meldport job ID to track a result.

Variable media charges

Call POST /v1/media/quotes with the same configuration, prompt, options, and input assets before submitting a job. Copy its exact customer_price_microusd and maximum_reservation_microusd values into the job fields accepted_customer_price_microusd and accepted_maximum_reservation_microusd. If either amount changes, the API rejects the job so you can quote and accept the current values again. For speech models priced per character or UTF-8 byte, the quote uses the exact text length. It does not reserve credit or start a generation. A required voice appears in the configuration's allowed options and must be supplied as options.voice. If the input requirements specify billing_policy_version: actual-cost-v1, the displayed quote is an initial reservation, not a fixed final price. Quote again if the configuration or text changes.

To accept this billing policy, send "billing_policy_version": "actual-cost-v1" in the job request. Without consent, the request is rejected before generation. Final pricing is the recorded generation cost plus the configuration markup saved when the request was accepted, rounded up to one micro-USD.

Unused reserved credit is released. An additional charge is recorded in wallet history if the final amount is higher. Your wallet can reach at most -$0.10 across all completed jobs; new paid requests require sufficient available credit. Top-ups repay an outstanding balance first.

Poll the job for billing_adjustment: total charge, additional charge, and released credit, all in micro-USD. A confirmed failed generation releases its hold. An uncertain provider outcome stays pending reconciliation; retry the same idempotency key rather than creating another generation.

GPU COMPUTE · PLANNED

Compute is discovery-only for now

GPU compute is not available yet. Check the Compute page for availability.

No compute traffic or provisioning is available.Browse the published model catalog for available API routes, or contact support if you want a launch notification. No ETA, capacity promise, or region list is implied.

ERRORS AND RETRIES

Handle request states and retries

Errors are JSON responses with a stable type and code. Keep the request ID when opening a support ticket.

Log the request ID, not the credential.Record the response status, stable error code, and x-request-id. Never include API keys, prompts, or customer content in a support ticket unless support explicitly asks for a redacted sample.
StatusMeaningWhat to do
401Missing or invalid API key.Check the Bearer token and project scope.
402No selected funding source can cover the hold.Top up PAYG credit or buy value for the exact model.
403Account, policy, or model access is not eligible.Review the console state before retrying.
409Idempotency key was reused with another payload.Use a new key for a new request.
429Rate or capacity limit.Respect Retry-After when present.
5xxTemporary gateway or upstream failure.Retry only when the response is safely retryable.

PAY AS YOU GO

Settle the actual request against wallet credit

Prices are shown per model in the catalog. Input, output, and cache usage are recorded in the wallet ledger with a request ID for reconciliation.

  • x-request-id identifies the request across support and usage views.
  • x-meldport-request-status exposes the safe terminal or in-progress state.
  • x-meldport-funding records the selected wallet, promo, or package source.
  • Model pricing is the customer-facing source of truth before traffic is sent.
  • Admin analytics reports gateway customer charge, recorded cost, gross margin, request volume, and success rate. It does not collect visitor page-view profiles.

MODEL PACKAGES

Prepay value for one exact model

Send X-Meldport-Funding as wallet, promo, package, or auto. Auto checks an eligible promotion, then an exact-model package, then wallet credit when the API key allows fallback.

  • PAYG wallet charges use the active price version recorded on the request.
  • A model ending in :free always uses a matching promotion allowance. It never falls back to wallet or package value. Remove the suffix to use the paid model ID.
  • Monthly free allowances share one input-and-output token pool and reset at 00:00 UTC on the first day of each month. Launch grants are claimed once and use the displayed expiry date.
  • Model Package value is usable only for its stable model ID and expires on the displayed date.
  • Input, output, and cache usage debit their actual micro-USD customer charge, not a combined raw-token counter.
  • package_allowance_unavailable means no active exact-model value can cover the request bound.

A package-funded request reserves its maximum customer charge. Settlement returns unused value. Concurrent requests cannot reserve more than the remaining allowance.

See current offers and expiry terms on the Model Packages page. Use X-Meldport-Funding: package to require package value, or auto to allow the documented fallback order.

LIMITS

Bound traffic at the project and key level

Keys can carry request, daily, spend, and maximum-output limits. The strictest active account, project, key, and route rule wins. Limits are checked before a hold is placed.

  • A 429 response is safe to retry only after the indicated delay or client backoff.
  • A validation error is not transient; correct the model, capability, payload size, or output limit before retrying.
  • Streaming and media retain their own concurrency and output boundaries. Do not infer one product limit from another.

WEBHOOKS · UNAVAILABLE

Polling is the only published media completion contract

Meldport does not currently accept customer webhook destinations or sign completion callbacks. Poll /v1/media/jobs/:id with backoff. No callback URL, signing secret, or event name is valid until it appears in this section and the OpenAPI contract.

CHANGELOG AND AVAILABILITY

Contract changes are recorded with readiness

Last updated: 2026-11-01

DateChangeAvailability
2026-10-04Added media preflight quotes and text-length pricing for eligible published speech configurations.Available only for published configurations
2026-09-18Added free-model funding guidance, exact-model package controls, and safer support logging guidance.Available for published offers
2026-09-12PAYG and exact-model value funding documented separately; catalog metadata no longer implies an active route.Available where a route or configuration is published
2026-09-12Audio requests and customer webhooks were withheld at that stage.Historical state; webhooks remain unavailable