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

# Create or replace project_group

> Create or replace project_group. If there is an existing project_group with the same name as the one specified in the request, will replace the existing project_group with the provided fields



## OpenAPI

````yaml /openapi.yaml put /v1/project_group
openapi: 3.1.1
info:
  version: 1.0.0
  title: Braintrust API
  description: >-
    API specification for the backend data server. The API is hosted globally at

    https://api.braintrust.dev or in your own environment.


    You can access the OpenAPI spec for this API at
    https://github.com/braintrustdata/braintrust-openapi.
  license:
    name: Apache 2.0
servers:
  - url: https://api.braintrust.dev
security:
  - bearerAuth: []
  - {}
paths:
  /v1/project_group:
    put:
      tags:
        - ProjectGroups
      summary: Create or replace project_group
      description: >-
        Create or replace project_group. If there is an existing project_group
        with the same name as the one specified in the request, will replace the
        existing project_group with the provided fields
      operationId: putProjectGroup
      requestBody:
        description: Any desired information about the new project_group object
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectGroup'
      responses:
        '200':
          description: Returns the new project_group object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectGroup'
        '400':
          description: >-
            The request was unacceptable, often due to missing a required
            parameter
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                nullable: true
        '401':
          description: No valid API key provided
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                nullable: true
        '403':
          description: The API key doesn’t have permissions to perform the request
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                nullable: true
        '429':
          description: >-
            Too many requests hit the API too quickly. We recommend an
            exponential backoff of your requests
          headers:
            Retry-After:
              schema:
                type: string
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                nullable: true
        '500':
          description: Something went wrong on Braintrust's end. (These are rare.)
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                nullable: true
      security:
        - bearerAuth: []
        - {}
components:
  schemas:
    CreateProjectGroup:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          description: Name of the project group
        description:
          type: string
          nullable: true
          description: Textual description of the project group
        org_name:
          type: string
          nullable: true
          description: >-
            For nearly all users, this parameter should be unnecessary. But in
            the rare case that your API key belongs to multiple organizations,
            you may specify the name of the organization the project group
            belongs in.
      required:
        - name
    ProjectGroup:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the project group
        org_id:
          type: string
          format: uuid
          description: |-
            Unique id for the organization that the project group belongs under

            It is forbidden to change the org after creating a project group
        user_id:
          type: string
          nullable: true
          format: uuid
          description: Identifies the user who created the project group
        created:
          type: string
          nullable: true
          format: date-time
          description: Date of project group creation
        name:
          type: string
          description: Name of the project group
        description:
          type: string
          nullable: true
          description: Textual description of the project group
        deleted_at:
          type: string
          nullable: true
          format: date-time
          description: >-
            Date of project group deletion, or null if the project group is
            still active
        member_projects:
          type: array
          items:
            type: string
            format: uuid
          maxItems: 10000
          description: Sorted ids of active projects in this project group
      required:
        - id
        - org_id
        - name
        - member_projects
      description: >-
        A project group is a collection of projects which can inherit access
        from project-group ACLs
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key or JWT
      description: >-
        Most Braintrust endpoints are authenticated by providing your API key as
        a header `Authorization: Bearer [api_key]` to your HTTP request. You can
        create an API key in the Braintrust [organization settings
        page](https://www.braintrustdata.com/app/settings?subroute=api-keys).

````