---
title: "Create organization LLM provider"
method: POST
path: "/v1/llm-providers"
tags: ["LLM Providers"]
---

# Create organization LLM provider

`POST /v1/llm-providers`

Creates a new organization-scoped LLM provider from either a models.dev provider template, pasted JSON/JSONC custom configuration, or MCP-supplied customConfig object.

## Request body

- object
  - `name` string, required
  - `source` 'models_dev' | 'custom', required
  - `providerId` string
  - `modelIds` string[]
  - `customConfigText` string
  - `customConfig` unknown
  - `credentialMode` 'shared' | 'per_member'
  - `apiKey` string
  - `apiKeys` object
  - `memberIds` string[]
  - `teamIds` string[]
  - `allMembers` boolean

## Response `201`

Organization LLM provider created successfully.

- LlmProviderResponse
  - `llmProvider` object, required
    - `memberCredential` object
      - `state` 'missing' | 'active' | 'blocked' | 'stale' | 'error', required

## Other responses

- `400` — The provider creation request was invalid.
- `401` — The caller must be signed in to create organization LLM providers.
- `404` — A referenced provider, model, member, or team could not be found.

## Changes

- **2026-08-27** `3f52e8fe4c1b` — 2 info
  - added the new optional request property `credentialMode`
  - added the optional property `llmProvider/memberCredential` to the response with the `201` status
- **2026-08-20** `93df40e2efd5` — 2 info
  - removed the pattern `^om_.*` from the request property `memberIds/items/`
  - removed the pattern `^tem_.*` from the request property `teamIds/items/`

[Change history](https://skmtc.dev/openworklabs/apis/den-api/changes/v1/llm-providers/post.md)

---

[API](https://skmtc.dev/openworklabs/apis/den-api.md) · [All operations](https://skmtc.dev/openworklabs/apis/den-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openworklabs/den-api/revisions/571dc4a74532/schema)
