---
title: "PUT /v1/orgs/{orgId}/byo-provider"
method: PUT
path: "/v1/orgs/{orgId}/byo-provider"
tags: ["ByoProvider"]
---

# PUT /v1/orgs/{orgId}/byo-provider

`PUT /v1/orgs/{orgId}/byo-provider`

Configures the organization's own LLM provider (bring-your-own gateway). Validates the configuration against the customer gateway and stores the credential encrypted; the credential is never returned. `tierModels` names one of the organization's own models per tier (high, medium, low); each feature is mapped to a tier, and an enabled gateway must name a model for all three. `enabledModels` may be empty, which registers the connection with no models yet; such a gateway must be created with `enabled: false` and stays unable to be enabled until it has models and all three tiers.

## Path parameters

- `orgId` string, uuid, required

## Headers

- `Authorization` string

## Request body

- object
  - `baseUrl` string, required — HTTPS gateway base URL ending in /v1, without user information, a query, or a fragment.
  - `credential` string, required
  - `enabledModels` string[], required
  - `tierModels` object — Tier to model, in the customer's own model names. Tessl maps each of its features to a tier; that mapping is not configurable.
    - `high` string
    - `medium` string
    - `low` string
  - `enabled` boolean

## Response `200`

Default Response

- object
  - `links` object, required
    - `self` string, uri, required
  - `data` object, required
    - `id` string, uuid, required
    - `type` 'byo-provider', required
    - `attributes` object, required
      - `baseUrl` string, required
      - `enabledModels` string[], required
      - `tierModels` object, required
        - `high` string, nullable, required
        - `medium` string, nullable, required
        - `low` string, nullable, required
      - `enabled` boolean, required
      - `orgSlug` string, required — Immutable organization slug used as the prefix for composed gateway model names.
      - `updatedAt` string, date-time, required

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `500` — Internal Server Error
- `502` — Bad Gateway

## Changes

- **2026-09-15** `d50a02b79ad3` — 2 info
  - added the optional property `error/code` to the response with the `403` status
  - added the optional property `error/url` to the response with the `403` status
- **2026-08-14** `97cba54605fd` — 1 breaking, 1 warning, 2 info
  - removed the required property `data/attributes/featureDefaultModels` from the response with the `200` status
  - removed the request property `featureDefaultModels`
  - added the new optional request property `tierModels`
  - added the required property `data/attributes/tierModels` to the response with the `200` status
- **2026-08-12** `a3e84124ece4` — 1 info
  - removed the pattern `^https://.*/v1$` from the request property `baseUrl`
- **2026-08-11** `09211715bc70` — 2 info
  - added the non-success response with the status `502`
  - added the required property `data/attributes/orgSlug` to the response with the `200` status
- **2026-08-06** `0aeb92efe27a` — 2 info
  - added the new optional request property `featureDefaultModels/cloud-run-solver`
  - added the optional property `data/attributes/featureDefaultModels/cloud-run-solver` to the response with the `200` status

[Full history](https://skmtc.dev/tessl/apis/tessl-api/changes/v1/orgs/:orgId/byo-provider/put.md)

---

[API](https://skmtc.dev/tessl/apis/tessl-api.md) · [All operations](https://skmtc.dev/tessl/apis/tessl-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tessl/apis/tessl-api/revisions/ee9b4e55fec4?raw)
