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

# Add people to a group

> Adds one or more active people to a group. People who are already members are accepted and returned without error. The response always uses status 200 and lists one membership object per requested person ID, in the same order as the request.

Adding people may assign the group's documents to them. When the group has automatic request issuance enabled, ClearPolicy creates signature requests for newly assigned published documents and sends grouped notification emails asynchronously.



## OpenAPI

````yaml /api-reference/openapi.json post /groups/{group}/people
openapi: 3.1.0
info:
  title: ClearPolicy API
  description: >-
    Programmatic access to your organization's people, groups, documents, and
    attestation requests.


    Each API token is limited to 60 requests per minute. Successful responses
    and `429 Too Many Requests` responses include `X-RateLimit-Limit`,
    `X-RateLimit-Remaining`, and `X-RateLimit-Reset` headers.
  version: 1.0.0
servers:
  - url: https://api.clearpolicy.app/api/v1
security:
  - bearerAuth: []
paths:
  /groups/{group}/people:
    post:
      tags:
        - Groups
      summary: Add people to a group
      description: >-
        Adds one or more active people to a group. People who are already
        members are accepted and returned without error. The response always
        uses status 200 and lists one membership object per requested person ID,
        in the same order as the request.


        Adding people may assign the group's documents to them. When the group
        has automatic request issuance enabled, ClearPolicy creates signature
        requests for newly assigned published documents and sends grouped
        notification emails asynchronously.
      operationId: addGroupPeople
      parameters:
        - name: group
          in: path
          required: true
          description: The ULID of the group.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddGroupPeopleRequest'
      responses:
        '200':
          description: >-
            Memberships for the requested people (including any who were already
            members).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupMembershipList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    AddGroupPeopleRequest:
      type: object
      required:
        - person_ids
      properties:
        person_ids:
          type: array
          minItems: 1
          maxItems: 100
          description: >-
            Distinct ULIDs of active (non-archived) people in your organization
            to add to the group.
          items:
            type: string
    GroupMembershipList:
      type: object
      required:
        - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/GroupMembership'
          description: One membership per requested person_id, in request order.
    GroupMembership:
      type: object
      required:
        - group_id
        - person_id
      properties:
        group_id:
          type: string
          description: The ULID of the group.
        person_id:
          type: string
          description: The ULID of the person.
    Error:
      type: object
      properties:
        error:
          type: string
          description: A human-readable error message.
  responses:
    Unauthorized:
      description: Missing or invalid access token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    PaymentRequired:
      description: Trial expired or subscription inactive.
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
              payment_url:
                type: string
                format: uri
    NotFound:
      description: The requested resource was not found in your organization.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ValidationError:
      description: Validation failed.
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
              errors:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: string
    TooManyRequests:
      description: >-
        Rate limit exceeded. Each API token is limited to 60 requests per
        minute.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
            example: 42
        X-RateLimit-Limit:
          description: Maximum requests allowed per minute for this token.
          schema:
            type: integer
            example: 60
        X-RateLimit-Remaining:
          description: Requests remaining in the current window.
          schema:
            type: integer
            example: 0
        X-RateLimit-Reset:
          description: Unix timestamp when the rate limit resets.
          schema:
            type: integer
            example: 1719532800
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Too Many Attempts.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token created in ClearPolicy API settings with the `api:use`
        scope.

````