Skip to content

AI

A workspace's AI providers: the keys it keeps for frontier labs (anthropic, openai, gemini, xai, mistral, deepseek), model platforms (azure_openai, openrouter, groq, together, fireworks, cerebras) and self-hosted endpoints (anthropic_endpoint, openai_endpoint), each with its group, its config, the models it offered when last checked and its last error.

GET/workspaces/{workspace}/ai/providers

Keys are sealed and never returned; secret_hint shows a key’s last four characters. g1t hosts no model and bills nothing for them: they run on the workspace’s own account. Members only.

group is labs, platforms or self_hosted. secret_hint shows the end of the key; the key itself is never returned. models are those the provider offered when last checked. See AI.

  • Authentication: Required. Send an access token as Authorization: Bearer.
  • MCP tool: ai with action list_providers, and the same inputs
  • Scope: An access token needs workspace:read.
Name Type Required Description
workspace string Yes The workspace’s slug, e.g. “flagon-io”.
curl https://api.g1t.sh/workspaces/flagon-io/ai/providers \
-H "Authorization: Bearer $G1T_TOKEN"

A successful request answers 200 with:

[
{
"id": "ai_01kpx4n8r3g9s0v5w7x1z2a3be",
"workspace": "flagon-io",
"provider": "anthropic",
"group": "labs",
"name": "Anthropic",
"config": {},
"secret_hint": "…Q2fA",
"created_by": "syntaqx",
"created_at": "2026-10-04T15:42:07.318Z",
"last_used_at": "2026-10-14T09:12:44.051Z",
"last_error": null,
"models": [
"claude-haiku-4-5",
"claude-sonnet-4-5",
"claude-opus-4-1"
]
},
{
"id": "ai_01kpx4n8r3g9s0v5w7x1z2a3bf",
"workspace": "flagon-io",
"provider": "openai_endpoint",
"group": "self_hosted",
"name": "vLLM",
"config": {
"base_url": "https://llm.example.com/v1",
"auth_header": "authorization",
"model": "qwen3-coder"
},
"secret_hint": "…k9Lm",
"created_by": "syntaqx",
"created_at": "2026-10-14T10:03:51.902Z",
"last_used_at": null,
"last_error": null,
"models": [
"qwen3-coder"
]
}
]

A failed request answers with one of these statuses and a body like {"error": {"code": "not_found", "message": "Repository not found."}}. See errors.

Status Code When
401 unauthenticated A token is required, or the one sent is not valid.
403 forbidden The token is valid but not allowed to do this, such as a member-only change, or a token without the scope it needs.
404 not_found It does not exist, or you cannot see it.
422 invalid The input is not valid. message says which field and why.