Authenticate the Galtea CLI and explore the command surface
The galtea CLI is a terminal-native client for the Galtea AI testing & evaluation platform. Every REST API operation ships as a galtea <noun> <verb> command, auto-generated from the OpenAPI spec of the Galtea API release it was built with.
Let your coding agent manage Galtea for you. Claude Code, Cursor, Windsurf, and other agents can use the CLI to create products, run evaluations, pull traces, and more — without leaving your editor.
Script your workflows. Automate repetitive tasks like batch-creating tests, kicking off evaluations from CI/CD, or syncing specifications across environments.
Faster than the dashboard for quick lookups. List the last 10 evaluations, check a session’s status, or pull traces in seconds.
The CLI supports both an interactive flow for local use and a non-interactive flow for CI and Docker.
Interactive
Non-interactive / CI
galtea login# Paste your gsk_* API key when prompted.
The key is validated against the server, then stored in your user config directory, typically ~/.config/galtea/apis.json, with mode 0600 (only your user can read it). You can grab a gsk_* key from the settings page.
export GALTEA_API_KEY=gsk_...
If GALTEA_API_KEY is exported in the environment, running galtea login becomes optional — running it anyway stores the key to disk for future shells.
If your company puts an API gateway in front of Galtea, the gateway may ask for its own headers. Set them in GALTEA_EXTRA_HEADERS as a JSON object of header names to string values. The Python SDK uses the same variable and format.
The CLI sends these headers on the galtea login key check and on every later command. It never writes them to apis.json. A profile that names its own auth handler in apis.json does not get them.The --host URL can include the path the gateway publishes Galtea under, such as https://galtea-gateway.example.com/my-org/galtea.You can also save a header on the default profile in apis.json:
The CLI sends a profile header only while that profile is active. With GALTEA_API_KEY set, the CLI uses another profile, so use GALTEA_EXTRA_HEADERS. Without it, galtea login fails at the key check.
When you paste the key, galtea login sends the saved headers if they belong to the login host: the base in apis.json is that host, or you have not logged in yet.
A login to another host does not send the saved headers. It removes them from apis.json and prints their names. To rotate the key, pass the same --host again.
Rules for both:
When both set the same header, GALTEA_EXTRA_HEADERS wins.
They cannot replace Authorization, User-Agent, Content-Type, Content-Length or Host. The CLI drops those with a warning.
A value must be ASCII text with no leading or trailing space or tab.
A redirect that changes the host, the scheme or the port drops these headers, as the Python SDK does. A subdomain is another host. A redirect from http to https on the default ports keeps them.
The CLI does not download its commands from the API. Each CLI version has the commands of the Galtea API release it was built with. So one CLI version always offers the same commands, and a script that works today keeps working until you upgrade.When the API adds an operation, the operation reaches the CLI in the next CLI release. If a command from the REST API is missing in your CLI, update the CLI with the tool you installed it with.
galtea sync is deprecated. It does nothing, prints how to update the CLI, and will be removed on 2028-01-17. Remove it from your scripts.
When you use a command, flag, or request body field that Galtea plans to remove, the CLI prints one line on stderr. The command still runs, and stdout holds only the response, so galtea ... -o json > out.json keeps working.Every warning has the same shape: what goes, when, and what to do next. These examples use made-up commands:
warning: deprecated: `galtea products list` will be removed on 2028-01-17. Use `galtea products search` instead.warning: deprecated: the `--tags` flag of `galtea products list` will be removed on 2028-01-17. Use `--labels` instead.warning: deprecated: the `legacyTag` field of `galtea products create` will be removed on 2028-07-17. It has no replacement: remove it from your scripts.warning: deprecated: `galtea products get` will be removed on 2028-07-17. Update the CLI to see what replaces it.
“Use … instead”: change your script to the replacement before the date.
“It has no replacement”: the feature is retired. Remove the call or the option before the date.
“Update the CLI”: the API deprecated this after your CLI version was released. Update the CLI, then run the command with --help to see its replacement.
A deprecated command or flag no longer shows in --help, but it keeps working until its removal date. A command that was renamed keeps working under its old name until that date, and the warning names the new one.
The CLI asks the Galtea platform if it serves your CLI version. It asks at galtea login, and before a command at most once a day. It also asks again right after you update the CLI.
The platform cannot serve your CLI version. This happens when the CLI is newer than the platform, or when the platform no longer supports its major version. The command stops with exit code 10 before it sends its request. The message names the command of each install tool (Homebrew, APT, DNF and pip) that installs a matching CLI, and links to Install an older version.
Your CLI version has an end date. A warning names the date and the update command of each install method. The command runs.
A newer CLI is available. A notice names the new version and the update commands. The command runs.
The warning and the notice print only on the run that asks, so you see them at most once a day. If the platform cannot answer, the command runs.If galtea login finds a CLI version the platform cannot serve, it does not save the key and exits with code 10. Install a matching CLI, then log in again. The commands that report on the platform itself, such as galtea health, galtea build-info and galtea platform-compatibility, skip the check, so they still run on a blocked CLI.
The CLI is a great fit for AI coding assistants. Install the Galtea Agent Skill and Claude Code, Cursor, Windsurf, or any other Agent-Skills-compatible client will reach for galtea on your behalf — picking the right command, handling authentication, and following the workflows our team has already validated, so you don’t have to brief your agent on Galtea first.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Galtea Docs","colors":{"primary":"#5286FF","light":"#A9E3FE","dark":"#171717"},"logo":{"light":"https://mintcdn.com/galtea/t4BZ_SsOYjDJqfd8/logo/light.svg?fit=max\u0026auto=format\u0026n=t4BZ_SsOYjDJqfd8\u0026q=85\u0026s=52a5941e3fa4d5af453da96cfa8d07e5","dark":"https://mintcdn.com/galtea/t4BZ_SsOYjDJqfd8/logo/dark.svg?fit=max\u0026auto=format\u0026n=t4BZ_SsOYjDJqfd8\u0026q=85\u0026s=0ea251446a97e2cd0bb0e9de1b049412"},"favicon":"https://mintcdn.com/galtea/sKxmtq77X98SiOSi/favicon.png?fit=max\u0026auto=format\u0026n=sKxmtq77X98SiOSi\u0026q=85\u0026s=a297a4f88e5dd07d7858dc2998dfe3ce","appearance":{"default":"system","strict":false},"background":{"color":{"light":"#f6f6f5","dark":"#09090a"}},"navbar":{"links":[{"href":"mailto:support@galtea.ai","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://platform.galtea.ai"}},"footer":{"socials":{"linkedin":"https://linkedin.com/company/galtea-ai","website":"https://galtea.ai"}},"fonts":{"family":"Geist"},"icons":{"library":"fontawesome"},"styling":{"eyebrows":"breadcrumbs","codeblocks":"system","latex":true},"integrations":{"posthog":{"apiKey":"phc_5hcYhBTteqSv1mp9ObS5j28EKEA1HV6sog9EZHikgcF","apiHost":"https://t.galtea.ai","sessionRecording":false}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://galtea.ai/blog"},{"anchor":"Changelog","icon":"list-check","href":"https://docs.galtea.ai/changelog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"galtea","hasAudioNarration":false,"actualSubdomain":"galtea","customDomains":["docs.galtea.ai"],"gitSource":{"type":"github","owner":"galtea-ai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae8bd41e4f1cb0cd68b47e6","collectionId":"2741a063-6bbd-4165-aff7-bf23db90c321","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae8bd41e4f1cb0cd68b47e6"},"entitlements":{},"buildId":"6ae8bd41e4f1cb0cd68b47e6","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Concepts","count":436},{"language":"default","tag":"REST API","count":225},{"language":"default","tag":"Endpoints","count":223},{"language":"default","tag":"SDK","count":157},{"language":"default","tag":"Metrics","count":44},{"language":"default","tag":"Guides","count":37},{"language":"default","tag":"metrics","count":21},{"language":"default","tag":"Deployment","count":20},{"language":"default","tag":"evaluations","count":20},{"language":"default","tag":"monitors","count":20}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"cli/usage","slug":"/cli/usage","pageMetadata":{"title":"Usage","description":"Authenticate the Galtea CLI and explore the command surface","icon":"terminal","href":"/cli/usage"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Authenticate the Galtea CLI and explore the command surface\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tab,Tabs,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`galtea`}),` CLI is a terminal-native client for the Galtea AI testing \u0026 evaluation platform. Every `,_jsx(_components.a,{href:`/api-reference`,children:`REST API`}),` operation ships as a `,_jsx(_components.code,{children:`galtea \u003cnoun> \u003cverb>`}),` command, auto-generated from the OpenAPI spec of the Galtea API release it was built with.`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-it-can-do`,children:`What it can do`}),`\n`,_jsxs(_components.p,{children:[`Anything the `,_jsx(_components.a,{href:`/api-reference`,children:`Galtea API`}),` does — every endpoint is reachable as a CLI command, with auth, retries, and shell completion handled for you.`]}),`\n`,_jsx(Heading,{level:`3`,id:`why-use-it`,children:`Why use it`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Let your coding agent manage Galtea for you.`}),` Claude Code, Cursor, Windsurf, and other agents can use the CLI to create products, run evaluations, pull traces, and more — without leaving your editor.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Script your workflows.`}),` Automate repetitive tasks like batch-creating tests, kicking off evaluations from CI/CD, or syncing specifications across environments.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Faster than the dashboard for quick lookups.`}),` List the last 10 evaluations, check a session’s status, or pull traces in seconds.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`authentication`,children:`Authentication`}),`\n`,_jsx(_components.p,{children:`The CLI supports both an interactive flow for local use and a non-interactive flow for CI and Docker.`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Interactive`,id:`interactive`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`galtea`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` login`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Paste your gsk_* API key when prompted.`})}),`\n`]})})}),_jsxs(_components.p,{children:[`The key is validated against the server, then stored in your user config directory, typically `,_jsx(_components.code,{children:`~/.config/galtea/apis.json`}),`, with mode `,_jsx(_components.code,{children:`0600`}),` (only your user can read it). You can grab a `,_jsx(_components.code,{children:`gsk_*`}),` key from the `,_jsx(_components.a,{href:`https://platform.galtea.ai/settings`,children:`settings page`}),`.`]})]}),_jsxs(Tab,{title:`Non-interactive / CI`,id:`non-interactive-%2F-ci`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` GALTEA_API_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`gsk_`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`...`})]}),`\n`]})})}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`GALTEA_API_KEY`}),` is exported in the environment, running `,_jsx(_components.code,{children:`galtea login`}),` becomes `,_jsx(_components.strong,{children:`optional`}),` — running it anyway stores the key to disk for future shells.`]})})]})]}),`\n`,_jsx(Heading,{level:`4`,id:`behind-an-api-gateway`,children:`Behind an API gateway`}),`\n`,_jsxs(_components.p,{children:[`If your company puts an API gateway in front of Galtea, the gateway may ask for its own headers. Set them in `,_jsx(_components.code,{children:`GALTEA_EXTRA_HEADERS`}),` as a JSON object of header names to string values. The Python SDK uses the same variable and format.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` GALTEA_EXTRA_HEADERS`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'{\"X-IBM-Client-Id\":\"\u003cyour-client-id>\"}'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`galtea`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` login`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --host`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://galtea-gateway.example.com`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The CLI sends these headers on the `,_jsx(_components.code,{children:`galtea login`}),` key check and on every later command. It never writes them to `,_jsx(_components.code,{children:`apis.json`}),`. A profile that names its own auth handler in `,_jsx(_components.code,{children:`apis.json`}),` does not get them.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`--host`}),` URL can include the path the gateway publishes Galtea under, such as `,_jsx(_components.code,{children:`https://galtea-gateway.example.com/my-org/galtea`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`You can also save a header on the `,_jsx(_components.code,{children:`default`}),` profile in `,_jsx(_components.code,{children:`apis.json`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The CLI sends a profile header only while that profile is active. With `,_jsx(_components.code,{children:`GALTEA_API_KEY`}),` set, the CLI uses another profile, so use `,_jsx(_components.code,{children:`GALTEA_EXTRA_HEADERS`}),`. Without it, `,_jsx(_components.code,{children:`galtea login`}),` fails at the key check.`]}),`\n`,_jsxs(_components.li,{children:[`When you paste the key, `,_jsx(_components.code,{children:`galtea login`}),` sends the saved headers if they belong to the login host: the `,_jsx(_components.code,{children:`base`}),` in `,_jsx(_components.code,{children:`apis.json`}),` is that host, or you have not logged in yet.`]}),`\n`,_jsxs(_components.li,{children:[`A login to another host does not send the saved headers. It removes them from `,_jsx(_components.code,{children:`apis.json`}),` and prints their names. To rotate the key, pass the same `,_jsx(_components.code,{children:`--host`}),` again.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Rules for both:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`When both set the same header, `,_jsx(_components.code,{children:`GALTEA_EXTRA_HEADERS`}),` wins.`]}),`\n`,_jsxs(_components.li,{children:[`They cannot replace `,_jsx(_components.code,{children:`Authorization`}),`, `,_jsx(_components.code,{children:`User-Agent`}),`, `,_jsx(_components.code,{children:`Content-Type`}),`, `,_jsx(_components.code,{children:`Content-Length`}),` or `,_jsx(_components.code,{children:`Host`}),`. The CLI drops those with a warning.`]}),`\n`,_jsx(_components.li,{children:`A value must be ASCII text with no leading or trailing space or tab.`}),`\n`,_jsx(_components.li,{children:`A redirect that changes the host, the scheme or the port drops these headers, as the Python SDK does. A subdomain is another host. A redirect from http to https on the default ports keeps them.`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`your-first-command`,children:`Your first command`}),`\n`,_jsx(_components.p,{children:`Once you’re authenticated, list your products to validate end-to-end auth and connectivity:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`galtea`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` products`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`If this returns a list (even an empty one) instead of a `,_jsx(_components.code,{children:`401 Unauthorized`}),`, you’re ready to go.`]}),`\n`,_jsx(Heading,{level:`3`,id:`discovering-all-commands`,children:`Discovering all commands`}),`\n`,_jsx(_components.p,{children:`These are the commands your CLI version ships with.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`galtea`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` help`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`For parameter, request body, and response shape details, see the `,_jsx(_components.a,{href:`/api-reference`,children:_jsx(_components.strong,{children:`REST API`})}),` tab.`]}),`\n`,_jsx(Heading,{level:`3`,id:`getting-new-commands`,children:`Getting new commands`}),`\n`,_jsxs(_components.p,{children:[`The CLI does not download its commands from the API. Each CLI version has the commands of the `,_jsx(_components.a,{href:`/api-reference`,children:`Galtea API`}),` release it was built with. So one CLI version always offers the same commands, and a script that works today keeps working until you upgrade.`]}),`\n`,_jsxs(_components.p,{children:[`When the API adds an operation, the operation reaches the CLI in the next CLI release. If a command from the REST API is missing in your CLI, `,_jsx(_components.a,{href:`/cli/installation#update`,children:`update the CLI`}),` with the tool you installed it with.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`galtea sync`}),` is deprecated. It does nothing, prints how to update the CLI, and will be removed on 2028-01-17. Remove it from your scripts.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`deprecation-warnings`,children:`Deprecation warnings`}),`\n`,_jsxs(_components.p,{children:[`When you use a command, flag, or request body field that Galtea plans to remove, the CLI prints one line on stderr. The command still runs, and stdout holds only the response, so `,_jsx(_components.code,{children:`galtea ... -o json > out.json`}),` keeps working.`]}),`\n`,_jsx(_components.p,{children:`Every warning has the same shape: what goes, when, and what to do next. These examples use made-up commands:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"warning: deprecated: `galtea products list` will be removed on 2028-01-17. Use `galtea products search` instead.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"warning: deprecated: the `--tags` flag of `galtea products list` will be removed on 2028-01-17. Use `--labels` instead.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"warning: deprecated: the `legacyTag` field of `galtea products create` will be removed on 2028-07-17. It has no replacement: remove it from your scripts.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\"warning: deprecated: `galtea products get` will be removed on 2028-07-17. Update the CLI to see what replaces it.\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`“Use … instead”`}),`: change your script to the replacement before the date.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`“It has no replacement”`}),`: the feature is retired. Remove the call or the option before the date.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`“Update the CLI”`}),`: the API deprecated this after your CLI version was released. `,_jsx(_components.a,{href:`/cli/installation#update`,children:`Update the CLI`}),`, then run the command with `,_jsx(_components.code,{children:`--help`}),` to see its replacement.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`A deprecated command or flag no longer shows in `,_jsx(_components.code,{children:`--help`}),`, but it keeps working until its removal date. A command that was renamed keeps working under its old name until that date, and the warning names the new one.`]}),`\n`,_jsx(Heading,{level:`3`,id:`version-checks`,children:`Version checks`}),`\n`,_jsxs(_components.p,{children:[`The CLI asks the Galtea platform if it serves your CLI version. It asks at `,_jsx(_components.code,{children:`galtea login`}),`, and before a command at most once a day. It also asks again right after you update the CLI.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`The platform cannot serve your CLI version.`}),` This happens when the CLI is newer than the platform, or when the platform no longer supports its major version. The command stops with exit code `,_jsx(_components.code,{children:`10`}),` before it sends its request. The message names the command of each install tool (Homebrew, APT, DNF and pip) that installs a matching CLI, and links to `,_jsx(_components.a,{href:`/cli/installation#install-an-older-version`,children:`Install an older version`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Your CLI version has an end date.`}),` A warning names the date and the update command of each install method. The command runs.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`A newer CLI is available.`}),` A notice names the new version and the update commands. The command runs.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The warning and the notice print only on the run that asks, so you see them at most once a day. If the platform cannot answer, the command runs.`}),`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`galtea login`}),` finds a CLI version the platform cannot serve, it does not save the key and exits with code `,_jsx(_components.code,{children:`10`}),`. Install a matching CLI, then log in again. The commands that report on the platform itself, such as `,_jsx(_components.code,{children:`galtea health`}),`, `,_jsx(_components.code,{children:`galtea build-info`}),` and `,_jsx(_components.code,{children:`galtea platform-compatibility`}),`, skip the check, so they still run on a blocked CLI.`]}),`\n`,_jsx(Heading,{level:`3`,id:`hand-it-to-your-coding-agent`,children:`Hand it to your coding agent`}),`\n`,_jsxs(_components.p,{children:[`The CLI is a great fit for AI coding assistants. Install the `,_jsx(_components.a,{href:`/sdk/integrations/agent-skill`,children:`Galtea Agent Skill`}),` and Claude Code, Cursor, Windsurf, or any other Agent-Skills-compatible client will reach for `,_jsx(_components.code,{children:`galtea`}),` on your behalf — picking the right command, handling authentication, and following the workflows our team has already validated, so you don’t have to brief your agent on Galtea first.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Usage","description":"Authenticate the Galtea CLI and explore the command surface","icon":"terminal","href":"/cli/usage"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What it can do","slug":"what-it-can-do","depth":3,"children":[]},{"title":"Why use it","slug":"why-use-it","depth":3,"children":[]},{"title":"Authentication","slug":"authentication","depth":3,"children":[]},{"title":"Behind an API gateway","slug":"behind-an-api-gateway","depth":4,"children":[]},{"title":"Your first command","slug":"your-first-command","depth":3,"children":[]},{"title":"Discovering all commands","slug":"discovering-all-commands","depth":3,"children":[]},{"title":"Getting new commands","slug":"getting-new-commands","depth":3,"children":[]},{"title":"Deprecation warnings","slug":"deprecation-warnings","depth":3,"children":[]},{"title":"Version checks","slug":"version-checks","depth":3,"children":[]},{"title":"Hand it to your coding agent","slug":"hand-it-to-your-coding-agent","depth":3,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/galtea/e5a02beb3e16d20a/galtea-assistant.js"],"subdomain":"galtea","siteName":"Galtea Docs","title":"Usage - Galtea Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T16:41:56.710Z","originalFileLocation":"cli/usage.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Authenticate the Galtea CLI and explore the command surface\">\u003cmeta data-mint-head name=\"application-name\" content=\"Galtea Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/galtea/uhYCG_Ntu-v3eoIp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/galtea/uhYCG_Ntu-v3eoIp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/galtea/uhYCG_Ntu-v3eoIp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/galtea/uhYCG_Ntu-v3eoIp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/galtea/uhYCG_Ntu-v3eoIp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/galtea/uhYCG_Ntu-v3eoIp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/galtea/uhYCG_Ntu-v3eoIp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/galtea/uhYCG_Ntu-v3eoIp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/galtea/uhYCG_Ntu-v3eoIp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Usage - Galtea Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Authenticate the Galtea CLI and explore the command surface\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Galtea Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.galtea.ai/cli/usage\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://galtea.mintlify.app/_mintlify/api/og/v2?division=CLI\u0026amp;title=Usage\u0026amp;description=Authenticate+the+Galtea+CLI+and+explore+the+command+surface\u0026amp;theme=70336b2daf09337d9a490c1f\u0026amp;signature=53e49813792b720014c092ea31c6de16df8a7db4eec74756d0f7f9ce93fca8a3\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Usage - Galtea Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Authenticate the Galtea CLI and explore the command surface\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://galtea.mintlify.app/_mintlify/api/og/v2?division=CLI\u0026amp;title=Usage\u0026amp;description=Authenticate+the+Galtea+CLI+and+explore+the+command+surface\u0026amp;theme=70336b2daf09337d9a490c1f\u0026amp;signature=53e49813792b720014c092ea31c6de16df8a7db4eec74756d0f7f9ce93fca8a3\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/galtea/uhYCG_Ntu-v3eoIp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Galtea Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5286FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.galtea.ai/cli/usage\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/cli/usage.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.galtea.ai/#organization\",\"name\":\"Galtea Docs\",\"url\":\"https://docs.galtea.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/galtea/t4BZ_SsOYjDJqfd8/logo/light.svg?fit=max\u0026auto=format\u0026n=t4BZ_SsOYjDJqfd8\u0026q=85\u0026s=52a5941e3fa4d5af453da96cfa8d07e5\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.galtea.ai#website\",\"name\":\"Galtea Docs\",\"url\":\"https://docs.galtea.ai\",\"publisher\":{\"@id\":\"https://docs.galtea.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.galtea.ai/cli/usage#webpage\",\"url\":\"https://docs.galtea.ai/cli/usage\",\"name\":\"Usage\",\"description\":\"Authenticate the Galtea CLI and explore the command surface\",\"dateModified\":\"2026-11-02T16:41:56.710Z\",\"isPartOf\":{\"@id\":\"https://docs.galtea.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.galtea.ai/cli/usage#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.galtea.ai/cli/usage#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"CLI\",\"item\":\"https://docs.galtea.ai/cli/installation\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Usage\",\"item\":\"https://docs.galtea.ai/cli/usage\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.galtea.ai/cli/usage#article\",\"headline\":\"Usage\",\"name\":\"Usage\",\"description\":\"Authenticate the Galtea CLI and explore the command surface\",\"url\":\"https://docs.galtea.ai/cli/usage\",\"mainEntityOfPage\":{\"@id\":\"https://docs.galtea.ai/cli/usage#webpage\"},\"dateModified\":\"2026-11-02T16:41:56.710Z\",\"publisher\":{\"@id\":\"https://docs.galtea.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.galtea.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Galtea Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Galtea Docs","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://galtea.ai/blog"},{"anchor":"Changelog","icon":"list-check","href":"https://docs.galtea.ai/changelog"}]},"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"Concepts","groups":[{"group":"Introduction","pages":[{"title":"Overview","sidebarTitle":"Overview","icon":"diagram-project","href":"/concepts/overview"}]},{"group":"SDK","pages":[{"title":"Installation","icon":"box","href":"/sdk/installation"},{"title":"Usage","icon":"code","href":"/sdk/usage"},{"title":"Galtea Client","sidebarTitle":"Galtea Client","icon":"plug","href":"/sdk/api/galtea"}]},{"group":"CLI","pages":[{"title":"Installation","description":"Install the Galtea CLI on your platform","icon":"box","href":"/cli/installation"},{"title":"Usage","icon":"terminal","href":"/cli/usage"}]},{"group":"Concepts","pages":[{"group":"Product","icon":"cube","pages":[{"title":"Product","sidebarTitle":"Overview","description":"A functionality or service evaluated by Galtea","href":"/concepts/product"},{"group":"SDK","icon":"code","pages":[{"title":"Product Service","sidebarTitle":"Service","href":"/sdk/api/product/service"},{"title":"Listing Products","sidebarTitle":"List","href":"/sdk/api/product/list"},{"title":"Retrieving Product","sidebarTitle":"Get","href":"/sdk/api/product/get"},{"title":"Retrieving Product By Name","sidebarTitle":"Get By Name","href":"/sdk/api/product/get-by-name"},{"title":"Deleting Product","sidebarTitle":"Delete","href":"/sdk/api/product/delete"}]}]},{"group":"Specification","icon":"bullseye","pages":[{"title":"Specification","sidebarTitle":"Overview","href":"/concepts/product/specification"},{"group":"SDK","icon":"code","pages":[{"title":"Specifications Service","sidebarTitle":"Service","href":"/sdk/api/specification/service"},{"title":"Create Specification","sidebarTitle":"Create","href":"/sdk/api/specification/create"},{"title":"Listing Specifications","sidebarTitle":"List","href":"/sdk/api/specification/list"},{"title":"Retrieving Specification","sidebarTitle":"Get","href":"/sdk/api/specification/get"},{"title":"Deleting Specification","sidebarTitle":"Delete","href":"/sdk/api/specification/delete"},{"title":"Link Metrics","sidebarTitle":"Link Metrics","href":"/sdk/api/specification/link-metrics"},{"title":"Unlink Metrics","sidebarTitle":"Unlink Metrics","href":"/sdk/api/specification/unlink-metrics"},{"title":"Get Linked Metrics","sidebarTitle":"Get Metrics","href":"/sdk/api/specification/get-metrics"},{"title":"Link Datasets","sidebarTitle":"Link Datasets","href":"/sdk/api/specification/link-datasets"},{"title":"Unlink Datasets","sidebarTitle":"Unlink Datasets","href":"/sdk/api/specification/unlink-datasets"},{"title":"Get Linked Datasets","sidebarTitle":"Get Datasets","href":"/sdk/api/specification/get-datasets"}]}]},{"group":"Monitor","icon":"gauge-high","pages":[{"title":"Monitor","sidebarTitle":"Overview","href":"/concepts/product/monitor"},{"group":"SDK","icon":"code","pages":[{"title":"Monitors Service","sidebarTitle":"Service","href":"/sdk/api/monitor/service"},{"title":"Create Monitor","sidebarTitle":"Create","href":"/sdk/api/monitor/create"},{"title":"Listing Monitors","sidebarTitle":"List","href":"/sdk/api/monitor/list"},{"title":"Retrieving Monitor","sidebarTitle":"Get","href":"/sdk/api/monitor/get"},{"title":"Updating Monitor","sidebarTitle":"Update","href":"/sdk/api/monitor/update"},{"title":"Pausing Monitor","sidebarTitle":"Pause","href":"/sdk/api/monitor/pause"},{"title":"Resuming Monitor","sidebarTitle":"Resume","href":"/sdk/api/monitor/resume"},{"title":"Deleting Monitor","sidebarTitle":"Delete","href":"/sdk/api/monitor/delete"}]}]},{"group":"Version","icon":"code-branch","pages":[{"title":"Version","sidebarTitle":"Overview","href":"/concepts/product/version"},{"group":"SDK","icon":"code","pages":[{"title":"Version Service","sidebarTitle":"Service","href":"/sdk/api/version/service"},{"title":"Create Version","sidebarTitle":"Create","href":"/sdk/api/version/create"},{"title":"Get or Create Version","sidebarTitle":"Get or Create","href":"/sdk/api/version/get-or-create"},{"title":"Listing Versions","sidebarTitle":"List","href":"/sdk/api/version/list"},{"title":"Retrieving Version","sidebarTitle":"Get","href":"/sdk/api/version/get"},{"title":"Retrieving Version By Name","sidebarTitle":"Get By Name","href":"/sdk/api/version/get-by-name"},{"title":"Update Version","sidebarTitle":"Update","href":"/sdk/api/version/update"},{"title":"Deleting Version","sidebarTitle":"Delete","href":"/sdk/api/version/delete"}]}]},{"group":"Endpoint Connection","icon":"plug","pages":[{"title":"Endpoint Connection","sidebarTitle":"Overview","href":"/concepts/product/endpoint-connection"},{"title":"Input Schema","sidebarTitle":"Input Schema","icon":"brackets-curly","href":"/concepts/product/endpoint-connection-input-schema"},{"title":"Templates \u0026 Mapping","sidebarTitle":"Templates \u0026 Mapping","icon":"code","href":"/concepts/product/endpoint-connection-configuration"},{"title":"Structured Input Template Syntax","sidebarTitle":"Template Syntax","icon":"brackets-curly","href":"/concepts/product/endpoint-connection-template-syntax"},{"group":"SDK","icon":"code","pages":[{"title":"Endpoint Connection Service","sidebarTitle":"Service","href":"/sdk/api/endpoint-connection/service"},{"title":"Create Endpoint Connection","sidebarTitle":"Create","href":"/sdk/api/endpoint-connection/create"},{"title":"List Endpoint Connections","sidebarTitle":"List","href":"/sdk/api/endpoint-connection/list"},{"title":"Get Endpoint Connection","sidebarTitle":"Get","href":"/sdk/api/endpoint-connection/get"},{"title":"Get Endpoint Connection By Name","sidebarTitle":"Get By Name","href":"/sdk/api/endpoint-connection/get-by-name"},{"title":"Update Endpoint Connection","sidebarTitle":"Update","href":"/sdk/api/endpoint-connection/update"},{"title":"Delete Endpoint Connection","sidebarTitle":"Delete","href":"/sdk/api/endpoint-connection/delete"},{"title":"Test Connection","sidebarTitle":"Test Connection","href":"/sdk/api/endpoint-connection/test-connection"}]}]},{"group":"Phone Connection","icon":"phone","pages":[{"title":"Phone Connection","sidebarTitle":"Overview","href":"/concepts/product/phone-connection"},{"group":"SDK","icon":"code","pages":[{"title":"Phone Connection Service","sidebarTitle":"Service","href":"/sdk/api/phone-connection/service"},{"title":"Create Phone Connection","sidebarTitle":"Create","href":"/sdk/api/phone-connection/create"},{"title":"List Phone Connections","sidebarTitle":"List","href":"/sdk/api/phone-connection/list"},{"title":"Get Phone Connection","sidebarTitle":"Get","href":"/sdk/api/phone-connection/get"},{"title":"Get Phone Connection By Name","sidebarTitle":"Get By Name","href":"/sdk/api/phone-connection/get-by-name"},{"title":"Update Phone Connection","sidebarTitle":"Update","href":"/sdk/api/phone-connection/update"},{"title":"Delete Phone Connection","sidebarTitle":"Delete","href":"/sdk/api/phone-connection/delete"}]}]},{"group":"WebRTC Connection","icon":"tower-broadcast","pages":[{"title":"WebRTC Connection","sidebarTitle":"Overview","href":"/concepts/product/webrtc-connection"},{"group":"SDK","icon":"code","pages":[{"title":"WebRTC Connection Service","sidebarTitle":"Service","href":"/sdk/api/webrtc-connection/service"},{"title":"Create WebRTC Connection","sidebarTitle":"Create","href":"/sdk/api/webrtc-connection/create"},{"title":"List WebRTC Connections","sidebarTitle":"List","href":"/sdk/api/webrtc-connection/list"},{"title":"Get WebRTC Connection","sidebarTitle":"Get","href":"/sdk/api/webrtc-connection/get"},{"title":"Get WebRTC Connection By Name","sidebarTitle":"Get By Name","href":"/sdk/api/webrtc-connection/get-by-name"},{"title":"Update WebRTC Connection","sidebarTitle":"Update","href":"/sdk/api/webrtc-connection/update"},{"title":"Delete WebRTC Connection","sidebarTitle":"Delete","href":"/sdk/api/webrtc-connection/delete"}]}]},{"group":"Dataset","icon":"vial-circle-check","pages":[{"title":"Dataset","sidebarTitle":"Overview","href":"/concepts/product/dataset"},{"title":"Data Augmentation","sidebarTitle":"Data Augmentation","href":"/concepts/product/dataset/data-augmentation"},{"title":"Extend Test Cases","sidebarTitle":"Extend Test Cases","icon":"layer-group","href":"/concepts/product/dataset/extend-test-cases"},{"group":"Accuracy","icon":"certificate","pages":[{"title":"Accuracy Datasets","sidebarTitle":"Overview","href":"/concepts/product/dataset/accuracy-datasets"}]},{"group":"Security \u0026 Safety","icon":"shield-check","pages":[{"title":"Security \u0026 Safety Datasets","sidebarTitle":"Overview","href":"/concepts/product/dataset/security-datasets"},{"title":"Threats","href":"/concepts/product/dataset/security-threats"},{"title":"Strategies","href":"/concepts/product/dataset/security-strategies"}]},{"group":"Behavior","icon":"person-walking","pages":[{"title":"Behavior Datasets","sidebarTitle":"Overview","href":"/concepts/product/dataset/behavior-datasets"}]},{"group":"SDK","icon":"code","pages":[{"title":"Dataset Service","sidebarTitle":"Service","href":"/sdk/api/dataset/service"},{"title":"Create Dataset","sidebarTitle":"Create","href":"/sdk/api/dataset/create"},{"title":"Listing Datasets","sidebarTitle":"List","href":"/sdk/api/dataset/list"},{"title":"Retrieving Dataset","sidebarTitle":"Get","href":"/sdk/api/dataset/get"},{"title":"Retrieving Dataset By Name","sidebarTitle":"Get By Name","href":"/sdk/api/dataset/get-by-name"},{"title":"Update Dataset","sidebarTitle":"Update","href":"/sdk/api/dataset/update"},{"title":"Deleting Dataset","sidebarTitle":"Delete","href":"/sdk/api/dataset/delete"},{"title":"Downloading Dataset","sidebarTitle":"Download","href":"/sdk/api/dataset/download"}]}]},{"group":"Test Case","icon":"list","pages":[{"title":"Test Case","sidebarTitle":"Overview","href":"/concepts/product/dataset/test-case"},{"group":"SDK","icon":"code","pages":[{"title":"Test Case Service","sidebarTitle":"Service","href":"/sdk/api/test-case/service"},{"title":"Create Test Case","sidebarTitle":"Create","href":"/sdk/api/test-case/create"},{"title":"Upload Input File","sidebarTitle":"Upload Input File","href":"/sdk/api/test-case/upload-input-file"},{"title":"Listing Test Cases","sidebarTitle":"List","href":"/sdk/api/test-case/list"},{"title":"Retrieving Test Case","sidebarTitle":"Get","href":"/sdk/api/test-case/get"},{"title":"Deleting Test Case","sidebarTitle":"Delete","href":"/sdk/api/test-case/delete"}]}]},{"group":"Conversation Simulator","icon":"comments","pages":[{"title":"Conversation Simulator","sidebarTitle":"Overview","icon":"comments","href":"/concepts/product/dataset/test-case/conversation-simulator"},{"group":"SDK","icon":"code","pages":[{"title":"Simulator Service","sidebarTitle":"Service","href":"/sdk/api/simulator/service"},{"title":"Simulate Conversation","sidebarTitle":"Simulate","href":"/sdk/api/simulator/simulate"}]}]},{"group":"Agent","icon":"robot","pages":[{"title":"AgentInput","icon":"inbox","href":"/sdk/api/agent/input"}]},{"group":"Session","icon":"clock-rotate-left","pages":[{"title":"Session","sidebarTitle":"Overview","href":"/concepts/product/version/session"},{"group":"SDK","icon":"code","pages":[{"title":"Session Service","sidebarTitle":"Service","href":"/sdk/api/session/service"},{"title":"Create Session","sidebarTitle":"Create","href":"/sdk/api/session/create"},{"title":"Get Or Create Session","sidebarTitle":"Get Or Create","href":"/sdk/api/session/get-or-create"},{"title":"List Sessions","sidebarTitle":"List","href":"/sdk/api/session/list"},{"title":"Get Session","sidebarTitle":"Get","href":"/sdk/api/session/get"},{"title":"Get Session By Custom ID","sidebarTitle":"Get By Custom ID","href":"/sdk/api/session/get-by-custom-id"},{"title":"Delete Session","sidebarTitle":"Delete","href":"/sdk/api/session/delete"},{"title":"Update Session","sidebarTitle":"Update","href":"/sdk/api/session/update"},{"title":"Finish Session","sidebarTitle":"Finish","href":"/sdk/api/session/finish"}]}]},{"group":"Trace","icon":"arrow-right-from-bracket","pages":[{"title":"Trace","sidebarTitle":"Overview","href":"/concepts/product/version/session/trace"},{"title":"Content Parts","icon":"paperclip","href":"/concepts/product/version/session/content-parts"},{"group":"SDK","icon":"code","pages":[{"title":"Trace Service","sidebarTitle":"Service","href":"/sdk/api/trace/service"},{"title":"Generate Trace","sidebarTitle":"Generate","href":"/sdk/api/trace/generate"},{"title":"Create Trace","sidebarTitle":"Create","href":"/sdk/api/trace/create"},{"title":"Create and Evaluate Trace","sidebarTitle":"Create and Evaluate","href":"/sdk/api/trace/create-and-evaluate"},{"title":"Create Trace Batch","sidebarTitle":"Create Batch","href":"/sdk/api/trace/create-batch"},{"title":"Update Trace","sidebarTitle":"Update","href":"/sdk/api/trace/update"},{"title":"Upload Output File","sidebarTitle":"Upload Output File","href":"/sdk/api/trace/upload-output-file"},{"title":"List Traces","sidebarTitle":"List","href":"/sdk/api/trace/list"},{"title":"Get Trace","sidebarTitle":"Get","href":"/sdk/api/trace/get"},{"title":"Delete Trace","sidebarTitle":"Delete","href":"/sdk/api/trace/delete"}]}]},{"group":"Span","icon":"sitemap","pages":[{"title":"Span","sidebarTitle":"Overview","href":"/concepts/product/version/session/span"},{"group":"SDK","icon":"code","pages":[{"title":"Span Service","sidebarTitle":"Service","href":"/sdk/api/span/service"},{"title":"start_span","sidebarTitle":"Start span","href":"/sdk/api/span/start-span"},{"title":"Set Context","href":"/sdk/api/span/set-context"},{"title":"Clear Context","href":"/sdk/api/span/clear-context"},{"title":"Create Span","sidebarTitle":"Create","href":"/sdk/api/span/create"},{"title":"Create Span Batch","sidebarTitle":"Create Batch","href":"/sdk/api/span/create-batch"},{"title":"List Spans","sidebarTitle":"List","href":"/sdk/api/span/list"},{"title":"Get Span","sidebarTitle":"Get","href":"/sdk/api/span/get"},{"title":"Delete Span","sidebarTitle":"Delete","href":"/sdk/api/span/delete"},{"title":"@traced Decorator","href":"/sdk/api/span/traced-decorator"}]}]},{"group":"Metrics","icon":"gauge","pages":[{"title":"Metric","sidebarTitle":"Overview","href":"/concepts/metric"},{"title":"Evaluation Types","sidebarTitle":"Evaluation Types","icon":"layer-group","href":"/concepts/metric/evaluation-types"},{"title":"Evaluation Parameters","sidebarTitle":"Evaluation Parameters","icon":"sliders","href":"/concepts/metric/evaluation-parameters"},{"title":"AI Metric Generation","sidebarTitle":"AI Generation","icon":"sparkles","href":"/concepts/metric/ai-generation"},{"title":"Classifier","sidebarTitle":"Classifier","icon":"bolt","href":"/concepts/metric/classifier"},{"group":"SDK","icon":"code","pages":[{"title":"Metrics Service","sidebarTitle":"Service","href":"/sdk/api/metric/service"},{"title":"Create Metric","sidebarTitle":"Create","href":"/sdk/api/metric/create"},{"title":"Listing Metrics","sidebarTitle":"List","href":"/sdk/api/metric/list"},{"title":"Retrieving Metric","sidebarTitle":"Get","href":"/sdk/api/metric/get"},{"title":"Retrieving Metric By Name","sidebarTitle":"Get By Name","href":"/sdk/api/metric/get-by-name"},{"title":"Deleting Metric","sidebarTitle":"Delete","href":"/sdk/api/metric/delete"},{"title":"Setting Analytics Exclusion","sidebarTitle":"Set Analytics Exclusion","href":"/sdk/api/metric/set-analytics-exclusion"},{"title":"Getting Analytics Exclusion Impact","sidebarTitle":"Get Analytics Exclusion Impact","href":"/sdk/api/metric/get-analytics-exclusion-impact"}]},{"group":"RAG","icon":"magnifying-glass-chart","pages":[{"title":"Factual Accuracy","href":"/concepts/metric/factual-accuracy"},{"title":"Resilience To Noise","href":"/concepts/metric/resilience-to-noise"},{"title":"Answer Relevancy","href":"/concepts/metric/answer-relevancy"},{"title":"Faithfulness","href":"/concepts/metric/faithfulness"},{"title":"Contextual Precision","href":"/concepts/metric/contextual-precision"},{"title":"Contextual Recall","href":"/concepts/metric/contextual-recall"},{"title":"Contextual Relevancy","href":"/concepts/metric/contextual-relevancy"}]},{"group":"Conversational","icon":"message","pages":[{"title":"Knowledge Retention","href":"/concepts/metric/knowledge-retention"},{"title":"Role Adherence","href":"/concepts/metric/role-adherence"},{"title":"Conversation Completeness","href":"/concepts/metric/conversation-completeness"},{"title":"Conversation Relevancy","href":"/concepts/metric/conversation-relevancy"},{"title":"User Satisfaction","href":"/concepts/metric/user-satisfaction"},{"title":"User Objective Accomplished","href":"/concepts/metric/user-objective-accomplished"}]},{"group":"Security \u0026 Safety","icon":"shield-check","pages":[{"title":"Misuse Resilience","href":"/concepts/metric/misuse-resilience"},{"title":"Non-Toxic","href":"/concepts/metric/non-toxic"},{"title":"Unbiased","href":"/concepts/metric/unbiased"},{"title":"Jailbreak Resilience","href":"/concepts/metric/jailbreak-resilience"},{"title":"Data Leakage","href":"/concepts/metric/data-leakage"}]},{"group":"Deterministic","icon":"calculator","pages":[{"title":"BLEU","href":"/concepts/metric/bleu"},{"title":"ROUGE","href":"/concepts/metric/rouge"},{"title":"METEOR","href":"/concepts/metric/meteor"},{"title":"Text Similarity","href":"/concepts/metric/text-similarity"},{"title":"Text Match (Deprecated)","href":"/concepts/metric/text-match"},{"title":"IOU","href":"/concepts/metric/iou"},{"title":"Spatial Match","href":"/concepts/metric/spatial-match"},{"title":"URL Validation","href":"/concepts/metric/url-validation"},{"title":"Tool Correctness","href":"/concepts/metric/tool-correctness"},{"title":"JSON Field Match","href":"/concepts/metric/json-field-match"},{"title":"JSON Field Match (Normalized)","href":"/concepts/metric/json-field-match-normalized"},{"title":"JSON Field Match (Strict)","href":"/concepts/metric/json-field-match-strict"},{"title":"JSON Field Match (Normalized, Strict)","href":"/concepts/metric/json-field-match-normalized-strict"}]}]},{"group":"Evaluation","icon":"clipboard-check","pages":[{"title":"Evaluation","sidebarTitle":"Overview","href":"/concepts/product/version/session/evaluation"},{"group":"SDK","icon":"code","pages":[{"title":"Evaluation Service","sidebarTitle":"Service","href":"/sdk/api/evaluation/service"},{"title":"Run Evaluation","sidebarTitle":"Run","href":"/sdk/api/evaluation/run"},{"title":"Create Single-Turn Evaluation","sidebarTitle":"Create Single-Turn","href":"/sdk/api/evaluation/create-single-turn"},{"title":"Create Evaluations","sidebarTitle":"Create","href":"/sdk/api/evaluation/create"},{"title":"Waiting for Evaluations","sidebarTitle":"Wait For","href":"/sdk/api/evaluation/wait-for"},{"title":"Listing Evaluations","sidebarTitle":"List","href":"/sdk/api/evaluation/list"},{"title":"Retrieving Evaluation","sidebarTitle":"Get","href":"/sdk/api/evaluation/get"},{"title":"Retrying Evaluations","sidebarTitle":"Retry","href":"/sdk/api/evaluation/retry"},{"title":"Deleting Evaluation","sidebarTitle":"Delete","href":"/sdk/api/evaluation/delete"}]}]},{"group":"Run","icon":"rocket","pages":[{"title":"Run","sidebarTitle":"Overview","href":"/concepts/product/run"},{"group":"SDK","icon":"code","pages":[{"title":"Runs Service","sidebarTitle":"Service","href":"/sdk/api/run/service"},{"title":"Start Run","sidebarTitle":"Start","href":"/sdk/api/run/start"},{"title":"List Runs","sidebarTitle":"List","href":"/sdk/api/run/list"},{"title":"Get Run","sidebarTitle":"Get","href":"/sdk/api/run/get"},{"title":"Get Run By Custom ID","sidebarTitle":"Get By Custom ID","href":"/sdk/api/run/get-by-custom-id"},{"title":"Close Run","sidebarTitle":"Close","href":"/sdk/api/run/close"},{"title":"Delete Run","sidebarTitle":"Delete","href":"/sdk/api/run/delete"}]}]},{"group":"Job","icon":"circle-stop","pages":[{"group":"SDK","icon":"code","pages":[{"title":"Jobs Service","sidebarTitle":"Service","href":"/sdk/api/job/service"},{"title":"Get Job Status","sidebarTitle":"Get Status","href":"/sdk/api/job/get-status"},{"title":"Cancel Job","sidebarTitle":"Cancel","href":"/sdk/api/job/cancel"}]}]},{"group":"Storage","icon":"box","pages":[{"group":"SDK","icon":"code","pages":[{"title":"Storage Service","sidebarTitle":"Service","href":"/sdk/api/storage/service"},{"title":"Upload File","sidebarTitle":"Upload","href":"/sdk/api/storage/upload"},{"title":"Download File","sidebarTitle":"Download","href":"/sdk/api/storage/download"},{"title":"Read File","sidebarTitle":"Read","href":"/sdk/api/storage/read"}]}]},{"group":"User Group","icon":"users","pages":[{"title":"User Group","sidebarTitle":"Overview","href":"/concepts/user-group"},{"group":"SDK","icon":"code","pages":[{"title":"User Groups Service","sidebarTitle":"Service","href":"/sdk/api/user-group/service"},{"title":"Create User Group","sidebarTitle":"Create","href":"/sdk/api/user-group/create"},{"title":"Listing User Groups","sidebarTitle":"List","href":"/sdk/api/user-group/list"},{"title":"Retrieving User Group","sidebarTitle":"Get","href":"/sdk/api/user-group/get"},{"title":"Retrieving User Group by Name","sidebarTitle":"Get by Name","href":"/sdk/api/user-group/get-by-name"},{"title":"Update User Group","sidebarTitle":"Update","href":"/sdk/api/user-group/update"},{"title":"Delete User Group","sidebarTitle":"Delete","href":"/sdk/api/user-group/delete"},{"title":"Link Users","sidebarTitle":"Link Users","href":"/sdk/api/user-group/link-users"},{"title":"Unlink Users","sidebarTitle":"Unlink Users","href":"/sdk/api/user-group/unlink-users"},{"title":"Link Metrics","sidebarTitle":"Link Metrics","href":"/sdk/api/user-group/link-metrics"},{"title":"Unlink Metrics","sidebarTitle":"Unlink Metrics","href":"/sdk/api/user-group/unlink-metrics"},{"title":"Link Products","sidebarTitle":"Link Products","href":"/sdk/api/user-group/link-products"},{"title":"Unlink Products","sidebarTitle":"Unlink Products","href":"/sdk/api/user-group/unlink-products"}]}]},{"group":"Model","icon":"microchip","pages":[{"title":"Model","sidebarTitle":"Overview","href":"/concepts/model"},{"group":"SDK","icon":"code","pages":[{"title":"Model Service","sidebarTitle":"Service","href":"/sdk/api/model/service"},{"title":"Create Model","sidebarTitle":"Create","href":"/sdk/api/model/create"},{"title":"List Models","sidebarTitle":"List","href":"/sdk/api/model/list"},{"title":"Get Model","sidebarTitle":"Get","href":"/sdk/api/model/get"},{"title":"Get Model By Name","sidebarTitle":"Get By Name","href":"/sdk/api/model/get-by-name"},{"title":"Update Model","sidebarTitle":"Update","href":"/sdk/api/model/update"},{"title":"Delete Model","sidebarTitle":"Delete","href":"/sdk/api/model/delete"}]}]}]}]},{"tab":"Deployment","pages":[{"title":"Deployment","href":"/deployment/executive-summary"}]},{"tab":"REST API","pages":[{"title":"REST API","href":"/api-reference/write-responses"}]}]},"basePath":"","title":"Usage - Galtea Docs","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}