Kitta Audio Docs
Kitta CLI

Command reference

Parameters, defaults and constraints generated from CLI schemas and help.

CLI version: 0.2.0.

Generated by scripts/generate-audio-cli-docs.mjs from the built CLI and operation contract.

API-required fields are separate from CLI workflow options. TTS text can come from --text-file or --text -. Binary downloads require --output. A default of — means no CLI default; the server may apply its own defaults.

Only commands backed by a server idempotency key expose --idempotency-key. Create operations with retry=idempotent in their schema may retry transient failures. Read the recovery guide.

Recovery and billing

kitta files upload

kitta files upload --api-url https://fishaudio.org --help
kitta files upload --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v1/uploads. Retry: never.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--file <value>Required. file—
--type <value>Required. type—

API field constraints

FlagRequiredSchema
--fileyes{"type":"string","format":"binary"}
--typeyes{"type":"string","enum":["audio","image","video"]}

kitta auth status

kitta auth status --api-url https://fishaudio.org --help
kitta auth status --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v1/profile. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—

kitta auth profile update

kitta auth profile update --api-url https://fishaudio.org --help
kitta auth profile update --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v1/profile. Retry: never.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—

kitta audio models list

kitta audio models list --api-url https://fishaudio.org --help
kitta audio models list --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v3/speech/tts/capabilities. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—

kitta audio voices list

kitta audio voices list --api-url https://fishaudio.org --help
kitta audio voices list --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v3/voices. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--page <value>page—
--page-size <value>pageSize—
--search <value>search—
--include-personalincludePersonal—
--no-include-personalSet includePersonal to false—
--allFetch all pages—
--max-pages <count>Maximum pages to fetch100
--language <code>Filter fetched voices by primary or supported language—

API field constraints

FlagRequiredSchema
--pageno{"type":"integer","minimum":1,"default":1}
--page-sizeno{"type":"integer","minimum":1,"maximum":100,"default":20}
--searchno{"type":"string"}
--include-personalno{"type":"boolean","default":false}

kitta audio voices get

kitta audio voices get --api-url https://fishaudio.org --help
kitta audio voices get --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v3/voices/{voiceId}. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--voice <value>Required. voiceId—

API field constraints

FlagRequiredSchema
--voiceyes{"type":"string"}

kitta audio tts

kitta audio tts --api-url https://fishaudio.org --help
kitta audio tts --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v3/speech/tts/jobs. Retry: idempotent.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--text <value>Required. text—
--voice <value>Required. voiceId—
--model <value>Public TTS engine model id. When omitted, the platform uses the default engine for the selected voice provider, such as fishaudio-s21pro-flash for Fish Audio voices.—
--format <value>format—
--speed <value>speed—
--volume <value>volume—
--pitch <value>pitch—
--stability <value>stability—
--similarity <value>similarity—
--language <value>language—
--emotion <value>emotion—
--instruction <value>instruction—
--text-normalizationtextNormalization—
--no-text-normalizationSet textNormalization to false—
--filter-emojiExperimental, disabled by default. Currently removes only selected decorative kaomoji, not graphical emoji. Independent of textNormalization. Ambiguous text is preserved. Billing uses filtered text; an empty result returns 400 before charging.—
--no-filter-emojiSet filterEmoji to false—
--idempotency-key <key>Stable submission key; retry policy is shown by --schema—
--output <path>Save binary output to a new file—
--text-file <path>Read UTF-8 text—
--waitWait for downloadable audio—
--wait-timeout <seconds>Maximum local wait600

API field constraints

