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

# Enroll a contact in a campaign

> Enrolls an existing Revve contact into a campaign. Use this when the contact already exists in Revve and you just need to start (or advance) their campaign journey. To create the contact and enroll it in one call, use `POST /api/campaigns/contact-enrollments` instead.



## OpenAPI

````yaml /api-reference/openapi.json post /api/campaigns/enrollments
openapi: 3.1.0
info:
  title: Revve AI API
  description: >-
    Endpoints for integrating your own systems with Revve — enrolling contacts
    into campaigns from your CRM, core banking system, or any external source.
  version: 1.0.0
servers:
  - url: https://app.revve.ai
security:
  - bearerApiKey: []
paths:
  /api/campaigns/enrollments:
    post:
      summary: Enroll a contact in a campaign
      description: >-
        Enrolls an existing Revve contact into a campaign. Use this when the
        contact already exists in Revve and you just need to start (or advance)
        their campaign journey. To create the contact and enroll it in one call,
        use `POST /api/campaigns/contact-enrollments` instead.
      operationId: enrollContact
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - contactId
                - teamId
                - campaignId
              properties:
                contactId:
                  type: string
                  description: The Revve contact ID to enroll.
                teamId:
                  type: string
                  description: >-
                    Your Revve team ID. Must match the team the API key belongs
                    to.
                campaignId:
                  type: string
                  description: >-
                    The campaign to enroll the contact in. Must be an active
                    campaign.
                source:
                  type: string
                  description: >-
                    Optional free-text label recorded against the enrollment,
                    for your own tracking of where it came from.
                version:
                  type: string
                  description: >-
                    Which campaign version to enroll against: `current`,
                    `draft`, or a specific campaign_versions.id. Defaults to
                    `current` if omitted.
      responses:
        '200':
          description: Contact enrolled successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Contact enrolled successfully
                  enrollmentId:
                    type: string
        '400':
          description: >-
            Missing required fields (`contactId`, `teamId`, or `campaignId`), or
            the campaign is not active / does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: >-
            Missing `Authorization` header, or the API key is invalid for the
            given `teamId`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: No contact found with the given `contactId`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: The contact is already enrolled in this campaign.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Contact is already enrolled in this campaign
                  enrollmentId:
                    type: string
                  status:
                    type: string
                    description: The existing enrollment's current status.
        '500':
          description: Unexpected server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
  securitySchemes:
    bearerApiKey:
      type: http
      scheme: bearer
      description: >-
        Pass your team's API key as a Bearer token: `Authorization: Bearer
        YOUR_API_KEY`. Find your API key in the dashboard under Settings. The
        key must belong to the same team as the `teamId` in the request body.

````