DocsOpen Moon AI
Browse the docs

Models

Reference for GET /v1/models: the models your key can call, with their type, their endpoints, their prices in credits and what each one accepts.

On this page

GET /v1/models returns the catalog in the OpenAI API format, plus each model’s type and its prices in credits. The list follows the Moon AI catalog: read it instead of hard-coding IDs in your code.

HTTP
GET https://api.realmoon.ai/v1/models
GET https://api.realmoon.ai/v1/models?type=image
  • Authentication: an sk-moon-… key with the inference scope (see Authentication).
  • Response: a list object whose data holds the models, chat models first, sorted by ID, then media models.
  • Billing: none.

ParameterLink to the Parameter section

ParameterTypeRequiredDescription
typestringnoKeeps only one type: chat, image, video, speech, transcription, embedding or ocr. An unknown type returns an empty list.

ExampleLink to the Example section

cURL
curl https://api.realmoon.ai/v1/models \
  -H "Authorization: Bearer $MOONAI_API_KEY"

curl "https://api.realmoon.ai/v1/models?type=image" \
  -H "Authorization: Bearer $MOONAI_API_KEY"
Python
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.realmoon.ai/v1", api_key=os.environ["MOONAI_API_KEY"])

for model in client.models.list():
    info = model.model_dump()
    print(info["id"], info.get("type"), info.get("pricing"))

images = client.models.list(extra_query={"type": "image"})
print([m.id for m in images])
JavaScript
import OpenAI from 'openai';

const client = new OpenAI({ baseURL: 'https://api.realmoon.ai/v1', apiKey: process.env.MOONAI_API_KEY });

const all = await client.models.list();
for (const model of all.data) console.log(model.id, model.type, model.pricing);

const images = await client.models.list({ query: { type: 'image' } });
console.log(images.data.map((m) => m.id));

ResponseLink to the Response section

Response
{
  "object": "list",
  "data": [
    {
      "id": "anthropic/claude-haiku-4.5",
      "object": "model",
      "created": 1777593600,
      "name": "Claude Haiku 4.5",
      "owned_by": "moon-ai",
      "pricing": {
        "prompt_credits_per_1m": 7000,
        "completion_credits_per_1m": 35000,
        "unit": "credits",
        "per": "1M_tokens"
      },
      "context_length": 200000,
      "type": "chat",
      "endpoints": ["/v1/chat/completions"],
      "types": ["chat"]
    },
    {
      "id": "google/gemini-3.1-flash-image",
      "object": "model",
      "created": 1793577600,
      "name": "Nano Banana 2 (Gemini 3.1 Flash Image)",
      "owned_by": "moon-ai",
      "type": "image",
      "endpoints": ["/v1/images/generations", "/v1/images/edits"],
      "hosting": "provider",
      "pricing": {
        "unit": "image",
        "credits_per_unit": 469,
        "max_credits_per_unit": 1155,
        "billing": "real_cost",
        "variants": [
          { "name": "1K", "credits_per_unit": 469, "max_credits_per_unit": 525 },
          { "name": "2K", "credits_per_unit": 707, "max_credits_per_unit": 770 },
          { "name": "4K", "credits_per_unit": 1057, "max_credits_per_unit": 1155 }
        ]
      },
      "aspect_ratios": ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "21:9"],
      "image_sizes": ["1K", "2K", "4K"],
      "max_input_images": 8,
      "output_format": "png",
      "types": ["image"]
    }
  ]
}

The list objectLink to the The list object section

FieldTypeDescription
objectstringAlways list.
dataarrayThe models. No pagination: the list is complete.

Fields common to all modelsLink to the Fields common to all models section

FieldTypeDescription
idstringThe ID to pass in model.
objectstringAlways model.
createdintegerTimestamp in Unix seconds: the model’s date or, if there is none, a fixed date.
namestringHuman-readable name.
owned_bystringAlways moon-ai: the model is served by Moon AI.
typestringThe model’s main type.
typesarrayAll of its types: the same ID can serve several endpoints.
endpointsarrayThe endpoints to call for this model.
pricingobjectPrices in credits, see below.
media_pricingobjectFor a model that serves several types: the price of each type other than the first, keyed by type.