FlagRequiredSchema
--textyes{"type":"string","minLength":1,"maxLength":10000}
--voiceyes{"type":"string","minLength":1}
--modelno{"type":"string","enum":["gemini-3.8-flash-tts","gemini-3.8-flash-lite-tts","fishaudio-drama3-preview","fishaudio-s21pro","fishaudio-s2pro","fishaudio-s1","fishaudio-s21pro-flash","fishaudio-s2pro-enterprise","minimax-2.8-turbo","minimax-2.8-hd","minimax-2.6-turbo","minimax-2.6-hd","qwen3-tts-flash","qwen-audio-3.0-tts-plus","qwen-audio-3.0-tts-flash","cosyvoice-v3-flash","doubao-tts-2.0","elevenlabs-flash-v2.5","elevenlabs-multilingual-v2"],"description":"Public TTS engine model id. When omitted, the platform uses the default engine for the selected voice provider, such as fishaudio-s21pro-flash for Fish Audio voices."}
--formatno{"type":"string","enum":["mp3","wav"],"default":"mp3"}
--speedno{"type":"number","minimum":0.5,"maximum":2,"default":1}
--volumeno{"type":"number","minimum":-20,"maximum":20,"default":0}
--pitchno{"type":"number","minimum":-12,"maximum":12}
--stabilityno{"type":"number","minimum":0.5,"maximum":1.5}
--similarityno{"type":"number","minimum":0.5,"maximum":1.5}
--languageno{"type":"string","minLength":1,"maxLength":64}
--emotionno{"type":"string","minLength":1,"maxLength":64}
--instructionno{"type":"string","minLength":1,"maxLength":1600}
--text-normalizationno{"type":"boolean"}
--filter-emojino{"type":"boolean","default":false,"description":"Experimental, disabled by default. Currently removes only selected decorative kaomoji, not graphical emoji. Independent of textNormalization. Ambiguous text is preserved. Billing uses filtered text; an empty result returns 400 before charging."}

kitta audio jobs list

kitta audio jobs list --api-url https://fishaudio.org --help
kitta audio jobs list --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v3/speech/tts/jobs. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--page <value>page—
--limit <value>limit—
--status <value>status—
--created-after <value>createdAfter—
--allFetch all pages—
--max-pages <count>Maximum pages to fetch100

API field constraints

FlagRequiredSchema
--pageno{"type":"integer","minimum":1,"default":1}
--limitno{"type":"integer","minimum":1,"maximum":100,"default":20}
--statusno{"type":"string","enum":["pending","processing","success","partial_fail","fail"]}
--created-afterno{"type":"string","format":"date-time"}

kitta audio jobs get

kitta audio jobs get --api-url https://fishaudio.org --help
kitta audio jobs get --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v3/speech/tts/jobs/{jobId}. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--job <value>Required. jobId—

API field constraints

FlagRequiredSchema
--jobyes{"type":"string"}

kitta audio jobs download

kitta audio jobs download --api-url https://fishaudio.org --help
kitta audio jobs download --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v3/speech/tts/jobs/{jobId}/audio. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--job <value>Required. jobId—
--downloaddownload—
--no-downloadSet download to false—
--output <path>Save binary output to a new file—

API field constraints

FlagRequiredSchema
--jobyes{"type":"string"}
--downloadno{"type":"boolean","default":false}

kitta audio jobs segment download

kitta audio jobs segment download --api-url https://fishaudio.org --help
kitta audio jobs segment download --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v3/speech/tts/jobs/{jobId}/segments/{segmentIndex}. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--job <value>Required. jobId—
--segment <value>Required. segmentIndex—
--output <path>Save binary output to a new file—

API field constraints

FlagRequiredSchema
--jobyes{"type":"string"}
--segmentyes{"type":"integer","minimum":0}

kitta audio transcribe

kitta audio transcribe --api-url https://fishaudio.org --help
kitta audio transcribe --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v1/speech/transcriptions. Retry: never.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--audio-url <value>Required. audio_url—
--language <value>language—
--ignore-timestampsignore_timestamps—
--no-ignore-timestampsSet ignore_timestamps to false—
--file-name <value>file_name—

API field constraints

FlagRequiredSchema
--audio-urlyes{"type":"string","format":"uri"}
--languageno{"type":"string"}
--ignore-timestampsno{"type":"boolean","default":false}
--file-nameno{"type":"string"}

kitta audio voices clone

