connic API Public API

Public API for connic. Authenticate using an API key in the `Authorization: Bearer ` header. You can create and manage API keys in your [Project Settings](https://connic.co/projects?to=settings/cli).

Operations 168

GET /v1/projects/{project_id}/environments List environments #
POST /v1/projects/{project_id}/environments Create environment #
GET /v1/projects/{project_id}/environments/{environment_id} Get environment #
PATCH /v1/projects/{project_id}/environments/{environment_id} Update environment #
DELETE /v1/projects/{project_id}/environments/{environment_id} Delete environment #
POST /v1/projects/{project_id}/environments/{environment_id}/set-default Set default environment #
GET /v1/projects/{project_id}/agents List agents #
GET /v1/projects/{project_id}/agents/{agent_name} Get agent #
GET /v1/projects/{project_id}/deployments List deployments #
POST /v1/projects/{project_id}/deployments Create deployment #
GET /v1/projects/{project_id}/deployments/{deployment_id} Get deployment #
GET /v1/projects/{project_id}/deployments/{deployment_id}/test-runs List deployment test results #
POST /v1/projects/{project_id}/deployments/{deployment_id}/cancel Cancel deployment #
POST /v1/projects/{project_id}/deployments/{deployment_id}/activate Activate deployment #
POST /v1/projects/{project_id}/deployments/{deployment_id}/redeploy Redeploy deployment #
POST /v1/projects/{project_id}/deployments/{deployment_id}/deploy-anyway Deploy anyway #
POST /v1/projects/{project_id}/connectors Create connector #
GET /v1/projects/{project_id}/connectors List connectors #
PATCH /v1/projects/{project_id}/connectors/{connector_id} Update connector #
DELETE /v1/projects/{project_id}/connectors/{connector_id} Delete connector #
GET /v1/projects/{project_id}/connectors/{connector_id} Get connector #
GET /v1/projects/{project_id}/connectors/{connector_id}/runs List connector runs #
GET /v1/projects/{project_id}/connectors/{connector_id}/runs/{run_id} Get connector run #
GET /v1/projects/{project_id}/connectors/{connector_id}/stats Get connector stats #
GET /v1/projects/{project_id}/connectors/{connector_id}/logs List connector logs #
GET /v1/projects/{project_id}/stats/aggregate Get aggregate stats #
GET /v1/projects/{project_id}/stats/runs-history Get run history #
GET /v1/projects/{project_id}/runs List runs #
GET /v1/projects/{project_id}/logs List agent logs #
GET /v1/projects/{project_id}/runs/{run_id} Get run #
DELETE /v1/projects/{project_id}/runs/{run_id} Delete run #
POST /v1/projects/{project_id}/runs/{run_id}/rerun Rerun agent run #
POST /v1/projects/{project_id}/runs/bulk-delete Delete selected runs #
POST /v1/projects/{project_id}/runs/bulk-rerun Rerun runs in bulk #
POST /v1/projects/{project_id}/runs/bulk-cancel Cancel runs in bulk #
GET /v1/projects/{project_id}/deployments/{deployment_id}/runs List runs for deployment #
POST /v1/projects/{project_id}/runs/{run_id}/cancel Cancel run #
GET /v1/projects/{project_id}/environments/{environment_id}/queued-count Get queued run count #
POST /v1/projects/{project_id}/environments/{environment_id}/purge-queue Purge queued runs #
GET /v1/projects/{project_id}/audit-logs List audit log #
GET /v1/projects/{project_id}/audit-logs/actions List audit actions #
GET /v1/projects/{project_id}/audit-logs/users List audit actors #
GET /v1/projects/{project_id}/audit-logs/retention Get audit retention #
GET /v1/projects/{project_id}/approvals List approvals #
GET /v1/projects/{project_id}/approvals/{approval_id} Get approval #
POST /v1/projects/{project_id}/approvals/{approval_id}/decide Decide approval #
GET /v1/projects/{project_id}/approvals/config Get approval notification settings #
PUT /v1/projects/{project_id}/approvals/config Replace approval notification settings #
PUT /v1/projects/{project_id}/approvals/routing-config Replace approval routing #
GET /v1/projects/{project_id}/channels/types List channel types #
GET /v1/projects/{project_id}/channels List channels #
POST /v1/projects/{project_id}/channels Create channel #
GET /v1/projects/{project_id}/channels/{channel_id} Get channel #
PUT /v1/projects/{project_id}/channels/{channel_id} Update channel #
DELETE /v1/projects/{project_id}/channels/{channel_id} Delete channel #
POST /v1/projects/{project_id}/channels/{channel_id}/test Test channel #
GET /v1/projects/{project_id}/approvals/channel-routes List approval channel routes #
PUT /v1/projects/{project_id}/approvals/channel-routes Replace approval channel routes #
GET /v1/projects/{project_id}/compliance/overview Get compliance overview #
GET /v1/projects/{project_id}/compliance/systems List AI systems #
POST /v1/projects/{project_id}/compliance/systems Create AI system #
GET /v1/projects/{project_id}/compliance/systems/{system_id} Get AI system #
PATCH /v1/projects/{project_id}/compliance/systems/{system_id} Update AI system #
DELETE /v1/projects/{project_id}/compliance/systems/{system_id} Delete AI system #
GET /v1/projects/{project_id}/compliance/systems/{system_id}/assessments List assessments #
POST /v1/projects/{project_id}/compliance/systems/{system_id}/assessments Create assessment #
POST /v1/projects/{project_id}/compliance/systems/{system_id}/assessments/{assessment_id}/review Review assessment #
GET /v1/projects/{project_id}/compliance/controls List controls #
POST /v1/projects/{project_id}/compliance/systems/{system_id}/controls/generate Generate controls #
PATCH /v1/projects/{project_id}/compliance/controls/{control_id} Update control #
POST /v1/projects/{project_id}/compliance/systems/{system_id}/controls/refresh Refresh controls #
GET /v1/projects/{project_id}/compliance/systems/{system_id}/transparency-policy Get transparency policy #
PUT /v1/projects/{project_id}/compliance/systems/{system_id}/transparency-policy Replace transparency policy #
GET /v1/projects/{project_id}/compliance/systems/{system_id}/transparency-applications List transparency applications #
POST /v1/projects/{project_id}/compliance/systems/{system_id}/transparency-applications Record transparency application #
GET /v1/projects/{project_id}/compliance/systems/{system_id}/monitoring-plan Get monitoring plan #
PUT /v1/projects/{project_id}/compliance/systems/{system_id}/monitoring-plan Replace monitoring plan #
GET /v1/projects/{project_id}/compliance/incidents List incidents #
POST /v1/projects/{project_id}/compliance/incidents Create incident #
PATCH /v1/projects/{project_id}/compliance/incidents/{incident_id} Update incident #
GET /v1/projects/{project_id}/compliance/evidence-snapshots List evidence snapshots #
POST /v1/projects/{project_id}/compliance/evidence-snapshots Create evidence snapshot #
GET /v1/projects/{project_id}/compliance/evidence-snapshots/{snapshot_id}/download Download evidence snapshot #
GET /v1/projects/{project_id}/bridges List bridges #
GET /v1/projects/{project_id}/bridges/{bridge_id}/routes Get bridge routes #
PUT /v1/projects/{project_id}/bridges/{bridge_id}/routes Replace bridge routes #
GET /v1/projects/{project_id}/connections List connections #
POST /v1/projects/{project_id}/connections Create connection #
GET /v1/projects/{project_id}/connections/{connection_id} Get connection #
PATCH /v1/projects/{project_id}/connections/{connection_id} Update connection #
DELETE /v1/projects/{project_id}/connections/{connection_id} Delete connection #
GET /v1/projects/{project_id}/connections/-/schema/{connector_type} Get connection schema #
GET /v1/projects/{project_id}/oauth-apps List OAuth apps #
GET /v1/projects/{project_id}/oauth-apps/{app_id}/users List OAuth app users #
DELETE /v1/projects/{project_id}/oauth-apps/{app_id}/users Revoke OAuth app user #
GET /v1/projects/{project_id}/passkeys List passkeys #
POST /v1/projects/{project_id}/passkeys Create passkey #
POST /v1/projects/{project_id}/passkeys/{passkey_id}/reset Reset passkey #
DELETE /v1/projects/{project_id}/passkeys/{passkey_id} Delete passkey #
POST /v1/projects/{project_id}/judges Create judge #
GET /v1/projects/{project_id}/judges List judges #
GET /v1/projects/{project_id}/judges/{judge_id} Get judge #
PATCH /v1/projects/{project_id}/judges/{judge_id} Update judge #
DELETE /v1/projects/{project_id}/judges/{judge_id} Delete judge #
GET /v1/projects/{project_id}/judges/{judge_id}/runs List judge evaluation runs #
GET /v1/projects/{project_id}/runs/{run_id}/judge-runs List judge evaluations for a run #
POST /v1/projects/{project_id}/judges/{judge_id}/trigger Trigger judge evaluation #
POST /v1/projects/{project_id}/judges/{judge_id}/trigger-bulk Trigger judge evaluations in bulk #
GET /v1/projects/{project_id}/judges/{judge_id}/stats Get judge stats #
GET /v1/projects/{project_id}/ab-tests List A/B tests #
POST /v1/projects/{project_id}/ab-tests Create A/B test #
GET /v1/projects/{project_id}/ab-tests/{test_id} Get A/B test #
PATCH /v1/projects/{project_id}/ab-tests/{test_id} Update A/B test #
DELETE /v1/projects/{project_id}/ab-tests/{test_id} Delete A/B test #
GET /v1/projects/{project_id}/ab-tests/variants List A/B test variants #
POST /v1/projects/{project_id}/ab-tests/plan-preview Preview A/B test plan #
GET /v1/projects/{project_id}/ab-tests/{test_id}/comparison Get A/B test comparison #
GET /v1/projects/{project_id}/budgets/daily-cost Get daily spend #
GET /v1/projects/{project_id}/budgets/agent-ranking Get spend per agent #
GET /v1/projects/{project_id}/budgets/alerts List spend alerts and limits #
POST /v1/projects/{project_id}/budgets/alerts Create spend alert or limit #
GET /v1/projects/{project_id}/budgets/alerts/{alert_id} Get spend alert or limit #
PUT /v1/projects/{project_id}/budgets/alerts/{alert_id} Update spend alert or limit #
DELETE /v1/projects/{project_id}/budgets/alerts/{alert_id} Delete spend alert or limit #
GET /v1/projects/{project_id}/retrieval/namespaces List retrieval namespaces #
GET /v1/projects/{project_id}/retrieval/entries List retrieval entries #
GET /v1/projects/{project_id}/retrieval/entries/{entry_id} Get retrieval entry details #
DELETE /v1/projects/{project_id}/retrieval/entries/{entry_id} Delete retrieval entry #
GET /v1/projects/{project_id}/retrieval/stats Get retrieval stats #
POST /v1/projects/{project_id}/retrieval/text Upload text for retrieval #
POST /v1/projects/{project_id}/retrieval/file Upload file for retrieval #
DELETE /v1/projects/{project_id}/retrieval/namespaces/{namespace} Delete retrieval namespace #
GET /v1/projects/{project_id}/retrieval/sources List retrieval sources #
POST /v1/projects/{project_id}/retrieval/sources Connect retrieval source #
GET /v1/projects/{project_id}/retrieval/sources/{source_id} Get retrieval source #
PATCH /v1/projects/{project_id}/retrieval/sources/{source_id} Update retrieval source #
DELETE /v1/projects/{project_id}/retrieval/sources/{source_id} Delete retrieval source #
GET /v1/projects/{project_id}/retrieval/sources/{source_id}/runs List retrieval source runs #
POST /v1/projects/{project_id}/retrieval/sources/{source_id}/sync Sync retrieval source #
GET /v1/projects/{project_id}/database/{environment_id}/stats Get database statistics #
GET /v1/projects/{project_id}/database/{environment_id}/collections List database collections #
DELETE /v1/projects/{project_id}/database/{environment_id}/collections/{name} Delete database collection #
GET /v1/projects/{project_id}/database/{environment_id}/collections/{name}/schema Get database collection schema #
GET /v1/projects/{project_id}/database/{environment_id}/collections/{name}/search-fields List searchable fields #
POST /v1/projects/{project_id}/database/{environment_id}/collections/{name}/search-fields Add searchable field #
DELETE /v1/projects/{project_id}/database/{environment_id}/collections/{name}/search-fields/{field} Remove searchable field #
POST /v1/projects/{project_id}/database/{environment_id}/collections/{name}/find Find database documents #
POST /v1/projects/{project_id}/database/{environment_id}/collections/{name}/update Update database documents #
POST /v1/projects/{project_id}/database/{environment_id}/collections/{name}/delete Delete database documents #
POST /v1/projects/{project_id}/database/{environment_id}/collections/{name}/count Count database documents #
POST /v1/projects/{project_id}/database/{environment_id}/collections/{name}/import Import database documents #
GET /v1/projects/{project_id}/sessions/{environment_id} List persistent sessions #
GET /v1/projects/{project_id}/sessions/{environment_id}/{session_id} Get persistent session #
DELETE /v1/projects/{project_id}/sessions/{environment_id}/{session_id} Delete persistent session #
POST /v1/projects/{project_id}/sessions/{environment_id}/bulk-delete Bulk delete persistent sessions #
GET /v1/projects/{project_id}/files/{environment_id}/stats Get file statistics #
POST /v1/projects/{project_id}/files/{environment_id}/list List files #
POST /v1/projects/{project_id}/files/{environment_id}/get Get file metadata #
POST /v1/projects/{project_id}/files/{environment_id}/uploads Start a file upload #
POST /v1/projects/{project_id}/files/{environment_id}/write Write a small file #
POST /v1/projects/{project_id}/files/{environment_id}/update Move a file or update its metadata #
POST /v1/projects/{project_id}/files/{environment_id}/delete Delete a file or folder #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/connic-co:connic-api-public-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

connic-co-public-openapi.json Raw ↑
{"openapi":"3.1.0","info":{"title":"connic API","description":"Public API for connic. Authenticate using an API key in the `Authorization: Bearer <key>` header. You can create and manage API keys in your [Project Settings](https://connic.co/projects?to=settings/cli).\n\n## Rate Limits\n\nAPI requests are rate-limited to **120/minute** per project. All API keys belonging to the same project share a single rate limit bucket. When the limit is exceeded, the API responds with `429 Too Many Requests` and a `Retry-After` header indicating when you can retry.","version":"1.0.0"},"paths":{"/v1/projects/{project_id}/environments":{"get":{"tags":["environments"],"summary":"List environments","description":"List the project's environments, default first, then by name. API keys limited to specific environments only see those.\n\nRequired permission: `environments.view`.","operationId":"list_environments","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PublicEnvironmentResponse"},"title":"Response 200 List Environments V1 Projects  Project Id  Environments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}}},"x-connic-permission-section":"environments","x-connic-permission-action":"read","x-connic-project-permission":"environments.view"},"post":{"tags":["environments"],"summary":"Create environment","description":"Create an environment. The project's first environment becomes the default.\n\nReturns 403 when the plan's environment limit is reached. With `copy_from_environment_id`,\nthat environment's variables are copied into the new one.\n\nRequired permission: `environments.create`. Passing `copy_from_environment_id` also requires `variables.view`. Passing `copy_from_environment_id` also requires `variables.create`.","operationId":"create_environment","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEnvironmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}}},"x-connic-permission-section":"environments","x-connic-permission-action":"write","x-connic-project-permission":"environments.create"}},"/v1/projects/{project_id}/environments/{environment_id}":{"get":{"tags":["environments"],"summary":"Get environment","description":"Get one environment with its settings and what the caller can do in it.\n\nRequired permission: `environments.view`.","operationId":"get_environment","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"},"description":"Environment ID from `GET /environments`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEnvironmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}},"404":{"description":"The resource does not exist in this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-connic-permission-section":"environments","x-connic-permission-action":"read","x-connic-project-permission":"environments.view"},"patch":{"tags":["environments"],"summary":"Update environment","description":"Partially update an environment; omitted fields stay unchanged.\n\nRenaming also changes the slug and returns 400 if another environment already uses it.\n\nRequired permission: `environments.update`.","operationId":"update_environment","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"},"description":"Environment ID from `GET /environments`."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEnvironmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}},"404":{"description":"The resource does not exist in this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-connic-permission-section":"environments","x-connic-permission-action":"write","x-connic-project-permission":"environments.update"},"delete":{"tags":["environments"],"summary":"Delete environment","description":"Delete an environment.\n\nIts deployments are deactivated, its connectors disabled and its OAuth apps removed, and its\nscheduled, queued, running and approval-waiting runs are cancelled. The default environment and the\nlast standard environment cannot be deleted (400); a test environment with an active test session returns 409.\n\nRequired permission: `environments.delete`.","operationId":"delete_environment","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"},"description":"Environment ID from `GET /environments`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicOkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}},"404":{"description":"The resource does not exist in this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-connic-permission-section":"environments","x-connic-permission-action":"write","x-connic-project-permission":"environments.delete"}},"/v1/projects/{project_id}/environments/{environment_id}/set-default":{"post":{"tags":["environments"],"summary":"Set default environment","description":"Make this environment the project's default; the previous default is unset.\n\nRequired permission: `environments.update`.","operationId":"set_default_environment","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"environment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Environment Id"},"description":"Environment ID from `GET /environments`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicOkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}},"404":{"description":"The resource does not exist in this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-connic-permission-section":"environments","x-connic-permission-action":"write","x-connic-project-permission":"environments.update"}},"/v1/projects/{project_id}/agents":{"get":{"tags":["agents"],"summary":"List agents","description":"Agents come from deployments and names that have historical runs in this environment. Each item includes deployment status, run and queue counts, last activity, configuration hints (type, source path), and whether an inbound or sync connector is attached to the known agent.\n\nRequired permission: `agents.view`.","operationId":"list_project_agents","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"environment_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Target environment UUID","title":"Environment Id"},"description":"Target environment UUID"},{"name":"include_variants","in":"query","required":false,"schema":{"type":"boolean","description":"Include A/B variant agents as separate items","default":false,"title":"Include Variants"},"description":"Include A/B variant agents as separate items"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PublicAgentListItemResponse"},"title":"Response 200 List Project Agents V1 Projects  Project Id  Agents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}}},"x-connic-permission-section":"agents","x-connic-permission-action":"read","x-connic-project-permission":"agents.view"}},"/v1/projects/{project_id}/agents/{agent_name}":{"get":{"tags":["agents"],"summary":"Get agent","description":"Returns the agent's configuration from the active deployment (null when the active deployment does not contain it), run statistics, token usage and cost, linked connectors, and average scores of its judges in the given environment. Statistics and judge averages cover runs queued in the selected window (the last 30 days by default), narrowed by the run filters.\n\nRequired permission: `agents.view`.","operationId":"get_agent_details","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"agent_name","in":"path","required":true,"schema":{"type":"string","title":"Agent Name"},"description":"Agent name as defined in the agent's YAML file."},{"name":"environment_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Target environment UUID","title":"Environment Id"},"description":"Target environment UUID"},{"name":"time_range","in":"query","required":false,"schema":{"anyOf":[{"enum":["24h","7d","30d","90d","today","this_month","last_month","this_year","all"],"type":"string"},{"type":"null"}],"description":"Preset statistics window ending now, a calendar period in UTC, or `all` for no time limit. Ignored when `start_date` is set.","default":"30d","title":"Time Range"},"description":"Preset statistics window ending now, a calendar period in UTC, or `all` for no time limit. Ignored when `start_date` is set."},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Custom statistics window start; overrides `time_range`.","title":"Start Date"},"description":"Custom statistics window start; overrides `time_range`."},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Custom statistics window end; used only with `start_date`, which is open-ended without it.","title":"End Date"},"description":"Custom statistics window end; used only with `start_date`, which is open-ended without it."},{"name":"deployment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Only include runs executed by this deployment.","title":"Deployment Id"},"description":"Only include runs executed by this deployment."},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/RunStatus"}},{"type":"null"}],"description":"Restrict stats to statuses","title":"Status Filter"},"description":"Restrict stats to statuses"},{"name":"guardrail_outcome","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"enum":["warned","blocked","redacted"],"type":"string"}},{"type":"null"}],"description":"Restrict stats to guardrail outcomes","title":"Guardrail Outcome"},"description":"Restrict stats to guardrail outcomes"},{"name":"test_name","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"A/B test variant names; use __base__ for runs without a variant","title":"Test Name"},"description":"A/B test variant names; use __base__ for runs without a variant"},{"name":"exclude_test_runs","in":"query","required":false,"schema":{"type":"boolean","description":"Exclude runs with a test name","default":false,"title":"Exclude Test Runs"},"description":"Exclude runs with a test name"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Run search text or filter expression, as in `GET /runs`.","title":"Search"},"description":"Run search text or filter expression, as in `GET /runs`."},{"name":"convert_costs_to","in":"query","required":false,"schema":{"anyOf":[{"enum":["EUR","USD"],"type":"string"},{"type":"null"}],"description":"Convert token costs to EUR or USD at the daily ECB reference rate of each model call","title":"Convert Costs To"},"description":"Convert token costs to EUR or USD at the daily ECB reference rate of each model call"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAgentDetailsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}},"404":{"description":"The resource does not exist in this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-connic-permission-section":"agents","x-connic-permission-action":"read","x-connic-project-permission":"agents.view"}},"/v1/projects/{project_id}/deployments":{"get":{"tags":["deployments"],"summary":"List deployments","description":"Returns all deployments in the environment, newest first, each with its number of failed test cases.\n\nRequired permission: `deployments.view`.","operationId":"list_deployments","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"environment_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Environment to list deployments for.","title":"Environment Id"},"description":"Environment to list deployments for."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentListItemResponse"},"title":"Response List Deployments V1 Projects  Project Id  Deployments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}}},"x-connic-permission-section":"deployments","x-connic-permission-action":"read","x-connic-project-permission":"deployments.view"},"post":{"tags":["deployments"],"summary":"Create deployment","description":"Creates a deployment from the project's connected git repository.\n\nBuilds the latest commit on the environment's `git_branch`, or on the repository's default branch\nwhen the environment has none.\nOnly works for projects with a git provider connected; other projects return 400.\nFor projects without git, deploy with `connic deploy` from the CLI.\nOlder pending or building deployments in the same environment are cancelled.\n\nRequired permission: `deployments.create`.","operationId":"create_deployment","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"environment_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","description":"Environment to deploy to","title":"Environment Id"},"description":"Environment to deploy to"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DeploymentCreate"},{"type":"null"}],"title":"Deployment Create"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}}},"x-connic-permission-section":"deployments","x-connic-permission-action":"write","x-connic-project-permission":"deployments.create"}},"/v1/projects/{project_id}/deployments/{deployment_id}":{"get":{"tags":["deployments"],"summary":"Get deployment","description":"Returns one deployment with its status, source, build logs, test and connector results, and the agents it contains.\n\nRequired permission: `deployments.view`.","operationId":"get_deployment","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment Id"},"description":"Deployment ID from `GET /deployments`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}},"404":{"description":"The resource does not exist in this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-connic-permission-section":"deployments","x-connic-permission-action":"read","x-connic-project-permission":"deployments.view"}},"/v1/projects/{project_id}/deployments/{deployment_id}/test-runs":{"get":{"tags":["deployments"],"summary":"List deployment test results","description":"Results of each test case from this deployment's test phase, ordered by agent and test name.\n\nRequired permission: `deployments.test`.","operationId":"list_deployment_test_runs","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment Id"},"description":"Deployment ID from `GET /deployments`."},{"name":"convert_costs_to","in":"query","required":false,"schema":{"anyOf":[{"enum":["EUR","USD"],"type":"string"},{"type":"null"}],"description":"Convert token costs to EUR or USD at the daily ECB reference rate of each model call","title":"Convert Costs To"},"description":"Convert token costs to EUR or USD at the daily ECB reference rate of each model call"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentTestRunWithCost"},"title":"Response List Deployment Test Runs V1 Projects  Project Id  Deployments  Deployment Id  Test Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}},"404":{"description":"The resource does not exist in this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-connic-permission-section":"deployments","x-connic-permission-action":"read","x-connic-project-permission":"deployments.test"}},"/v1/projects/{project_id}/deployments/{deployment_id}/cancel":{"post":{"tags":["deployments"],"summary":"Cancel deployment","description":"Requests cancellation of a deployment that is currently building.\n\nFor a deployment that is not building, nothing changes and the response has `ok: false`.\n\nRequired permission: `deployments.cancel`.","operationId":"cancel_deployment","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment Id"},"description":"Deployment ID from `GET /deployments`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDeploymentCancelResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}},"404":{"description":"The resource does not exist in this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-connic-permission-section":"deployments","x-connic-permission-action":"write","x-connic-project-permission":"deployments.cancel"}},"/v1/projects/{project_id}/deployments/{deployment_id}/activate":{"post":{"tags":["deployments"],"summary":"Activate deployment","description":"Makes a deployment with status `deployed` the live version for its environment.\n\nConnectors declared in code are restored to the deployment's connector files. If a connector change\nfails, returns 409 and nothing is activated unless `force` is set.\n\nRequired permission: `deployments.activate`.","operationId":"activate_deployment","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment Id"},"description":"Deployment ID from `GET /deployments`."},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Activate even if some connector changes from connectors/*.yaml fail; failing connectors keep their current state","default":false,"title":"Force"},"description":"Activate even if some connector changes from connectors/*.yaml fail; failing connectors keep their current state"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicOkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The API key lacks the required permission or access to the environment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}},"404":{"description":"The resource does not exist in this project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"x-connic-permission-section":"deployments","x-connic-permission-action":"write","x-connic-project-permission":"deployments.activate"}},"/v1/projects/{project_id}/deployments/{deployment_id}/redeploy":{"post":{"tags":["deployments"],"summary":"Redeploy deployment","description":"Creates a new deployment using the same source and environment as an existing one.\n\nRequired permission: `deployments.redeploy`.","operationId":"redeploy_deployment","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"},"description":"ID of the project the API key belongs to."},{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment Id"},"description":"Deployment ID from `GET /deployments`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentRe

# --- truncated at 32 KB (655 KB total) ---
# Full source: https://artifacts.apis.io/connic-co/openapi/_original/connic-co-public-openapi.json