# Sakaira MCP server

> A remote MCP server for AI images, video, voice and music. Sign-in is OAuth 2.1, with no API keys. Its 20 tools are priced in credits, and every result carries its cost and the balance left.

Server URL: https://mcp.sakaira.com/mcp
Web page: https://sakaira.com/mcp
Updated: October 2026

## Connect

| Item | Value |
| --- | --- |
| Transport | Streamable HTTP at https://mcp.sakaira.com/mcp |
| Sign-in | OAuth 2.1: authorization code with PKCE (S256), and refresh tokens |
| Client registration | Dynamic client registration at https://mcp.sakaira.com/oauth/register, or a client ID metadata document |
| Token endpoint auth | none (public clients) |
| Scope | mcp:tools |
| Requests | The access token as a Bearer token in the Authorization header |
| Metadata | https://mcp.sakaira.com/.well-known/oauth-protected-resource/mcp and https://mcp.sakaira.com/.well-known/oauth-authorization-server |

Claude Code:

```sh
claude mcp add --transport http sakaira --scope user https://mcp.sakaira.com/mcp
```

Codex:

```sh
codex mcp add sakaira --url https://mcp.sakaira.com/mcp
codex mcp login sakaira
```

Guides for every assistant: Claude https://sakaira.com/connect/claude · Claude Code https://sakaira.com/connect/claude-code · ChatGPT https://sakaira.com/connect/chatgpt · Codex https://sakaira.com/connect/codex · Cursor https://sakaira.com/connect/cursor · Grok https://sakaira.com/connect/grok · Hermes https://sakaira.com/connect/hermes · OpenClaw https://sakaira.com/connect/openclaw · Any MCP client https://sakaira.com/connect/other

## Tools

Every tool the server offers today, with the parameters an agent sends.

| Tool | Group | What it does | Price |
| --- | --- | --- | --- |
| create_image | Make | Generate an image from text, or edit an existing image by passing image_url. | from 2 credits an image (≈ $0.02) |
| upscale_image | Fix | Increase the resolution of an image. | from 1 credit an image (≈ $0.01) |
| remove_background | Fix | Remove the background of an image and return a transparent PNG. | from 2 credits an image (≈ $0.02) |
| restore_image | Fix | Restore and colorize old or damaged photos. | 8 credits an image (≈ $0.08) |
| create_video | Make | Text-to-video and image-to-video, with first and last frames and reference images. | from 2 credits a second (≈ $0.02) |
| create_voiceover | Make | Text to speech. | from 2 credits per 1,000 characters (≈ $0.02) |
| create_music | Make | Generate background music from a style prompt (and optional lyrics). | from 8 credits a track (≈ $0.08) |
| transcribe | Fix | Audio or video to text with timestamps. | 1.6 credits a minute (≈ $0.02) |
| enhance_audio | Fix | Isolate a voice: remove noise, music and reverb. | from 12 credits a minute (≈ $0.13) |
| save_brand_kit | Your brand | Save the user's brand: name, colors, fonts, tone, voice, logo and images. | Free |
| get_brand_kit | Your brand | Read the user's brand kit before making anything for their brand. | Free |
| delete_brand_kit | Your brand | Delete the user's brand kit and its images. | Free |
| delete_asset | Your account | Delete a file from your library for good. | Free |
| list_models | Your account | Catalog of models, filterable by category or text. | Free |
| describe_model | Your account | All parameters and prices of one model. | Free |
| check_balance | Your account | Your plan and credits with their dates, optionally with a cost estimate. | Free |
| buy_credits | Your account | A credit pack's checkout link for subscribers, or the plans link. | Free |
| get_job | Your account | Status and result of a job, or your most recent jobs. | Free |
| spend_report | Your account | Credits spent by period and by tool. | Free |
| send_feedback | Your account | Report a bug, a missing feature, something confusing, or praise. | Free |