kitta audio voices clone --api-url https://fishaudio.org --help
kitta audio voices clone --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v1/voices. Retry: never.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--name <value>Required. Voice display name.—
--audio-file <values...>Required. Audio files used to create the voice model.—
--description <value>description—
--reference-text <value>Optional transcript text.—
--visibility <value>visibility—
--languages <value>JSON string array of language codes, such as ["zh","en"].—

API field constraints

FlagRequiredSchema
--nameyes{"type":"string","description":"Voice display name."}
--audio-fileyes{"type":"array","items":{"type":"string","format":"binary"},"description":"Audio files used to create the voice model."}
--descriptionno{"type":"string"}
--reference-textno{"type":"string","description":"Optional transcript text."}
--visibilityno{"type":"string","enum":["private","public"]}
--languagesno{"type":"string","description":"JSON string array of language codes, such as [\"zh\",\"en\"]."}

kitta audio voices design

kitta audio voices design --api-url https://fishaudio.org --help
kitta audio voices design --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v1/voice-designs. Retry: never.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--prompt <value>Required. prompt—
--preview-text <value>Required. previewText—
--providers <values...>providers—
--idempotency-key <key>Stable submission key; retry policy is shown by --schema—

API field constraints

FlagRequiredSchema
--promptyes{"type":"string"}
--preview-textyes{"type":"string"}
--providersno{"type":"array","minItems":1,"maxItems":2,"items":{"type":"string","enum":["fishaudio","minimax"]},"default":["fishaudio","minimax"]}

kitta audio voices save

kitta audio voices save --api-url https://fishaudio.org --help
kitta audio voices save --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v1/voice-designs/{designId}/voices. Retry: never.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--design <value>Required. designId—
--candidate <value>Required. candidateId—
--name <value>Required. name—
--description <value>description—
--visibility <value>visibility—
--language <value>Primary language of the saved voice. Defaults to the request language.—
--reference-text <value>referenceText—
--idempotency-key <key>Stable submission key; retry policy is shown by --schema—

API field constraints

FlagRequiredSchema
--designyes{"type":"string"}
--candidateyes{"type":"string"}
--nameyes{"type":"string","maxLength":100}
--descriptionno{"type":"string","maxLength":500}
--visibilityno{"type":"string","enum":["private","public"],"default":"private"}
--languageno{"type":"string","enum":["en","zh","ru","zh-hant","es","ja","ko","fr","ar","de","pt","hi","tr","it","id","th","pl","tl","uk","nl","ms","el","ro","vi"],"description":"Primary language of the saved voice. Defaults to the request language."}
--reference-textno{"type":"string","maxLength":150}

kitta audio voices preview

kitta audio voices preview --api-url https://fishaudio.org --help
kitta audio voices preview --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v1/voice-designs/{designId}/candidates/{candidateId}/audio. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--design <value>Required. designId—
--candidate <value>Required. candidateId—
--output <path>Save binary output to a new file—

API field constraints

FlagRequiredSchema
--designyes{"type":"string"}
--candidateyes{"type":"string"}

kitta audio voices delete

kitta audio voices delete --api-url https://fishaudio.org --help
kitta audio voices delete --api-url https://fishaudio.org --schema

HTTP: DELETE /api/open/v1/voices/{voiceId}. Retry: never.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--voice <value>Required. voiceId—
--yesConfirm the destructive operation—

API field constraints

FlagRequiredSchema
--voiceyes{"type":"string"}

kitta audio voices update

kitta audio voices update --api-url https://fishaudio.org --help
kitta audio voices update --api-url https://fishaudio.org --schema

HTTP: PATCH /api/open/v1/voices/{voiceId}. Retry: never.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--voice <value>Required. voiceId—
--title <value>title—
--description <value>description—
--visibility <value>visibility—
--language <value>language—

API field constraints

FlagRequiredSchema
--voiceyes{"type":"string"}
--titleno{"type":"string","minLength":1,"maxLength":80}
--descriptionno{"type":"string","maxLength":500}
--visibilityno{"type":"string","enum":["public","private"]}
--languageno{"type":"string"}

