openapi: 3.1.0 info: title: LangWatch Agents Model Providers API version: 1.0.0 description: LangWatch openapi spec servers: - url: https://app.langwatch.ai security: - project_api_key: [] tags: - name: Model Providers paths: /api/model-providers: get: responses: '200': description: Success content: application/json: schema: type: object additionalProperties: type: object properties: id: type: string provider: type: string enabled: type: boolean customKeys: type: - object - 'null' additionalProperties: {} deploymentMapping: type: 'null' models: type: - array - 'null' items: type: string embeddingsModels: type: - array - 'null' items: type: string customModels: type: - array - 'null' items: type: object properties: modelId: type: string minLength: 1 displayName: type: string minLength: 1 mode: type: string enum: - chat - embedding maxTokens: type: - number - 'null' exclusiveMinimum: 0 supportedParameters: type: array items: type: string enum: - temperature - max_tokens - top_p - frequency_penalty - presence_penalty - top_k - min_p - repetition_penalty - seed - reasoning - verbosity multimodalInputs: type: array items: type: string enum: - image - file - audio required: - modelId - displayName - mode customEmbeddingsModels: type: - array - 'null' items: type: object properties: modelId: type: string minLength: 1 displayName: type: string minLength: 1 mode: type: string enum: - chat - embedding maxTokens: type: - number - 'null' exclusiveMinimum: 0 supportedParameters: type: array items: type: string enum: - temperature - max_tokens - top_p - frequency_penalty - presence_penalty - top_k - min_p - repetition_penalty - seed - reasoning - verbosity multimodalInputs: type: array items: type: string enum: - image - file - audio required: - modelId - displayName - mode disabledByDefault: type: boolean extraHeaders: type: - array - 'null' items: type: object properties: key: type: string value: type: string required: - key - value required: - provider - enabled - customKeys '400': description: Bad Request content: application/json: schema: type: object properties: error: type: string message: type: string required: - error '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string message: type: string required: - error '422': description: Unprocessable Entity content: application/json: schema: type: object properties: error: type: string message: type: string required: - error '500': description: Internal Server Error content: application/json: schema: type: object properties: error: type: string message: type: string required: - error operationId: getApiModel-providers parameters: [] description: List all model providers for a project with masked API keys tags: - Model Providers /api/model-providers/{provider}: put: responses: '200': description: Success content: application/json: schema: type: object additionalProperties: type: object properties: id: type: string provider: type: string enabled: type: boolean customKeys: type: - object - 'null' additionalProperties: {} deploymentMapping: type: 'null' models: type: - array - 'null' items: type: string embeddingsModels: type: - array - 'null' items: type: string customModels: type: - array - 'null' items: type: object properties: modelId: type: string minLength: 1 displayName: type: string minLength: 1 mode: type: string enum: - chat - embedding maxTokens: type: - number - 'null' exclusiveMinimum: 0 supportedParameters: type: array items: type: string enum: - temperature - max_tokens - top_p - frequency_penalty - presence_penalty - top_k - min_p - repetition_penalty - seed - reasoning - verbosity multimodalInputs: type: array items: type: string enum: - image - file - audio required: - modelId - displayName - mode customEmbeddingsModels: type: - array - 'null' items: type: object properties: modelId: type: string minLength: 1 displayName: type: string minLength: 1 mode: type: string enum: - chat - embedding maxTokens: type: - number - 'null' exclusiveMinimum: 0 supportedParameters: type: array items: type: string enum: - temperature - max_tokens - top_p - frequency_penalty - presence_penalty - top_k - min_p - repetition_penalty - seed - reasoning - verbosity multimodalInputs: type: array items: type: string enum: - image - file - audio required: - modelId - displayName - mode disabledByDefault: type: boolean extraHeaders: type: - array - 'null' items: type: object properties: key: type: string value: type: string required: - key - value required: - provider - enabled - customKeys '400': description: Bad request content: application/json: schema: type: object properties: error: type: string required: - error '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string message: type: string required: - error '422': description: Unprocessable Entity content: application/json: schema: type: object properties: error: type: string message: type: string required: - error '500': description: Internal Server Error content: application/json: schema: type: object properties: error: type: string message: type: string required: - error operationId: putApiModel-providersByProvider parameters: - schema: type: string in: path name: provider required: true description: Create or update a model provider requestBody: content: application/json: schema: type: object properties: enabled: type: boolean customKeys: type: object additionalProperties: {} customModels: anyOf: - type: array items: type: object properties: modelId: type: string minLength: 1 displayName: type: string minLength: 1 mode: type: string enum: - chat - embedding maxTokens: type: - number - 'null' exclusiveMinimum: 0 supportedParameters: type: array items: type: string enum: - temperature - max_tokens - top_p - frequency_penalty - presence_penalty - top_k - min_p - repetition_penalty - seed - reasoning - verbosity multimodalInputs: type: array items: type: string enum: - image - file - audio required: - modelId - displayName - mode - type: array items: type: string customEmbeddingsModels: anyOf: - type: array items: type: object properties: modelId: type: string minLength: 1 displayName: type: string minLength: 1 mode: type: string enum: - chat - embedding maxTokens: type: - number - 'null' exclusiveMinimum: 0 supportedParameters: type: array items: type: string enum: - temperature - max_tokens - top_p - frequency_penalty - presence_penalty - top_k - min_p - repetition_penalty - seed - reasoning - verbosity multimodalInputs: type: array items: type: string enum: - image - file - audio required: - modelId - displayName - mode - type: array items: type: string extraHeaders: type: array items: type: object properties: key: type: string value: type: string required: - key - value defaultModel: type: string required: - enabled tags: - Model Providers components: securitySchemes: project_api_key: type: apiKey in: header name: X-Auth-Token description: 'Project API key for sending traces and accessing project-scoped resources. Format: sk-lw-... (no underscore). Obtain one by creating a project via the Admin API or the LangWatch UI.' admin_api_key: type: http scheme: bearer description: 'Admin API key for organization-level operations (managing projects, API keys). Create one in Settings > API Keys or via POST /api/api-keys. Format: sk-lw-{id}_{secret}.'