AI Inference

Hosted models, billed on usage, called like OpenAI.

Open AI Inferencein the current project. This is a separate API from the platform HTTP API. Platform keys (nodion_…) manage resources. Inference keys (nodion_ai_…) call models.

Tabs

  • Keys: create a key. It is shown once. Optional expiry and a daily spend limit. Only a project admin can create or revoke keys.
  • Playground: try chat (and other modes when models exist). Playground traffic is metered like any other request.
  • Models: catalog and readiness.
  • Usage and Requests.
  • Billing: a prepaid wallet, separate from the monthly platform invoice. Top up with card or PayPal.
  • Settings: optional region allowlist, and policy toggles such as zero data retention.

Call the API

bashcurl https://api.nodion.ai/v1/chat/completions \
  -H "Authorization: Bearer $NODION_AI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "<model>", "messages": [{"role": "user", "content": "Hello"}]}'

List token-priced models withGET https://api.nodion.ai/v1/modelsor browse the Models tab (including OCR, speech-to-text, and text-to-speech). Prices are there too, not on the platform price book. AI spend comes from the wallet, not from the platform invoice. Speech and OCR models are not listed on /v1/models — use the dashboard catalog or the public /v2/public/ai/models list.

Speech to text

POST /v1/audio/transcriptions is OpenAI-shaped multipart. The whole request body must stay under 25 MiB (file plus form fields). Files themselves are capped at 20 MiB. Duration is billed per second.

bashcurl https://api.nodion.ai/v1/audio/transcriptions \
  -H "Authorization: Bearer $NODION_AI_KEY" \
  -F model="mistral/voxtral-mini-transcribe" \
  -F file="@speech.wav"

Text to speech

POST /v1/audio/speech returns audio bytes. Input is billed per UTF-8 character (Unicode code point).

bashcurl https://api.nodion.ai/v1/audio/speech \
  -H "Authorization: Bearer $NODION_AI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "mistral/voxtral-mini-tts", "input": "Hello from Nodion", "voice": "en-US"}' \
  --output speech.mp3

Realtime transcription

Realtime models use wss://api.nodion.ai/v1/audio/transcriptions/realtime?model=…with the same bearer key. The wire format is Mistral’s JSON frames (session.update, input_audio.append with base64 PCM), not OpenAI’s agent realtime API.

Image generation

Image models use the OpenAI Images API:POST https://api.nodion.ai/v1/images/generations. The response is b64_json only — url and remote image fetches are rejected. n is reserved and settled per returned image. Image models are listed on the Models tab, not onGET /v1/models.

bashcurl https://api.nodion.ai/v1/images/generations \
  -H "Authorization: Bearer $NODION_AI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "<image-model>", "prompt": "a red cube", "n": 1, "size": "1024x1024"}'

Agents that manage the cloud

To let Cursor or Claude create apps and databases, use MCPwith a personal platform key, not an inference key.