kitta audio personal-voice generate

kitta audio personal-voice generate --api-url https://fishaudio.org --help
kitta audio personal-voice generate --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v1/speech/voice-clone-tts/jobs. Retry: idempotent.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--source-audio-url <value>Required. Customer-owned or authorized reference audio URL downloadable by Fish Audio.—
--text <value>Required. text—
--voice-name <value>voice_name—
--file-name <value>file_name—
--model-id <value>model_id—
--format <value>format—
--speed <value>Platform speaking speed range. Model limits apply; ElevenLabs requires 0.7–1.2.—
--volume <value>Platform volume control for engines that support it. ElevenLabs does not apply this field.—
--stability <value>Model-specific stability: Fish Audio 0.5–1.5 (default 1); ElevenLabs 0–1 (default 0.5). Other engines do not apply this field.—
--similarity <value>Model-specific voice consistency: Fish Audio 0.5–1.5 (default 1); ElevenLabs 0–1 (default 0.75). Other engines do not apply this field.—
--pitch <value>Pitch adjustment for MiniMax and Qwen models.—
--language <value>language—
--emotion <value>emotion—
--instruction <value>instruction—
--text-normalizationtext_normalization—
--no-text-normalizationSet text_normalization to false—
--idempotency-key <key>Stable submission key; retry policy is shown by --schema—
--output <path>Save binary output to a new file—
--waitWait for a terminal task state—
--wait-timeout <seconds>Maximum local wait600

API field constraints

FlagRequiredSchema
--source-audio-urlyes{"type":"string","format":"uri","description":"Customer-owned or authorized reference audio URL downloadable by Fish Audio."}
--textyes{"type":"string","minLength":1,"maxLength":5000}
--voice-nameno{"type":"string","minLength":1,"maxLength":100}
--file-nameno{"type":"string","minLength":1,"maxLength":255}
--model-idno{"type":"string","enum":["fishaudio-drama3-preview","fishaudio-s21pro","fishaudio-s21pro-flash","fishaudio-s2pro","fishaudio-s1"],"default":"fishaudio-s21pro-flash"}
--formatno{"type":"string","enum":["mp3","wav"],"default":"mp3"}
--speedno{"type":"number","minimum":0.5,"maximum":2,"default":1,"description":"Platform speaking speed range. Model limits apply; ElevenLabs requires 0.7–1.2."}
--volumeno{"type":"number","minimum":-20,"maximum":20,"default":0,"description":"Platform volume control for engines that support it. ElevenLabs does not apply this field."}
--stabilityno{"type":"number","minimum":0,"maximum":1.5,"description":"Model-specific stability: Fish Audio 0.5–1.5 (default 1); ElevenLabs 0–1 (default 0.5). Other engines do not apply this field."}
--similarityno{"type":"number","minimum":0,"maximum":1.5,"description":"Model-specific voice consistency: Fish Audio 0.5–1.5 (default 1); ElevenLabs 0–1 (default 0.75). Other engines do not apply this field."}
--pitchno{"type":"number","minimum":-12,"maximum":12,"default":0,"description":"Pitch adjustment for MiniMax and Qwen models."}
--languageno{"type":"string","maxLength":32}
--emotionno{"type":"string","maxLength":64}
--instructionno{"type":"string","maxLength":1600}
--text-normalizationno{"type":"boolean","default":true}

kitta audio personal-voice get

kitta audio personal-voice get --api-url https://fishaudio.org --help
kitta audio personal-voice get --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v1/speech/voice-clone-tts/jobs/{jobId}. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--job <value>Required. jobId—

API field constraints

FlagRequiredSchema
--jobyes{"type":"string"}

kitta models list

kitta models list --api-url https://fishaudio.org --help
kitta models list --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v1/media/models. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--media-type <value>mediaType—

API field constraints

FlagRequiredSchema
--media-typeno{"type":"string","enum":["image","video"]}

kitta image generate

