---
title: "Update custom provider"
method: PATCH
path: "/custom-providers/{custom_provider_id}"
tags: ["Custom Providers"]
---

# Update custom provider

`PATCH /custom-providers/{custom_provider_id}`

## Request

- Base URL: `https://api.metorial.com`
- URL: `https://api.metorial.com/custom-providers/{custom_provider_id}`
- Auth: HTTP bearer

Updates a specific custom provider.

## Path parameters

- `custom_provider_id` string, required

## Headers

- `Metorial-Version` string

## Request body

- BodyRequest5
  - `name` string
  - `description` string
  - `metadata` object: Custom key-value pairs for storing additional information
  - `readme` string: README content in markdown format

## Response `200`

Successful response

- CustomProvider
  - `object` 'custom_provider', required: String representing the object's type
  - `id` string, required: Unique custom provider identifier
  - `status` 'active' | 'archived' | 'deleted', required: Current status of the custom provider
  - `type` 'function' | 'container' | 'remote', required: Type of the custom provider
  - `name` string, required: Display name of the custom provider
  - `description` string, nullable, required: Brief description of the custom provider
  - `metadata` object, nullable, required: Custom key-value pairs for storing additional information
  - `draft` Draft, required
    - `object` 'custom_provider.draft#function' | 'custom_provider.draft.container' | 'custom_provider.draft.remote', required: String representing the draft's type
    - `container_image` ContainerImage2
      - `object` 'custom_provider.draft.container', required: String representing the container image draft type
      - `container_registry` string, required: URL of the container registry
      - `container_image_tag` string, required: Tag of the container image
      - `container_image` string, required: Name of the container image
    - `remote_mcp_server` RemoteMcpServer
      - `object` 'custom_provider.draft.remote', required: String representing the remote MCP server draft type
      - `url` string, required: URL of the remote MCP server
      - `transport` 'sse' | 'streamable_http' | 'stateless', required: Transport protocol for connecting to the remote MCP server
    - `config` Config2, required
      - `object` 'custom_provider.draft.config', required: String representing the custom provider config draft type
      - `schema` object, required
        - `type` 'json_schema', required
        - `schema` object, required: JSON Schema defining the configuration fields for the custom provider
      - `transformer` string, required: Optional jsonata transformer function for the configuration.
  - `scm_repo` object, nullable, required
    - `object` 'scm.repository', required
    - `id` string, required: Unique repository identifier
    - `provider` Provider3, required
      - `object` 'scm.provider', required
      - `type` 'github' | 'gitlab' | 'bitbucket', required: SCM provider type
      - `id` string, required: External provider identifier
      - `name` string, required: Repository name on the provider
      - `owner` string, required: Repository owner on the provider
    - `url` string, required: Repository URL
    - `is_private` boolean, required: Whether the repository is private
    - `default_branch` string, required: Default branch name
    - `created_at` string, date-time, required: Timestamp when created
  - `provider` object, nullable, required
    - `object` 'provider', required: String representing the object's type
    - `id` string, required: Unique provider identifier
    - `access` 'public' | 'tenant', required: Access level of the provider
    - `status` 'active' | 'archived' | 'deleted', required: Current status of the provider
    - `publisher` Publisher, required
      - `object` 'provider.publisher', required: String representing the object's type
      - `id` string, required: Unique publisher identifier
      - `name` string, required: Display name of the publisher
      - `description` string, nullable, required: Brief description of the publisher
      - `image_url` string, required: URL of the publisher logo
      - `created_at` string, date-time, required: Timestamp when created
      - `updated_at` string, date-time, required: Timestamp when last updated
    - `current_version` object, nullable, required
      - `object` 'provider.version', required: String representing the object's type
      - `id` string, required: Unique version identifier
      - `version` string, required: Version identifier string
      - `provider_id` string, required: Provider ID
      - `is_current` boolean, required: Whether this is the current version
      - `name` string, required: Version name
      - `description` string, nullable, required: Version description
      - `metadata` object, nullable, required: Custom key-value pairs for storing additional information
      - `specification_id` string, nullable, required: Specification ID
      - `created_at` string, date-time, required: Timestamp when created
      - `updated_at` string, date-time, required: Timestamp when last updated
    - `oauth` object, nullable, required
      - `status` 'enabled' | 'disabled', required: OAuth status
      - `callback_url` string, nullable, required: OAuth callback URL
      - `auto_registration` object, required
        - `status` 'supported' | 'unsupported', required: Auto-registration status
    - `identifier` string, required: Provider identifier
    - `name` string, required: Display name of the provider
    - `description` string, nullable, required: Brief description of the provider
    - `slug` string, required: URL-friendly identifier
    - `metadata` object, nullable, required: Custom key-value pairs for storing additional information
    - `created_at` string, date-time, required: Timestamp when created
    - `updated_at` string, date-time, required: Timestamp when last updated
  - `created_at` string, date-time, required: Timestamp when created
  - `updated_at` string, date-time, required: Timestamp when last updated

## Other responses

- `400`: Invalid parameters or action
- `401`: Missing or invalid API key
- `403`: The key lacks permission for this resource
- `404`: No such resource
- `422`: Validation failed
- `429`: Rate limit exceeded
- `500`: Unexpected server error

---

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