Dollar amounts at monthly-plan rates (1 credit ≈ $0.0106). Yearly plans cost 20% less; credit packs ≈ $0.014 a credit. Prices as of September 2026.

create_video runs in the background: it returns a job_id at once, and get_job returns the clip when it's done.

### create_image

Generate 1–4 images from a prompt, or edit images by passing image_url (more references in extras.image_urls). Models: nano-banana-2 (default): fast all-round images and edits, 0.5K to 4K; nano-banana-pro: harder edits and detailed scenes, up to 4K; nano-banana-2-lite: cheap 1K drafts; gpt-image-2.5-sunburst: accurate text and edits; gpt-image-2.5-flare: the same quality, faster; muse-image: high quality at a low price; grok-imagine-image-2: posters and designs with legible text; seedream-5-pro: consistent characters from many references; seedream-5-lite: cheap, consistent sets of images; flux-2-pro: photoreal images at exact sizes; flux-2-max: FLUX's highest detail; flux-2-flex: typography and fine control; flux-2-klein: very fast, very cheap drafts; qwen-image-3: long, detailed prompts; ideogram-4: logos and typography; recraft-4.1: brand illustrations; recraft-4.1-vector: editable SVG icons and logos; mai-image-2.5: realistic scenes and portraits; krea-2: stylized images from style references; luma-uni-1: concept art and moody frames. Set quality (low, medium, high) where a model offers it. Call list_models for prices and describe_model for a model's options. Returns fixed URLs, each kept until its expires_at, plus the cost and your remaining balance.

Price: from 2 credits an image (≈ $0.02)

Parameters:

- prompt (string, required, up to 4,000 characters): What to generate, or how to edit image_url
- model (nano-banana-2 | nano-banana-pro | nano-banana-2-lite | gpt-image-2.5-sunburst | gpt-image-2.5-flare | muse-image | grok-imagine-image-2 | seedream-5-pro | seedream-5-lite | flux-2-pro | flux-2-max | flux-2-flex | flux-2-klein | qwen-image-3 | ideogram-4 | recraft-4.1 | recraft-4.1-vector | mai-image-2.5 | krea-2 | luma-uni-1, default nano-banana-2): nano-banana-2 (default): fast all-round images and edits, 0.5K to 4K; nano-banana-pro: harder edits and detailed scenes, up to 4K; nano-banana-2-lite: cheap 1K drafts; gpt-image-2.5-sunburst: accurate text and edits; gpt-image-2.5-flare: the same quality, faster; muse-image: high quality at a low price; grok-imagine-image-2: posters and designs with legible text; seedream-5-pro: consistent characters from many references; seedream-5-lite: cheap, consistent sets of images; flux-2-pro: photoreal images at exact sizes; flux-2-max: FLUX's highest detail; flux-2-flex: typography and fine control; flux-2-klein: very fast, very cheap drafts; qwen-image-3: long, detailed prompts; ideogram-4: logos and typography; recraft-4.1: brand illustrations; recraft-4.1-vector: editable SVG icons and logos; mai-image-2.5: realistic scenes and portraits; krea-2: stylized images from style references; luma-uni-1: concept art and moody frames. Call list_models for what each model costs.
- image_url (string): Reference image to edit or use as guidance
- width (integer, 256–4,096): Output width in pixels. Give one side and the other follows at 4:3.
- height (integer, 256–4,096): Output height in pixels. Give one side and the other follows at 4:3.
- num_images (integer, default 1, 1–4)
- remove_background (boolean, default false): Also remove the background (+2 credits per image)
- seed (integer, 0–2,147,483,647)
- output_format (png | jpg | jpeg | webp, default png)
- quality (low | medium | high): Output quality where the model offers it (GPT Image, Grok, Ideogram); it changes the price. Omit for the model's default.
- extras (object): Model-specific parameters passed through (see describe_model). Billed parameters (num_images, resolution, image_size, width/height, aspect_ratio) are not accepted here; use the top-level fields.
- confirm (boolean, default false): Set true to accept a quote above 500 credits