kitta image generate --api-url https://fishaudio.org --help
kitta image generate --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v1/media/images/jobs. Retry: idempotent.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--prompt <value>Required. prompt—
--model <value>model—
--image-url <value>image_url—
--image-urls <values...>Ordered reference images for edit mode. Do not combine with image_url. Limits depend on the selected model and resolution.—
--resolution <value>Use a verified model catalog variant; credits and reference limits vary by resolution.—
--mask-url <value>mask_url—
--generation-type <value>generation_type—
--response-format <value>response_format—
--aspect-ratio <value>aspect_ratio—
--idempotency-key <key>Stable submission key; retry policy is shown by --schema—
--output <path>Save binary output to a new file—
--waitWait for a terminal task state—
--wait-timeout <seconds>Maximum local wait600

API field constraints

FlagRequiredSchema
--promptyes{"type":"string"}
--modelno{"type":"string"}
--image-urlno{"type":"string","format":"uri"}
--image-urlsno{"type":"array","minItems":1,"maxItems":4,"items":{"type":"string","format":"uri"},"description":"Ordered reference images for edit mode. Do not combine with image_url. Limits depend on the selected model and resolution."}
--resolutionno{"type":"string","enum":["1k","2k","4k"],"default":"1k","description":"Use a verified model catalog variant; credits and reference limits vary by resolution."}
--mask-urlno{"type":"string","format":"uri"}
--generation-typeno{"type":"string","enum":["generate","edit"]}
--response-formatno{"type":"string","enum":["url","b64_json"]}
--aspect-rationo{"type":"string"}

kitta image jobs list

kitta image jobs list --api-url https://fishaudio.org --help
kitta image jobs list --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v1/media/images/jobs. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--page <value>page—
--limit <value>limit—
--status <value>status—
--generation-type <value>generation_type—
--allFetch all pages—
--max-pages <count>Maximum pages to fetch100

API field constraints

FlagRequiredSchema
--pageno{"type":"integer","minimum":1,"maximum":10000}
--limitno{"type":"integer","minimum":1,"maximum":100}
--statusno{"type":"string","maxLength":64}
--generation-typeno{"type":"string","enum":["generate","edit"]}

kitta image jobs get

kitta image jobs get --api-url https://fishaudio.org --help
kitta image jobs get --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v1/media/images/jobs/{jobId}. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--job <value>Required. jobId—

API field constraints

FlagRequiredSchema
--jobyes{"type":"string"}

kitta video generate

kitta video generate --api-url https://fishaudio.org --help
kitta video generate --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v1/media/videos/jobs. Retry: idempotent.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--prompt <value>Required. prompt—
--model <value>model—
--references <values...>references—
--size <value>size—
--seconds <value>seconds—
--watermarkwatermark—
--no-watermarkSet watermark to false—
--privateprivate—
--no-privateSet private to false—
--idempotency-key <key>Stable submission key; retry policy is shown by --schema—
--output <path>Save binary output to a new file—
--waitWait for a terminal task state—
--wait-timeout <seconds>Maximum local wait600

API field constraints

FlagRequiredSchema
--promptyes{"type":"string"}
--modelno{"type":"string"}
--referencesno{"type":"array","items":{"type":"object","required":["role","url"],"properties":{"role":{"type":"string","enum":["start_frame","end_frame","reference"]},"url":{"type":"string","format":"uri"}}}}
--sizeno{"type":"string"}
--secondsno{"oneOf":[{"type":"string"},{"type":"number"}]}
--watermarkno{"type":"boolean"}
--privateno{"type":"boolean"}

kitta video jobs list

kitta video jobs list --api-url https://fishaudio.org --help
kitta video jobs list --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v1/media/videos/jobs. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--page <value>page—
--limit <value>limit—
--status <value>status—
--allFetch all pages—
--max-pages <count>Maximum pages to fetch100

API field constraints

FlagRequiredSchema
--pageno{"type":"integer","minimum":1,"maximum":10000}
--limitno{"type":"integer","minimum":1,"maximum":100}
--statusno{"type":"string","maxLength":64}

