Skip to article
On this page
  1. Linked service calls
  2. List linked services
  3. Create a linked service
  4. Describe a linked service
  5. Update a linked service
  6. Delete a linked service

Linked Services

Linked Services are workspace-owned, independently named provider connections. Several services can use the same curated provider type.

Linked service calls

Method Path Description
GET /api/v1/linked-services Lists workspace linked services.
POST /api/v1/linked-services Creates and tests a linked service.
GET /api/v1/linked-services/{service_id} Describes one linked service.
PATCH /api/v1/linked-services/{service_id} Updates mutable settings.
DELETE /api/v1/linked-services/{service_id} Deletes one linked service.

service_id is immutable. name, enabled, and config are mutable. provider_type must be one of the curated provider identifiers. config.api_key is write-only; responses return base_url, key_trimmed, configured, and static available_models derived from active logical catalog models. Available models are never stored in the linked-services table.

List linked services

GET /api/v1/linked-services returns every linked service in the selected workspace as a JSON array.

GET /api/v1/linked-services
X-Workspace-ID: workspace-acme

Example response (200 OK):

[
  {
    "id": "linked-service-openai-primary",
    "name": "primary_openai",
    "provider_type": "openai",
    "enabled": true,
    "config": {
      "base_url": "https://api.openai.com/v1",
      "key_trimmed": "sk-...abcd",
      "configured": true,
      "available_models": ["gpt-5"]
    },
    "version": 1,
    "created_at": "2026-08-13T10:00:00Z",
    "updated_at": "2026-08-13T10:00:00Z"
  }
]

Create a linked service

POST /api/v1/linked-services creates a named service and tests its candidate configuration before it is stored. enabled defaults to true. A provider that requires credentials must receive a usable config.api_key before it can be enabled.

POST /api/v1/linked-services
X-Workspace-ID: workspace-acme
Content-Type: application/json
{
  "name": "primary_openai",
  "provider_type": "openai",
  "enabled": true,
  "config": {
    "api_key": "provider-api-key",
    "base_url": "https://api.openai.com/v1"
  }
}

Example response (201 Created):

{
  "id": "linked-service-openai-primary",
  "name": "primary_openai",
  "provider_type": "openai",
  "enabled": true,
  "config": {
    "base_url": "https://api.openai.com/v1",
    "key_trimmed": "sk-...abcd",
    "configured": true,
    "available_models": ["gpt-5"]
  },
  "version": 1,
  "created_at": "2026-08-13T10:00:00Z",
  "updated_at": "2026-08-13T10:00:00Z"
}

Describe a linked service

GET /api/v1/linked-services/{service_id} returns one service in the selected workspace. The response has the same shape as a list item and never includes the full API key.

GET /api/v1/linked-services/linked-service-openai-primary
X-Workspace-ID: workspace-acme

The endpoint returns 404 linked_service_not_found when the selected workspace does not own service_id.

Update a linked service

PATCH /api/v1/linked-services/{service_id} accepts one or more of name, enabled, or config. Supplying config.api_key: null clears the stored key; supplying config.base_url: null restores the provider default. enabled must be a boolean when supplied. Configuration changes and enabling a disabled service validate and test the candidate connection before storage.

PATCH /api/v1/linked-services/linked-service-openai-primary
X-Workspace-ID: workspace-acme
Content-Type: application/json
{
  "enabled": false
}

The endpoint returns the updated linked-service response (200 OK). An empty request returns 422.

Delete a linked service

DELETE /api/v1/linked-services/{service_id} removes a service that is not referenced by another workspace resource.

DELETE /api/v1/linked-services/linked-service-openai-primary
X-Workspace-ID: workspace-acme

Example response (200 OK):

{
  "deleted": true
}

The endpoint returns 409 resource_in_use while a Persona or another resource still references the service, and 404 linked_service_not_found when the service does not exist in the selected workspace.