Chat models (chat)Link to the Chat models (chat) section

FieldTypeDescription
pricing.prompt_credits_per_1mintegerCredits per million input tokens.
pricing.completion_credits_per_1mintegerCredits per million output tokens, reasoning included.
pricing.unit, pricing.perstringcredits and 1M_tokens.
context_lengthintegerContext window in tokens, when it is known.

Models hosted by Moon AI have the same input and output price. A model that reads images, audio or files charges for them at its own rates; the exact cost of each request is available from /v1/generation.

Media modelsLink to the Media models section

Every media model has:

FieldTypeDescription
hostingstringfr if the model runs on our servers in France, provider if its provider serves it.
pricing.unitstringThe billed unit, see the next table.
pricing.credits_per_unitnumberThe price of one unit. For a video, the model’s lowest price per second.
pricing.billingstringreal_cost (actual cost reported by the provider), per_character (per character) or flat (fixed price per unit).

Fields specific to each type:

Typepricing.unitSpecific fields
imageimagepricing.max_credits_per_unit (the most one image can cost, which is what the request holds), pricing.variants (price per size 1K, 2K, 4K), pricing.credits_per_input_image, aspect_ratios, image_sizes, max_input_images (0: no editing), output_format (png or svg)
videosecondpricing.variants per resolution (with credits_per_unit_without_audio, credits_per_unit_from_image), pricing.credits_per_input_image, durations, resolutions, aspect_ratios, audio, first_frame, last_frame
speech1M_charactersmax_characters, response_formats, default_voice
transcriptionminutemax_file_mb. The price per minute can be a decimal.
embedding1M_tokenspricing.prompt_credits_per_1m (same value) and pricing.completion_credits_per_1m (0), dimensions, custom_dimensions, context_length
ocrpagemax_pages, max_file_mb

Each type is covered in detail in Images, Videos, Audio, Embeddings and OCR.

Which models are servedLink to the Which models are served section

  • The models that are active and open to everyone in Moon AI: the major models on the market (OpenAI, Anthropic, Google, Mistral, Meta, DeepSeek, Qwen…) and Moon AI’s in-house models, such as Moon 6, when they are public.
  • Never a model with restricted access, an agent, or a workspace’s private model.
  • Never a model whose price is not known, or a model that runs paid web searches on every request: their cost cannot be capped in advance.
  • In a managed organization, the models its rules refuse are removed from the list.

An ID that is not in the list returns 404 model_not_found. Retrieving a single model (GET /v1/models/{id}) is not supported (404 unknown_url): filter the list instead.

PricesLink to the Prices section

Prices are in credits. They follow the model’s price at its provider and can change with it; read the list again rather than hard-coding them. The “Models” tab of the portal shows the same prices in euros, with search and sorting by price or by context size (open). How credits convert to euros is explained in Costs and wallet.

ErrorsLink to the Errors section

HTTPcodeMeaning
503org_policy_unavailableYour organization’s rules are temporarily unreadable, so the list cannot be filtered. Try again in a moment.

Key and rate errors, common to the whole API, are in Errors.

See alsoLink to the See also section

Moon AI

Moon AI in action

0:00

Explore

Screenshots of chat.realmoon.ai taken on October 29, 2026, with fictional data.

Moon AI

Your preferences

Visits counted without cookies.

Our server counts visits without cookies or trackers. Your theme and your answer about ad measurement are remembered on this device.

Ad measurement

With your consent, our ad networks’ trackers (Google) measure our ads, from the visit to the sign-up and then to the first subscription and its amount, and may show you our ads. Your answer is valid for 13 months; you can change it here at any time.

No answer saved on this device.

After you decline, no tag is loaded anymore and the site deletes the cookies they had set on realmoon.ai. Those on the ad networks’ own domains are managed with them or in your browser.

The Moon AI app has its own privacy settings.