### upscale_image

Make an image 1–4× bigger (scale, 2 by default) from its https URL. Models: topaz-upscale (default): faithful upscales up to 4×; recraft-crisp-upscale: cheap, sharp upscales of PNGs; seedvr2-upscale: very cheap large upscales; clarity-upscaler: creative upscales that add detail. recraft-crisp-upscale takes PNG only. The price follows the output size, read from the image before any charge. Returns a fixed URL, kept until its expires_at, plus the cost and your remaining balance. Call list_models for prices and describe_model for a model's options.

Price: from 1 credit an image (≈ $0.01)

Parameters:

- image_url (string, required): The image to upscale (https)
- scale (number, default 2, 1–4): How many times bigger each side gets (2 doubles width and height)
- output_format (png | jpg | jpeg): png or jpg where the model offers a choice; by default a JPEG stays jpg and a PNG or WebP becomes png
- model (recraft-crisp-upscale | topaz-upscale | seedvr2-upscale | clarity-upscaler, default topaz-upscale): recraft-crisp-upscale: cheap, sharp upscales of PNGs; topaz-upscale (default): faithful upscales up to 4×; seedvr2-upscale: very cheap large upscales; clarity-upscaler: creative upscales that add detail. Call list_models for what each model costs.
- extras (object): Model-specific parameters passed through (see describe_model). Priced or top-level parameters are not accepted here.
- confirm (boolean, default false): Set true to accept a quote above 500 credits

### remove_background

Cut out the subject of an image (https URL; PNG, JPEG or WebP) and return a transparent PNG. Models: ideogram-remove-background (default): transparent PNG cut-outs; bria-rmbg-2: cut-outs from a model trained on licensed data. Returns a fixed URL, kept until its expires_at, plus the cost and your remaining balance. Call list_models for prices and describe_model for a model's options.

Price: from 2 credits an image (≈ $0.02)

Parameters:

- image_url (string, required): The image to cut out (https; PNG, JPEG or WebP)
- model (ideogram-remove-background | bria-rmbg-2, default ideogram-remove-background): ideogram-remove-background (default): transparent PNG cut-outs; bria-rmbg-2: cut-outs from a model trained on licensed data. Call list_models for what each model costs.
- extras (object): Model-specific parameters passed through (see describe_model). Priced or top-level parameters are not accepted here.
- confirm (boolean, default false): Set true to accept a quote above 500 credits

### restore_image

Repair an old or damaged photo from its https URL: remove scratches, fix or add colors (colorize) and raise the resolution. Models: photo-restoration (default): repairing and colorizing old photos. Returns a fixed URL, kept until its expires_at, plus the cost and your remaining balance. Call list_models for prices and describe_model for a model's options.

Price: 8 credits an image (≈ $0.08)

Parameters:

- image_url (string, required): The old or damaged photo (https)
- colorize (boolean, default true): Fix or add colors
- remove_scratches (boolean, default true)
- enhance_resolution (boolean, default true)
- aspect_ratio (1:1 | 16:9 | 9:16 | 4:3 | 3:4): Output aspect ratio; the model's default when omitted
- model (photo-restoration, default photo-restoration): photo-restoration (default): repairing and colorizing old photos. Call list_models for what each model costs.
- extras (object): Model-specific parameters passed through (see describe_model). Priced or top-level parameters are not accepted here.
- confirm (boolean, default false): Set true to accept a quote above 500 credits

### create_video