kitta video jobs get

kitta video jobs get --api-url https://fishaudio.org --help
kitta video jobs get --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v1/media/videos/jobs/{jobId}. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--job <value>Required. jobId—

API field constraints

FlagRequiredSchema
--jobyes{"type":"string"}

kitta video lip-sync generate

kitta video lip-sync generate --api-url https://fishaudio.org --help
kitta video lip-sync generate --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v1/media/lip-sync/jobs. Retry: never.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--video-url <value>Required. video_url—
--audio-url <value>Required. audio_url—
--model <value>model—
--video-extensionWhen false, billing uses the shorter video/audio input. When true, billing uses audio duration and the provider extends the video.—
--no-video-extensionSet video_extension to false—
--output <path>Save binary output to a new file—
--waitWait for a terminal task state—
--wait-timeout <seconds>Maximum local wait600

API field constraints

FlagRequiredSchema
--video-urlyes{"type":"string","format":"uri"}
--audio-urlyes{"type":"string","format":"uri"}
--modelno{"type":["string","null"]}
--video-extensionno{"type":"boolean","default":false,"description":"When false, billing uses the shorter video/audio input. When true, billing uses audio duration and the provider extends the video."}

kitta video lip-sync jobs list

kitta video lip-sync jobs list --api-url https://fishaudio.org --help
kitta video lip-sync jobs list --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v1/media/lip-sync/jobs. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--page <value>page—
--limit <value>limit—
--status <value>status—
--allFetch all pages—
--max-pages <count>Maximum pages to fetch100

API field constraints

FlagRequiredSchema
--pageno{"type":"integer","minimum":1,"default":1}
--limitno{"type":"integer","minimum":1,"maximum":50,"default":10}
--statusno{"type":"string"}

kitta video lip-sync jobs get

kitta video lip-sync jobs get --api-url https://fishaudio.org --help
kitta video lip-sync jobs get --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v1/media/lip-sync/jobs/{jobId}. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--job <value>Required. jobId—

API field constraints

FlagRequiredSchema
--jobyes{"type":"string"}

kitta video dubbing generate

kitta video dubbing generate --api-url https://fishaudio.org --help
kitta video dubbing generate --api-url https://fishaudio.org --schema

HTTP: POST /api/open/v1/media/video-dubbing/jobs. Retry: idempotent.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--video-url <value>Required. video_url—
--text <value>Required. text—
--reference-id <value>Required. Fish Audio voice id—
--model-id <value>model_id—
--speed <value>Platform speaking speed range. Model limits apply; ElevenLabs requires 0.7–1.2.—
--volume <value>Platform volume control for engines that support it. ElevenLabs does not apply this field.—
--stability <value>Model-specific stability: Fish Audio 0.5–1.5 (default 1); ElevenLabs 0–1 (default 0.5). Other engines do not apply this field.—
--similarity <value>Model-specific voice consistency: Fish Audio 0.5–1.5 (default 1); ElevenLabs 0–1 (default 0.75). Other engines do not apply this field.—
--pitch <value>Pitch adjustment for MiniMax and Qwen models.—
--language <value>language—
--emotion <value>emotion—
--instruction <value>instruction—
--text-normalizationtext_normalization—
--no-text-normalizationSet text_normalization to false—
--idempotency-key <key>Stable submission key; retry policy is shown by --schema—
--output <path>Save binary output to a new file—
--waitWait for a terminal task state—
--wait-timeout <seconds>Maximum local wait600

API field constraints

