For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://modelgates.ai/docs/_mcp/server.

Update a workspace

PATCH https://modelgates.ai/api/v1/workspaces/ Content-Type: application/json

Update an existing workspace by ID or slug. Management key required.

Reference: https://modelgates.ai/docs/api/api-reference/workspaces/update-workspace

OpenAPI Specification

yaml
openapi: 3.1.0info:  title: ModelGates API  version: 1.0.0paths:  /workspaces/:    patch:      operationId: update-workspace      summary: Update a workspace      description: >-        Update an existing workspace by ID or slug. [Management        key](/docs/guides/overview/auth/management-api-keys) required.      tags:        - subpackage_workspaces      parameters:        - name: id          in: path          description: The workspace ID (UUID) or slug          required: true          schema:            type: string        - name: Authorization          in: header          description: API key as bearer token in Authorization header          required: true          schema:            type: string      responses:        '200':          description: Workspace updated successfully          content:            application/json:              schema:                $ref: '#/components/schemas/UpdateWorkspaceResponse'        '400':          description: Bad Request - Invalid request parameters or malformed input          content:            application/json:              schema:                $ref: '#/components/schemas/BadRequestResponse'        '401':          description: Unauthorized - Authentication required or invalid credentials          content:            application/json:              schema:                $ref: '#/components/schemas/UnauthorizedResponse'        '403':          description: Forbidden - Authentication successful but insufficient permissions          content:            application/json:              schema:                $ref: '#/components/schemas/ForbiddenResponse'        '404':          description: Not Found - Resource does not exist          content:            application/json:              schema:                $ref: '#/components/schemas/NotFoundResponse'        '500':          description: Internal Server Error - Unexpected server error          content:            application/json:              schema:                $ref: '#/components/schemas/InternalServerResponse'      requestBody:        content:          application/json:            schema:              $ref: '#/components/schemas/UpdateWorkspaceRequest'servers:  - url: https://modelgates.ai/api/v1components:  schemas:    UpdateWorkspaceRequest:      type: object      properties:        default_image_model:          type:            - string            - 'null'          description: Default image model for this workspace        default_provider_sort:          type:            - string            - 'null'          description: >-            Default provider sort preference (price, throughput, latency,            exacto)        default_text_model:          type:            - string            - 'null'          description: Default text model for this workspace        description:          type:            - string            - 'null'          description: New description for the workspace        io_logging_api_key_ids:          type:            - array            - 'null'          items:            type: integer          description: Optional array of API key IDs to filter I/O logging        io_logging_sampling_rate:          type: number          format: double          description: Sampling rate for I/O logging (0.0001-1)        is_data_discount_logging_enabled:          type: boolean          description: Whether data discount logging is enabled        is_observability_broadcast_enabled:          type: boolean          description: Whether broadcast is enabled        is_observability_io_logging_enabled:          type: boolean          description: Whether private logging is enabled        name:          type: string          description: New name for the workspace        slug:          type: string          description: >-            New URL-friendly slug (lowercase alphanumeric segments separated by            single hyphens, no leading/trailing hyphens)      title: UpdateWorkspaceRequest    UpdateWorkspaceResponseData:      type: object      properties:        created_at:          type: string          description: ISO 8601 timestamp of when the workspace was created        created_by:          type:            - string            - 'null'          description: User ID of the workspace creator        default_image_model:          type:            - string            - 'null'          description: Default image model for this workspace        default_provider_sort:          type:            - string            - 'null'          description: >-            Default provider sort preference (price, throughput, latency,            exacto)        default_text_model:          type:            - string            - 'null'          description: Default text model for this workspace        description:          type:            - string            - 'null'          description: Description of the workspace        id:          type: string          format: uuid          description: Unique identifier for the workspace        io_logging_api_key_ids:          type:            - array            - 'null'          items:            type: integer          description: >-            Optional array of API key IDs to filter I/O logging. Null means all            keys are logged.        io_logging_sampling_rate:          type: number          format: double          description: >-            Sampling rate for I/O logging (0.0001-1). 1 means 100% of requests            are logged.        is_data_discount_logging_enabled:          type: boolean          description: Whether data discount logging is enabled for this workspace        is_observability_broadcast_enabled:          type: boolean          description: Whether broadcast is enabled for this workspace        is_observability_io_logging_enabled:          type: boolean          description: Whether private logging is enabled for this workspace        name:          type: string          description: Name of the workspace        slug:          type: string          description: URL-friendly slug for the workspace        updated_at:          type:            - string            - 'null'          description: ISO 8601 timestamp of when the workspace was last updated      required:        - created_at        - created_by        - default_image_model        - default_provider_sort        - default_text_model        - description        - id        - io_logging_api_key_ids        - io_logging_sampling_rate        - is_data_discount_logging_enabled        - is_observability_broadcast_enabled        - is_observability_io_logging_enabled        - name        - slug        - updated_at      description: The updated workspace      title: UpdateWorkspaceResponseData    UpdateWorkspaceResponse:      type: object      properties:        data:          $ref: '#/components/schemas/UpdateWorkspaceResponseData'      required:        - data      title: UpdateWorkspaceResponse    BadRequestResponseErrorData:      type: object      properties:        code:          type: integer        message:          type: string        metadata:          type:            - object            - 'null'          additionalProperties:            description: Any type      required:        - code        - message      description: Error data for BadRequestResponse      title: BadRequestResponseErrorData    BadRequestResponse:      type: object      properties:        error:          $ref: '#/components/schemas/BadRequestResponseErrorData'        modelgates_metadata:          type:            - object            - 'null'          additionalProperties:            description: Any type        user_id:          type:            - string            - 'null'      required:        - error      description: Bad Request - Invalid request parameters or malformed input      title: BadRequestResponse    UnauthorizedResponseErrorData:      type: object      properties:        code:          type: integer        message:          type: string        metadata:          type:            - object            - 'null'          additionalProperties:            description: Any type      required:        - code        - message      description: Error data for UnauthorizedResponse      title: UnauthorizedResponseErrorData    UnauthorizedResponse:      type: object      properties:        error:          $ref: '#/components/schemas/UnauthorizedResponseErrorData'        modelgates_metadata:          type:            - object            - 'null'          additionalProperties:            description: Any type        user_id:          type:            - string            - 'null'      required:        - error      description: Unauthorized - Authentication required or invalid credentials      title: UnauthorizedResponse    ForbiddenResponseErrorData:      type: object      properties:        code:          type: integer        message:          type: string        metadata:          type:            - object            - 'null'          additionalProperties:            description: Any type      required:        - code        - message      description: Error data for ForbiddenResponse      title: ForbiddenResponseErrorData    ForbiddenResponse:      type: object      properties:        error:          $ref: '#/components/schemas/ForbiddenResponseErrorData'        modelgates_metadata:          type:            - object            - 'null'          additionalProperties:            description: Any type        user_id:          type:            - string            - 'null'      required:        - error      description: Forbidden - Authentication successful but insufficient permissions      title: ForbiddenResponse    NotFoundResponseErrorData:      type: object      properties:        code:          type: integer        message:          type: string        metadata:          type:            - object            - 'null'          additionalProperties:            description: Any type      required:        - code        - message      description: Error data for NotFoundResponse      title: NotFoundResponseErrorData    NotFoundResponse:      type: object      properties:        error:          $ref: '#/components/schemas/NotFoundResponseErrorData'        modelgates_metadata:          type:            - object            - 'null'          additionalProperties:            description: Any type        user_id:          type:            - string            - 'null'      required:        - error      description: Not Found - Resource does not exist      title: NotFoundResponse    InternalServerResponseErrorData:      type: object      properties:        code:          type: integer        message:          type: string        metadata:          type:            - object            - 'null'          additionalProperties:            description: Any type      required:        - code        - message      description: Error data for InternalServerResponse      title: InternalServerResponseErrorData    InternalServerResponse:      type: object      properties:        error:          $ref: '#/components/schemas/InternalServerResponseErrorData'        modelgates_metadata:          type:            - object            - 'null'          additionalProperties:            description: Any type        user_id:          type:            - string            - 'null'      required:        - error      description: Internal Server Error - Unexpected server error      title: InternalServerResponse  securitySchemes:    apiKey:      type: http      scheme: bearer      description: API key as bearer token in Authorization header

SDK Code Examples

python
import requests url = "https://modelgates.ai/api/v1/workspaces/production" payload = {    "name": "Updated Workspace",    "slug": "updated-workspace"}headers = {    "Authorization": "Bearer <token>",    "Content-Type": "application/json"} response = requests.patch(url, json=payload, headers=headers) print(response.json())