Generate a video from a prompt, animate an image (image_url is the first frame, end_image_url the last), or keep subjects consistent with reference_image_urls. Models: gemini-omni-flash (default): video with sound; veo-3.1: Veo at up to 4K; veo-3.1-fast: Veo quality at a lower price, up to 4K; veo-3.1-lite: cheap clips with sound, or silent b-roll; wan-3: single shots up to 30 s at native 1080p; happyhorse-1.1: talking characters with lip-sync; minimax-h3-max: fast image-to-video with sound; minimax-h3-max-turbo: the cheapest H3 Max clips; minimax-h3: the open-weights H3, up to 4K; seedance-2.5: ads up to 30 s with many reference images; seedance-2: cinematic multi-shot clips; seedance-2-fast: Seedance 2.0 at a lower price; seedance-2-mini: cheap Seedance drafts; kling-3-pro: cinematic motion; kling-3-turbo: faster Kling with sound; kling-o3: consistent characters from reference images; grok-imagine-video-1.5: short clips with sound from text or images; flux-3: cinematic clips from text or a first and last frame; ltx-2.5: open-weights clips up to 20 s and 4K; pixverse-6: cheap social clips with optional sound; vidu-q3: clips up to 16 s with start and end frames; luma-ray-3.2: cinematic silent shots; creatify-boreal: product, UGC and presenter ads from a script. Duration, resolution and aspect ratio are fitted to what the model makes, and any change is listed in warnings. Returns a job_id at once: videos take about 1–5 minutes, so call get_job with that job_id to get the fixed URL, kept until its expires_at. Call list_models for prices and describe_model for each model's options. Quotes above 500 credits need confirm: true.

Price: from 2 credits a second (≈ $0.02)

Parameters:

- prompt (string, required, up to 5,000 characters): What happens in the video: subject, motion, camera, sound
- model (gemini-omni-flash | veo-3.1 | veo-3.1-fast | veo-3.1-lite | wan-3 | happyhorse-1.1 | minimax-h3-max | minimax-h3-max-turbo | minimax-h3 | seedance-2.5 | seedance-2 | seedance-2-fast | seedance-2-mini | kling-3-pro | kling-3-turbo | kling-o3 | grok-imagine-video-1.5 | flux-3 | ltx-2.5 | pixverse-6 | vidu-q3 | luma-ray-3.2 | creatify-boreal, default gemini-omni-flash): gemini-omni-flash (default): video with sound; veo-3.1: Veo at up to 4K; veo-3.1-fast: Veo quality at a lower price, up to 4K; veo-3.1-lite: cheap clips with sound, or silent b-roll; wan-3: single shots up to 30 s at native 1080p; happyhorse-1.1: talking characters with lip-sync; minimax-h3-max: fast image-to-video with sound; minimax-h3-max-turbo: the cheapest H3 Max clips; minimax-h3: the open-weights H3, up to 4K; seedance-2.5: ads up to 30 s with many reference images; seedance-2: cinematic multi-shot clips; seedance-2-fast: Seedance 2.0 at a lower price; seedance-2-mini: cheap Seedance drafts; kling-3-pro: cinematic motion; kling-3-turbo: faster Kling with sound; kling-o3: consistent characters from reference images; grok-imagine-video-1.5: short clips with sound from text or images; flux-3: cinematic clips from text or a first and last frame; ltx-2.5: open-weights clips up to 20 s and 4K; pixverse-6: cheap social clips with optional sound; vidu-q3: clips up to 16 s with start and end frames; luma-ray-3.2: cinematic silent shots; creatify-boreal: product, UGC and presenter ads from a script. Call list_models for what each model costs.
- image_url (string): First frame: animate this image
- end_image_url (string): Last frame: the video ends on this image (needs image_url on most models)
- reference_image_urls (string[]): Images of subjects or products to keep consistent (not frames); see describe_model for each model's limit
- duration (integer, 1–30): Seconds (default 5); fitted to what the model makes
- resolution (string): 360p, 480p, 540p, 720p, 768p, 1080p, 1440p, 2160p, 2k, 4k; fitted to the model's nearest; default: the model's standard one
- aspect_ratio (string): "16:9", "9:16", "1:1"…; fitted to the nearest ratio the model makes
- audio (boolean): Sound on (the default wherever the model can) or off; off costs less on some models
- seed (integer, 0–2,147,483,647)
- extras (object): Model-specific parameters passed through (see describe_model). Billed parameters (duration, resolution, aspect_ratio, audio, frames, references) are not accepted here; use the top-level fields.
- confirm (boolean, default false): Set true to accept a quote above 500 credits