FlagRequiredSchema
--video-urlyes{"type":"string","format":"uri"}
--textyes{"type":"string","minLength":1,"maxLength":5000}
--reference-idyes{"type":"string","description":"Fish Audio voice id"}
--model-idno{"type":"string","enum":["gemini-3.8-flash-tts","gemini-3.8-flash-lite-tts","fishaudio-drama3-preview","fishaudio-s21pro","fishaudio-s2pro","fishaudio-s1","fishaudio-s21pro-flash","minimax-2.8-turbo","minimax-2.8-hd","minimax-2.6-turbo","minimax-2.6-hd","qwen3-tts-flash","qwen-audio-3.0-tts-plus","qwen-audio-3.0-tts-flash","cosyvoice-v3-flash","doubao-tts-2.0","elevenlabs-flash-v2.5","elevenlabs-multilingual-v2"]}
--speedno{"type":"number","minimum":0.5,"maximum":2,"default":1,"description":"Platform speaking speed range. Model limits apply; ElevenLabs requires 0.7–1.2."}
--volumeno{"type":"number","minimum":-20,"maximum":20,"default":0,"description":"Platform volume control for engines that support it. ElevenLabs does not apply this field."}
--stabilityno{"type":"number","minimum":0,"maximum":1.5,"description":"Model-specific stability: Fish Audio 0.5–1.5 (default 1); ElevenLabs 0–1 (default 0.5). Other engines do not apply this field."}
--similarityno{"type":"number","minimum":0,"maximum":1.5,"description":"Model-specific voice consistency: Fish Audio 0.5–1.5 (default 1); ElevenLabs 0–1 (default 0.75). Other engines do not apply this field."}
--pitchno{"type":"number","minimum":-12,"maximum":12,"default":0,"description":"Pitch adjustment for MiniMax and Qwen models."}
--languageno{"type":"string","maxLength":32}
--emotionno{"type":"string","maxLength":64}
--instructionno{"type":"string","maxLength":1600}
--text-normalizationno{"type":"boolean","default":true}

kitta video dubbing jobs get

kitta video dubbing jobs get --api-url https://fishaudio.org --help
kitta video dubbing jobs get --api-url https://fishaudio.org --schema

HTTP: GET /api/open/v1/media/video-dubbing/jobs/{jobId}. Retry: read.

OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--schemaShow the offline command contract—
--dry-runValidate and preview without network or state writes—
--job <value>Required. jobId—

API field constraints

FlagRequiredSchema
--jobyes{"type":"string"}

kitta audio jobs wait

kitta audio jobs wait --api-url https://fishaudio.org --help
kitta audio jobs wait --api-url https://fishaudio.org --schema
OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--job <id>Required. TTS task ID—
--wait-timeout <seconds>Maximum local wait600
--output <path>Download once ready—
--schemaDescribe this workflow offline—
--dry-runValidate and preview without network access—

kitta audio jobs wait

kitta audio jobs wait --api-url https://fishaudio.org --help
kitta audio jobs wait --api-url https://fishaudio.org --schema
OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--job <id>Required. Existing task ID—
--wait-timeout <seconds>Maximum local wait600
--output <path>Download the first result artifact to a new file—
--schemaDescribe this workflow offline—
--dry-runValidate and preview without network access—

kitta audio jobs wait

kitta audio jobs wait --api-url https://fishaudio.org --help
kitta audio jobs wait --api-url https://fishaudio.org --schema
OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--job <id>Required. Existing task ID—
--wait-timeout <seconds>Maximum local wait600
--output <path>Download the first result artifact to a new file—
--schemaDescribe this workflow offline—
--dry-runValidate and preview without network access—

kitta audio jobs wait

kitta audio jobs wait --api-url https://fishaudio.org --help
kitta audio jobs wait --api-url https://fishaudio.org --schema
OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--job <id>Required. Existing task ID—
--wait-timeout <seconds>Maximum local wait600
--output <path>Download the first result artifact to a new file—
--schemaDescribe this workflow offline—
--dry-runValidate and preview without network access—

kitta audio jobs wait

kitta audio jobs wait --api-url https://fishaudio.org --help
kitta audio jobs wait --api-url https://fishaudio.org --schema
OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--job <id>Required. Existing task ID—
--wait-timeout <seconds>Maximum local wait600
--output <path>Download the first result artifact to a new file—
--schemaDescribe this workflow offline—
--dry-runValidate and preview without network access—

kitta audio jobs wait

