---
title: "Llm Models Provider Integrations Create"
method: POST
path: "/llm_models/provider_integrations/"
tags: ["models"]
---

# Llm Models Provider Integrations Create

`POST /llm_models/provider_integrations/`

Mixin for views that need method-level permission enforcement.

Supports two approaches for defining permissions:

1. Auto-generation (Recommended - DRY):
    Set permission_resource to auto-generate CRUD permissions based on HTTP methods:

    class MyView(PermissionMapMixin, JWTAndAPIKeyAuthenticationViewMixin, RetrieveUpdateDestroyAPIView):
        permission_resource = Resources.LOG
        # Auto-generates:
        # GET -> log:read
        # PATCH -> log:update
        # DELETE -> log:delete

    Override specific methods via permission_map (always use constants):
    class MyView(PermissionMapMixin, ...):
        permission_resource = Resources.LOG
        permission_map: PermissionMap = {
            "GET": None,  # Override: no permission required for GET
            "POST": make_permission(Resources.LOG, CRUDActions.READ),  # POST acts as read
        }

2. Explicit mapping (for non-CRUD or complex cases - always use constants):
    class MyView(PermissionMapMixin, JWTAndAPIKeyAuthenticationViewMixin, APIView):
        permission_map: PermissionMap = {
            "GET": make_permission(Features.PROXY, Actions.ACCESS),
            "POST": make_permission(Features.PLAYGROUND, Actions.ACCESS),
        }

3. Dynamic logic (most flexible):
    def get_required_permission(self, method: str) -> str | None:
        if self.kwargs.get('public'):
            return None
        return "dataset:read"

Notes:
- permission_map acts as an override when permission_resource is set
- If neither is defined, no permission check is performed (backward compatible)
- HasJWTPermission automatically enforces permissions when defined

## Headers

- `Authorization` string, required

## Request body

- LLMProviderIntegrationRequest
  - `project` string, nullable
  - `credential_fields` ProviderCredentialFieldListRequest[], required
    - `is_secret` boolean
    - `title` string, required
    - `field_name` string, required
    - `description` string
    - `required` boolean
    - `type` string
    - `order` integer
    - `default` string
    - `placeholder` string
  - `integration_id` integer
  - `active_integrations_count` integer
  - `provider_name` string, required
  - `provider_id` string, required
  - `litellm_provider_id` string
  - `moderation` string
  - `extra_kwargs` unknown
  - `is_managed` boolean
  - `respan_discount_rate` number, double
  - `models_sync_config` unknown
  - `organization` integer, nullable, required

## Response `201`

- LLMProviderIntegration
  - `id` integer, required
  - `project` string, nullable
  - `credential_fields` ProviderCredentialFieldList[], required
    - `id` integer, required
    - `is_secret` boolean
    - `title` string, required
    - `field_name` string, required
    - `description` string
    - `required` boolean
    - `type` string
    - `order` integer
    - `default` string
    - `placeholder` string
  - `integration_id` integer
  - `provider_integrations` Integration[], required
    - `id` integer, required
    - `masked_extra_kwargs` string, required
    - `provider` string, nullable
    - `project` string, nullable
    - `created_at` string, date-time, nullable, required
    - `updated_at` string, date-time, nullable, required
    - `type` string
    - `name` string
    - `available_models` string[]
    - `excluded_models` string[]
    - `weight` number, double
    - `is_active` boolean
    - `is_managed` boolean
    - `environment` union
      - 'prod' | 'stage' | 'test' | 'all' — * `prod` - Prod * `stage` - Dev * `test` - Test * `all` - All
      - ''
    - `title` string
    - `integration_unique_id` string, nullable
    - `user` integer, nullable
  - `active_integrations_count` integer
  - `provider_name` string, required
  - `provider_id` string, required
  - `litellm_provider_id` string
  - `moderation` string
  - `extra_kwargs` unknown
  - `created_at` string, date-time, nullable, required
  - `updated_at` string, date-time, nullable, required
  - `is_managed` boolean
  - `respan_discount_rate` number, double
  - `models_sync_config` unknown

---

[API](https://skmtc.net/keywordsai/apis/api-reference.md) · [All operations](https://skmtc.net/keywordsai/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/keywordsai/api-reference/versions/c26d550029f8/schema)