### create_voiceover

Turn text into speech: voiceovers, narration, ads. Models: gemini-3.8-flash-tts (default): natural voices directed in plain English; gemini-3.8-flash-lite-tts: the same voices, cheaper; elevenlabs-v3: expressive voices with emotion tags and word timings; elevenlabs-multilingual-v2: steady narration with speed control; minimax-speech-2.8-hd: emotional voices for long texts; minimax-speech-2.8-turbo: MiniMax voices at a lower price; xai-tts: cheap voices with laughs and whispers; inworld-tts-1.5: low-cost voices, 73 in English; kokoro: fast English drafts; chatterbox-hd: dramatic voices with adjustable intensity; dia: two-speaker dialogue; orpheus: open-source English narration. Pick a voice with voice (describe_model lists each model's voices); style gives the Gemini voices directions in plain English; speed where the model has it. Priced per character of text. No voice cloning. Returns a fixed audio URL, kept until its expires_at, plus the cost and your remaining balance. Call list_models for prices and describe_model for a model's options.

Price: from 2 credits per 1,000 characters (≈ $0.02)

Parameters:

- text (string, required, up to 15,000 characters): The words to speak, verbatim. Each model has its own length cap (describe_model).
- voice (string, up to 100 characters): Voice name from the model's list (describe_model); the model's default when omitted
- style (string, up to 1,000 characters): How to say it, in plain English, e.g. 'warm and slow, like a bedtime story' (Gemini models)
- speed (number, 0.5–2): Speaking speed, 1 is normal (ElevenLabs Multilingual v2 0.7–1.2, MiniMax and Kokoro 0.5–2)
- model (gemini-3.8-flash-tts | gemini-3.8-flash-lite-tts | elevenlabs-v3 | elevenlabs-multilingual-v2 | minimax-speech-2.8-hd | minimax-speech-2.8-turbo | xai-tts | inworld-tts-1.5 | kokoro | chatterbox-hd | dia | orpheus, default gemini-3.8-flash-tts): gemini-3.8-flash-tts (default): natural voices directed in plain English; gemini-3.8-flash-lite-tts: the same voices, cheaper; elevenlabs-v3: expressive voices with emotion tags and word timings; elevenlabs-multilingual-v2: steady narration with speed control; minimax-speech-2.8-hd: emotional voices for long texts; minimax-speech-2.8-turbo: MiniMax voices at a lower price; xai-tts: cheap voices with laughs and whispers; inworld-tts-1.5: low-cost voices, 73 in English; kokoro: fast English drafts; chatterbox-hd: dramatic voices with adjustable intensity; dia: two-speaker dialogue; orpheus: open-source English narration. Call list_models for what each model costs. describe_model lists each model's voices.
- extras (object): Model-specific parameters passed through (see describe_model). Priced or top-level parameters are not accepted here.
- confirm (boolean, default false): Set true to accept a quote above 500 credits

### create_music

Generate a music track from a prompt (genre, mood, instruments, tempo), with lyrics or as an instrumental. Models: lyria-3.5 (default): songs or instrumental tracks up to about 3 minutes; elevenlabs-music-2.5: tracks with an exact length for ads and videos; minimax-music-2.6: songs with lyrics or instrumental tracks; stable-audio-3: instrumental beds and ambience with an exact length. duration_seconds is exact on elevenlabs-music-2.5 and stable-audio-3 (30 s by default there) and a hint on lyria-3.5. Returns a fixed MP3 URL, kept until its expires_at, plus the cost and your remaining balance. Call list_models for prices and describe_model for a model's options.

Price: from 8 credits a track (≈ $0.08)

Parameters:

- prompt (string, required, up to 5,000 characters): The music to make: genre, mood, instruments, tempo, vocals, structure
- lyrics (string, up to 3,500 characters): Lyrics to sing, one line per line; [Verse] and [Chorus] tags help
- instrumental (boolean, default false): No vocals
- duration_seconds (integer, 1–600): Length in seconds: exact on elevenlabs-music-2.5 (3–600) and stable-audio-3 (1–380), 30 by default there; a hint on lyria-3.5; minimax-music-2.6 picks its own length
- model (lyria-3.5 | elevenlabs-music-2.5 | minimax-music-2.6 | stable-audio-3, default lyria-3.5): lyria-3.5 (default): songs or instrumental tracks up to about 3 minutes; elevenlabs-music-2.5: tracks with an exact length for ads and videos; minimax-music-2.6: songs with lyrics or instrumental tracks; stable-audio-3: instrumental beds and ambience with an exact length. Call list_models for what each model costs.
- extras (object): Model-specific parameters passed through (see describe_model). Priced or top-level parameters are not accepted here.
- confirm (boolean, default false): Set true to accept a quote above 500 credits

### transcribe

Transcribe an audio or video file (https URL) into text with word timings and speaker labels. Models: scribe-v2 (default): transcripts with word timings and speakers. Returns the text plus an SRT subtitle file and a JSON file with every word's timing. Priced per started minute of the file, whose length is read before any charge; keyterms (names, jargon) add 30%. Call list_models for prices and describe_model for a model's options.

Price: 1.6 credits a minute (≈ $0.02)

Parameters:

- audio_url (string, required): The audio or video file to transcribe (https)
- language (string, 2–8 characters): ISO 639 language code (en, es, …); detected when omitted
- speakers (boolean, default true): Label who is speaking
- audio_events (boolean, default true): Tag sounds like (laughter) or (applause)
- keyterms (string[]): Names or jargon to spell right, up to 100; adds 30% to the price
- model (scribe-v2, default scribe-v2): scribe-v2 (default): transcripts with word timings and speakers. Call list_models for what each model costs.
- extras (object): Model-specific parameters passed through (see describe_model). Priced or top-level parameters are not accepted here.
- confirm (boolean, default false): Set true to accept a quote above 500 credits

### enhance_audio

Clean a voice recording from an audio or video file (https URL): elevenlabs-audio-isolation removes background noise, music and reverb; deepfilternet-3 removes noise from audio files. Models: elevenlabs-audio-isolation (default): removing noise and music from a voice; deepfilternet-3: cheap noise removal. Priced per minute of the file, whose length is read before any charge. Returns a fixed audio URL, kept until its expires_at, plus the cost and your remaining balance. Call list_models for prices and describe_model for a model's options.

Price: from 12 credits a minute (≈ $0.13)

Parameters:

- audio_url (string, required): The voice recording to clean: an audio or video file (https)
- output_format (mp3 | wav | flac | m4a, default mp3): deepfilternet-3 only; Audio Isolation returns its own format
- model (elevenlabs-audio-isolation | deepfilternet-3, default elevenlabs-audio-isolation): elevenlabs-audio-isolation (default): removing noise and music from a voice; deepfilternet-3: cheap noise removal. Call list_models for what each model costs.
- extras (object): Model-specific parameters passed through (see describe_model). Priced or top-level parameters are not accepted here.
- confirm (boolean, default false): Set true to accept a quote above 500 credits

### save_brand_kit

Create or update the account's brand kit (one per account). Call it when the user wants to save or change their brand. Send only what changes: a field left out or null keeps its saved value. The fields: name (needed the first time), up to 6 colors as #RRGGBB, up to 3 fonts by name (heading, body or accent), tone (up to 500 characters), notes (up to 1,000) and voice (a create_voiceover model and one of its voices). colors and fonts replace the whole list, and [] clears one; "" clears tone or notes; clear_voice: true removes the voice. With a paid plan the kit also takes images by https URL (PNG, JPEG or WebP, up to 20 MB each): one logo, which replaces the current one, and up to 10 reference images; remove_image_ids removes saved ones. Returns the kit and edit_url, the Brand kit page where the user can drop files, plus, with a paid plan, upload: a ready command to upload a file from this computer. Free.

Price: Free

Parameters:

- name (string, up to 60 characters): The brand's name, needed when the kit is created. Left out or null keeps the saved name; it cannot be cleared
- colors (object[]): Up to 6 brand colors. Replaces the saved list; [] clears it, null keeps it
- fonts (object[]): Up to 3 fonts. Replaces the saved list; [] clears it, null keeps it
- tone (string, up to 500 characters): How the brand talks, e.g. friendly, short sentences, no jargon. Left out or null keeps the saved tone; "" clears it
- notes (string, up to 1,000 characters): Style notes: what to do and what to avoid. Left out or null keeps the saved notes; "" clears them
- voice (object): The voice for the brand's voiceovers. Left out or null keeps the saved voice; clear_voice removes it
- clear_voice (boolean): true removes the saved voice (send it without voice)
- add_images (object[]): Images to add by URL, with a paid plan: one logo and up to 10 reference images per kit
- remove_image_ids (string[]): Ids of saved images to remove, as get_brand_kit lists them

### get_brand_kit

Return the account's brand kit: name, colors, fonts, tone, notes, voice, and its logo and reference images with their ids and URLs. Call it before making anything for the user's brand (an image, a video, a voiceover, a post) and apply it: put its colors, fonts and tone into the prompt; pass the logo or reference image URLs as reference images only when the piece should show them; never ask a model to redraw the logo from memory; use the kit's voice for voiceovers unless the user picks another. The kit is null when there is none yet (create one with save_brand_kit). Also returns edit_url, the Brand kit page in the user's Library where they can drop files, how_to_use and, with a paid plan, upload: a ready command to upload a file from this computer. Free.

Price: Free

### delete_brand_kit

Delete the account's brand kit for good, with its logo and reference images: their URLs stop working. Call it only when the user asks to delete their brand kit; to change it, call save_brand_kit. Files in the user's library are not touched. Free.

Price: Free

### delete_asset

Delete a file for good: it leaves your library and its URL stops working. Pass asset_id or the file's url. Free; the credits it cost are not refunded.

Price: Free

Parameters:

- asset_id (string): The file's asset_id, as create_image or get_job returned it
- url (string): Or the file's URL, exactly as Sakaira returned it. Pass asset_id or url, not both

### list_models

List the available models with vendor, category, price in credits and which tools use them. Filter by category (image, video, voice, music, audio, utility) or free text. Free.

Price: Free

Parameters:

- category (image | video | voice | music | audio | utility)
- query (string, up to 100 characters): Free-text filter on name, vendor or id

### describe_model

Return a model’s parameters (name, type, default), pricing rule and the tools that use it. Free.

Price: Free

Parameters:

- model (string, required): Model id, e.g. nano-banana-2

### check_balance

Return your plan and credits: the subscription's plan with its renewal or end date, your balance, and each lot of credits with its expiry (a plan's credits at the end of their month, a pack's 90 days after purchase, the free ones 30 days after signup), and without a subscription the date your next file is deleted. Optionally the deterministic cost of a tool call given its input. Free.

Price: Free

Parameters:

- tool (string): Optional: estimate the cost of calling this tool…
- input (object): …with this input

### buy_credits

Credit packs are for subscribers: create a secure Stripe Checkout link for a pack of 700 to 7,000 credits, which expire 90 days after purchase. Without a subscription it returns the plans link instead, where the user subscribes; plans are changed there too. The checkout page shows the price. Free.

Price: Free

Parameters:

- pack (pack_10 | pack_25 | pack_50 | pack_100, default pack_10): pack_10 (700 credits), pack_25 (1,750), pack_50 (3,500), pack_100 (7,000)

### get_job

Return the status (queued, running, succeeded, failed) and, when done, the fixed URLs (each kept until its expires_at) and cost of a job created by create_video or any other asynchronous tool. Without job_id, list your 10 most recent jobs, newest first, with their status, cost and file URLs: use it to recover a result whose reply was lost or timed out, instead of generating again. Free.

Price: Free

Parameters:

- job_id (string): Omit job_id to list your 10 most recent jobs, e.g. after a lost reply

### spend_report

Summarize credits spent today, in the last 7 or 30 days, or all time, broken down by tool. Free.

Price: Free

Parameters:

- period (today | 7d | 30d | all, default 30d)

### send_feedback

Send feedback to the Sakaira team from inside the assistant: kind (bug, missing, confusing, praise) and a message. Free.

Price: Free

Parameters:

- kind (bug | missing | confusing | praise, required)
- message (string, required, 3–4,000 characters)

## Credits

- Every result carries cost.credits and balance.credits; balance.low turns true below 50 credits.
- check_balance with tool and input returns the exact cost of that call before you make it.
- A job above 500 credits returns ok: false with needs_confirmation: true and an estimate (its credits and a cost breakdown); call again with confirm: true to run it.
- A failed job's credits usually come back automatically; error.refunded_credits gives the exact number, which can be less than the job's cost, arrive later instead of in that reply, or be zero if the original payment was itself refunded or disputed.
- Free tools: save_brand_kit, get_brand_kit, delete_brand_kit, delete_asset, list_models, describe_model, check_balance, buy_credits, get_job, spend_report, send_feedback.

## Errors

A failure is `{ ok: false, error: { code, message, retryable, refunded_credits? }, balance? }`.

| Code | Meaning | Retry |
| --- | --- | --- |
| invalid_input | Usually the input failed validation before any charge, and the message names the field: fix it, then call again. The model can also reject the input after you were charged; that message may not name a field, retryable is false, and error.refunded_credits says what came back. | No |
| insufficient_credits | Not enough credits for the job. The message links to the plans or a credit pack; call again once the account has credits. | No |
| daily_free_cap | An account that never paid reached its daily spending cap. It resets daily, and a subscription lifts it. | No |
| too_many_active_jobs | The account already has 3 jobs running. Wait for one to finish (get_job), then call again. | Yes |
| provider_failed | The model's provider failed, timed out, or its result could not be saved. What comes back varies: error.refunded_credits gives the exact number, which can be less than the job's cost, arrive later instead of in this reply, or be zero if the original payment was itself refunded or disputed. Call again. | Yes |
| tool_disabled | The tool, or the model you chose, is switched off for now: pick another model (list_models) or try again later. buy_credits returns this too when it can't sell a pack. | No |
| maintenance | Planned downtime. Call again in a few minutes. | Yes |
| rate_limited | Too many calls in a short time. Back off, then call again. | Yes |
| not_found | The job, file or model id doesn't exist, or the job or file belongs to another account. The same code covers a brand-kit image id that isn't in your kit, and a kit that was deleted while it was being saved. | No |
| unauthorized | A missing, invalid or expired token never reaches this code: the server rejects those before any tool runs, as an HTTP 401 challenge. In a tool's reply, it means the account was deleted; its token still verifies for up to an hour afterwards. | No |
| internal | An unexpected server error, logged as a bug. Call again — unless the message names a job: call get_job first, since that job may have already finished and been charged, and calling again could charge it twice. | Yes |

Each failure's own retryable field is what decides whether to call again — the table shows the usual value for that code.

## For machines

- https://sakaira.com/llms.txt: a short index of the site
- https://sakaira.com/llms-full.txt: every tool and model, with prices
- https://sakaira.com/mcp.md: this page as Markdown
- https://sakaira.com/pricing.md: plans, packs and what things cost
- https://sakaira.com/changelog: what changed, by month