kitta audio jobs wait --api-url https://fishaudio.org --help
kitta audio jobs wait --api-url https://fishaudio.org --schema
OptionDescriptionCLI default
-V, --versionoutput the version number—
--jsonMachine-readable JSON output—
--api-url <origin>Kitta API originhttps://kittaai.com
--timeout <seconds>Per-request timeout30
--job <id>Required. Existing task ID—
--wait-timeout <seconds>Maximum local wait600
--output <path>Download the first result artifact to a new file—
--schemaDescribe this workflow offline—
--dry-runValidate and preview without network access—

Authentication and Skills workflows

kitta auth login

Usage: kitta auth login [options]

Validate an API key and store it in the system credential manager

Options:
  -h, --help  display help for command

kitta auth logout

Usage: kitta auth logout [options]

Remove the stored credential for this API origin

Options:
  -h, --help  display help for command

kitta skills generate

Usage: kitta skills generate [options]

Write version-matched CLI reference and audio workflows offline

Options:
  --output-dir <path>  New skill directory (default:
                       ".agents/skills/kitta-audio")
  -h, --help           display help for command

Login reads an API key from a hidden prompt. Logout removes only the keyring credential for the current origin. Skills generation creates a new directory offline and does not overwrite an existing directory.

Batch workflows

kitta batch validate

Usage: kitta batch validate [options] <manifest>

Validate a versioned JSON batch manifest without network access

Arguments:
  manifest    Batch manifest JSON file

Options:
  -h, --help  display help for command

kitta batch run

Usage: kitta batch run [options] <manifest>

Run a new recoverable batch

Arguments:
  manifest               Batch manifest JSON file

Options:
  --concurrency <count>  Override manifest concurrency (1-8)
  -h, --help             display help for command

kitta batch status

Usage: kitta batch status [options] <run-id>

Read a persisted batch run without network access

Arguments:
  run-id      Batch run UUID

Options:
  -h, --help  display help for command

kitta batch resume

Usage: kitta batch resume [options] <run-id>

Resume pending or failed tasks with their original idempotency keys

Arguments:
  run-id                 Batch run UUID

Options:
  --manifest <path>      Manifest path when the original file moved
  --concurrency <count>  Override saved concurrency (1-8)
  -h, --help             display help for command

Batch manifests use versioned JSON. Validate is offline, run returns a run ID, status reads redacted local state, and resume uses the original idempotency keys for incomplete items.

On this page

kitta files uploadAPI field constraintskitta auth statuskitta auth profile updatekitta audio models listkitta audio voices listAPI field constraintskitta audio voices getAPI field constraintskitta audio ttsAPI field constraintskitta audio jobs listAPI field constraintskitta audio jobs getAPI field constraintskitta audio jobs downloadAPI field constraintskitta audio jobs segment downloadAPI field constraintskitta audio transcribeAPI field constraintskitta audio voices cloneAPI field constraintskitta audio voices designAPI field constraintskitta audio voices saveAPI field constraintskitta audio voices previewAPI field constraintskitta audio voices deleteAPI field constraintskitta audio voices updateAPI field constraintskitta audio personal-voice generateAPI field constraintskitta audio personal-voice getAPI field constraintskitta models listAPI field constraintskitta image generateAPI field constraintskitta image jobs listAPI field constraintskitta image jobs getAPI field constraintskitta video generateAPI field constraintskitta video jobs listAPI field constraintskitta video jobs getAPI field constraintskitta video lip-sync generateAPI field constraintskitta video lip-sync jobs listAPI field constraintskitta video lip-sync jobs getAPI field constraintskitta video dubbing generateAPI field constraintskitta video dubbing jobs getAPI field constraintskitta audio jobs waitkitta audio jobs waitkitta audio jobs waitkitta audio jobs waitkitta audio jobs waitkitta audio jobs waitAuthentication and Skills workflowskitta auth loginkitta auth logoutkitta skills generateBatch workflowskitta batch validatekitta batch runkitta batch statuskitta batch resume