Melious
Concepts

Pricing

Energy and credits, how they work on the API, and where to find exact rates

Per-model rates live at melious.ai/pricing — they're the source of truth. This page covers the shape of billing, which has a quirk worth knowing about for API users.

Two currencies: energy and credits

Melious accounts have two spendable balances:

  • Energy — granted by your subscription plan. Refills on a cycle. Web (Studio) usage draws from this by default.
  • Credits — euro-denominated, bought in top-ups or included in some plans. Don't expire unless your account closes.

A request can be paid from either, depending on plan benefits. The response tells you which one was charged:

{
  "billing_cost": {
    "energy": "0.0008",
    "credits": "0.0",
    "paid_with": "energy"
  }
}

paid_with is "energy" or "credits". The non-zero field is what we charged — the other one is zero.

The API-only wrinkle

If your plan doesn't include the api_usage benefit, API requests are paid in credits — not energy — even if your energy balance is positive. This is the most common billing surprise.

The rule in practice:

  • Plans with api_usage — API calls can draw from energy, same as Studio. If energy is exhausted, fall back to credits.
  • Plans without api_usage — API calls are credits_only, even if you have energy left. Energy stays reserved for Studio.

Which plans include it is on melious.ai/pricing. If you need API access without a subscription upgrade, credits are the path — buy a top-up, keep running. There's no subscription minimum to use the API, only a rate-limit difference.

Per-request cost

Response body gives you exact figures in billing_cost and environment_impact. A reasonable shape to log:

response = client.chat.completions.create(model="glm-4.7", messages=[...])

print(
    f"tokens: {response.usage.total_tokens}",
    f"cost_eur: {response.billing_cost.energy or response.billing_cost.credits}",
    f"carbon_g: {response.environment_impact.carbon_g_co2}",
    f"provider: {response.environment_impact.provider_id}",
)

Costs come back as strings (arbitrary-precision decimals) to avoid float-drift on aggregation.

Streaming billing

A streamed response bills once, at the end. The billing chunk is internal — you get the final usage field on the last chunk, and billing_cost / environment_impact are populated there. Your client library's standard "accumulate the stream" pattern covers this.

Batch pricing

/v1/batches runs against the same per-token rates — batch isn't discounted today. The savings with batch come from routing (the :batch flavor picks cheaper providers) and from being outside the per-minute rate limit, not from a dedicated discount.

What isn't billed

A few things are free:

  • GET /v1/models and GET /v1/models/{id} — listing is free, you can poll it.
  • POST /v1/messages/count_tokens — preflight token counts are free.
  • Tool lists (GET /v1/tools) and schema fetches — free.
  • Failed requests that didn't reach a provider. INFERENCE_3104 (no providers available) or early validation errors don't charge.

Failed requests that did reach a provider (INFERENCE_3103) also don't bill — we absorb the cost internally. That's an explicit design choice, not a promise we'd retract quietly.

Refunds and withdrawal

EU consumer law grants a 14-day withdrawal window on subscriptions, within limits. Credits top-ups and consumed services are handled separately. See melious.ai/account/billing for the current policy.

Paying for higher throughput without changing plans: see the :batch flavor in Routing and Batches. Plan benefits that gate advanced models: Authentication. Billing-related errors: Errors.

On this page