> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Set Organization Default Platform (Devin API)

> Set or clear the organization's default Devin session placement to a hosted platform or an outpost pool via the v3 organization API

Sets the organization-wide default placement for new sessions. This is the same setting as **Settings > Devin > Default platform** in the webapp. Sessions created without an explicit `platform` use the creator's personal default first, then this one.

## Permissions

Requires a [service user](/api-reference/v3/service-users/members-service-users) or [personal access token](/api-reference/personal-access-tokens) with the `ManageOrgSettings` permission at the organization level.

## Request fields

Send at most one of:

* `platform`: a hosted platform label configured for the organization (for example `linux`, `windows`, or `macos`) or the name of a shared outpost pool, case-insensitive. Platforms take priority when a name matches both.
* `outpost_pool_id`: the ID of a shared outpost pool available to the organization.

Send an empty JSON object (`{}`), or both fields as `null`, to clear the default. The request body is required.

Only shared outpost pools qualify. Personal outposts can't be the organization default because only their owner can launch sessions on them.

## Outposts-only organizations

When the enterprise is in outposts-only mode, only outpost pools are accepted. Hosted platform labels return `400`.

## Errors

* `400` when `platform` matches no configured platform or shared outpost pool, matches several outpost pools, or names a hosted platform in an outposts-only organization; or when `outpost_pool_id` isn't a shared pool available to the organization. The error body lists the available platforms and outpost pools.
* `403` when the caller lacks `ManageOrgSettings`.
* `422` when both `platform` and `outpost_pool_id` are set.

## Example

```bash theme={null}
curl -X PUT "https://api.devin.ai/v3beta1/organizations/$ORG_ID/default-platform" \
  -H "Authorization: Bearer $DEVIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform": "gpu-pool"}'
```


## OpenAPI

````yaml v3-openapi.yaml PUT /v3beta1/organizations/{org_id}/default-platform
openapi: 3.1.0
info:
  description: Devin v3 API with Service User authentication and RBAC
  title: Devin API v3
  version: 3.0.0
servers: []
security:
  - bearerAuth: []
paths:
  /v3beta1/organizations/{org_id}/default-platform:
    put:
      tags:
        - organization-settings
      summary: Set Organization Default Platform
      description: |-
        Set or clear the organization's default placement for new sessions.

        Accepts a hosted platform label, a shared outpost pool name
        (``platform``), or a shared outpost pool ID (``outpost_pool_id``).
        Outposts-only organizations only accept outpost pools. Sending neither
        clears the default.
      operationId: >-
        handle_update_org_default_platform_v3beta1_organizations__org_id__default_platform_put
      parameters:
        - description: 'Organization ID (prefix: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrgDefaultPlatformUpdateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrgDefaultPlatformResponse'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unprocessable Content
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Too Many Requests
components:
  schemas:
    OrgDefaultPlatformUpdateRequest:
      description: |-
        Set the organization's default placement for new sessions.

        Send at most one of ``platform`` and ``outpost_pool_id``; send both as
        null (for example ``{}``) to clear the default.
      properties:
        outpost_pool_id:
          anyOf:
            - maxLength: 128
              type: string
            - type: 'null'
          description: ID of a shared outpost pool available to the organization.
          title: Outpost Pool Id
        platform:
          anyOf:
            - maxLength: 128
              type: string
            - type: 'null'
          description: >-
            A hosted platform label configured for the organization (e.g.
            'linux', 'windows', 'macos') or the name of a shared outpost pool,
            case-insensitive; platforms take priority when a name matches both.
            Unrecognized values are rejected with a 400 that lists the available
            platforms and outpost pools.
          title: Platform
      title: OrgDefaultPlatformUpdateRequest
      type: object
    OrgDefaultPlatformResponse:
      description: The organization's default placement for new sessions.
      properties:
        outpost_pool_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Outpost pool new sessions run on by default. Null when the default
            is a hosted platform or unset.
          title: Outpost Pool Id
        outpost_pool_name:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Name of the default outpost pool. Null when the default is not an
            outpost pool, or the pool is no longer available to the
            organization.
          title: Outpost Pool Name
        platform:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Hosted platform label (e.g. 'linux', 'windows') new sessions run on
            by default. Null when the default is an outpost pool or unset.
          title: Platform
      required:
        - platform
        - outpost_pool_id
        - outpost_pool_name
      title: OrgDefaultPlatformResponse
      type: object
    ProblemDetail:
      description: >-
        RFC 9457 application/problem+json error body for the v3 API.


        detail is retained from the legacy {"detail": ...} body for back-compat;
        the

        other members are additive. errors carries field-level validation
        failures

        (422 only).
      properties:
        detail:
          anyOf:
            - type: string
            - type: 'null'
          description: A human-readable explanation specific to this occurrence.
          title: Detail
        error_code:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Machine-readable code for blocked-action refusals (e.g.
            "user_frozen", "migrated_session").
          title: Error Code
        errors:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          description: Field-level validation errors (422 responses only).
          title: Errors
        instance:
          anyOf:
            - type: string
            - type: 'null'
          description: A URI reference (the request path) for this occurrence.
          title: Instance
        status:
          description: The HTTP status code.
          title: Status
          type: integer
        title:
          description: A short, human-readable summary of the problem type.
          title: Title
          type: string
        type:
          default: about:blank
          description: A URI reference identifying the problem type.
          title: Type
          type: string
      required:
        - title
        - status
      title: ProblemDetail
      type: object
  securitySchemes:
    bearerAuth:
      description: 'Service User credential (prefix: cog_)'
      scheme: bearer
      type: http

````