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

# Get one person in a batch

> One person's variables, where each value came from, and their final steps. Needs `campaigns:read`.



## OpenAPI

````yaml /api-reference/openapi-v1.json get /v1/campaigns/{id}/enrollment-batches/{batch_id}/recipients/{recipient_id}
openapi: 3.1.0
info:
  title: Stardex API (v1)
  version: 1.0.0
  description: >-
    Stardex ATS API — manage candidates, jobs, companies, and recruiting
    workflows.
servers:
  - url: https://api.stardex.ai
    description: Production API server
security:
  - bearerAuth: []
tags:
  - name: Persons
    description: Manage person records — contacts, work history, and custom fields.
  - name: Jobs
    description: Manage job postings — pipeline stages, team members, and custom fields.
  - name: Candidates
    description: Manage candidate records and pipeline stage transitions.
  - name: Companies
    description: Browse and retrieve company records.
  - name: Lists
    description: Create, search, and retrieve saved person and company lists.
  - name: Person Activities
    description: Create and manage activity records (notes, emails, meetings) for persons.
  - name: Team Members
    description: List team members for use in search filters and assignments.
  - name: Custom Fields
    description: Retrieve custom field definitions and tag options for search filters.
  - name: Campaigns
    description: >-
      Create and edit email campaigns, enroll people through enrollment batches,
      and manage who is enrolled.
paths:
  /v1/campaigns/{id}/enrollment-batches/{batch_id}/recipients/{recipient_id}:
    get:
      tags:
        - Campaigns
      summary: Get one person in a batch
      description: >-
        One person's variables, where each value came from, and their final
        steps. Needs `campaigns:read`.
      operationId: getCampaignEnrollmentBatchRecipient
      parameters:
        - schema:
            type: string
            format: uuid
            description: Campaign ID.
          required: true
          description: Campaign ID.
          name: id
          in: path
        - schema:
            type: string
            format: uuid
            description: Enrollment batch ID.
          required: true
          description: Enrollment batch ID.
          name: batch_id
          in: path
        - schema:
            type: string
            format: uuid
            description: The person's recipient_id in the batch (not their person_id).
          required: true
          description: The person's recipient_id in the batch (not their person_id).
          name: recipient_id
          in: path
      responses:
        '200':
          description: Person
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnrollmentBatchRecipientResponse'
              example:
                success: true
                data:
                  recipient_id: a1c3e5f7-2b4d-4f6a-8c0e-1d3f5b7a9c21
                  person_id: 2f6b9d1e-4a8c-4e3f-b7d2-1c5a9e3b7f40
                  name: Sam Patel
                  email: sam@gmail.com
                  status: ready
                  issues:
                    - code: enrolled_in_other_campaign
                      message: Also in 'Q4 platform engineers' (running).
                      details:
                        campaigns:
                          - Q4 platform engineers
                  enrollment_id: null
                  first_email_estimated_at: '2026-10-19T08:00:00.000Z'
                  add_email_to_person: false
                  overrides: []
                  override_reason: null
                  blank_variables:
                    - custom
                  variables:
                    first_name:
                      value: Sam
                      source: person
                    search_name:
                      value: Senior Backend Engineer
                      source: job
                    search_client:
                      value: Monzo
                      source: job
                    application_link:
                      value: >-
                        https://jobs.stardex.com/acme-talent/senior-backend-engineer-k3f9a2
                      source: job
                    sender_first_name:
                      value: Riya
                      source: sender
                    personalization_line:
                      value: Loved your PyCon talk on async Python.
                      source: provided
                    ai:opening_line:
                      value: Your work scaling payments at Wise stood out.
                      source: ai
                  steps:
                    - step_id: 5b0f3c8e-2a71-4d0e-9a51-6f0c2d7e1a43
                      order: 1
                      type: email
                      send_after_days: 0
                      subject: Senior Backend Engineer role at Monzo
                      body_html: >-
                        <div>Hi Sam,</div><div><br></div><div>Your work scaling
                        payments at Wise stood out. I'm hiring a <strong>Senior
                        Backend Engineer</strong> at Monzo. Loved your PyCon
                        talk on async Python.</div><div><br></div><div>You can
                        see the role <a target="_blank" rel="noopener noreferrer
                        nofollow"
                        href="https://jobs.stardex.com/acme-talent/senior-backend-engineer-k3f9a2">here</a>.
                        Open to a chat?</div><div><br></div><div>Riya</div>
                      edited: false
                    - step_id: 9d2e7a14-61c3-4b8f-8f0e-3a5c9b2d4e17
                      order: 2
                      type: email
                      send_after_days: 3
                      subject: 'Re: Senior Backend Engineer role at Monzo'
                      body_html: >-
                        <div>Hi Sam, following up on my
                        note.</div><div><br></div><div>Riya</div>
                      edited: false
                    - step_id: c4a8e2f1-7b3d-4e6a-9c1f-2d8b5a7e3f90
                      order: 3
                      type: manual
                      send_after_days: 2
                      subject: null
                      body_html: <div>Call Sam if they opened but did not reply.</div>
                      edited: false
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                    description: Always false for error responses.
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: >-
                          Machine-readable error code (e.g. "VALIDATION_ERROR",
                          "NOT_FOUND").
                      message:
                        type: string
                        description: Human-readable error description.
                      details:
                        type: object
                        additionalProperties: {}
                        description: >-
                          Extra facts about the error when they help you fix it,
                          such as a limit and when it resets.
                    required:
                      - code
                      - message
                required:
                  - success
                  - error
        '403':
          description: No access to campaigns, or the API key lacks the permission
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                    description: Always false for error responses.
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: >-
                          Machine-readable error code (e.g. "VALIDATION_ERROR",
                          "NOT_FOUND").
                      message:
                        type: string
                        description: Human-readable error description.
                      details:
                        type: object
                        additionalProperties: {}
                        description: >-
                          Extra facts about the error when they help you fix it,
                          such as a limit and when it resets.
                    required:
                      - code
                      - message
                required:
                  - success
                  - error
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                    description: Always false for error responses.
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: >-
                          Machine-readable error code (e.g. "VALIDATION_ERROR",
                          "NOT_FOUND").
                      message:
                        type: string
                        description: Human-readable error description.
                      details:
                        type: object
                        additionalProperties: {}
                        description: >-
                          Extra facts about the error when they help you fix it,
                          such as a limit and when it resets.
                    required:
                      - code
                      - message
                required:
                  - success
                  - error
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                    description: Always false for error responses.
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: >-
                          Machine-readable error code (e.g. "VALIDATION_ERROR",
                          "NOT_FOUND").
                      message:
                        type: string
                        description: Human-readable error description.
                      details:
                        type: object
                        additionalProperties: {}
                        description: >-
                          Extra facts about the error when they help you fix it,
                          such as a limit and when it resets.
                    required:
                      - code
                      - message
                required:
                  - success
                  - error
components:
  schemas:
    EnrollmentBatchRecipientResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
        data:
          $ref: '#/components/schemas/EnrollmentBatchRecipient'
      required:
        - success
        - data
    EnrollmentBatchRecipient:
      type: object
      properties:
        recipient_id:
          type: string
          format: uuid
        person_id:
          type: string
          format: uuid
        name:
          type:
            - string
            - 'null'
        email:
          type:
            - string
            - 'null'
        status:
          type: string
          enum:
            - preparing
            - ready
            - needs_input
            - blocked
            - excluded
            - enrolled
            - rejected_at_start
          description: >-
            ready: enrolled at start. needs_input and blocked: not enrolled; see
            issues. excluded: left out by you. preparing: AI variables are still
            being written. After start: enrolled or rejected_at_start.
        issues:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Blocks: person_not_found, email_bounced, unsubscribed,
                  person_do_not_contact, already_enrolled. Needs input:
                  no_email, email_not_on_person, company_do_not_contact,
                  already_enrolled_different_email, previously_completed,
                  missing_variables, ai_generation_failed. Warnings:
                  likely_bounce, enrolled_in_other_campaign,
                  previously_in_campaign (was in this campaign before and was
                  stopped, cancelled or failed).
              message:
                type: string
                description: What is wrong and how to fix it.
              details:
                type: object
                additionalProperties:
                  anyOf:
                    - type: string
                    - type: number
                    - type: boolean
                    - type: 'null'
                    - type: array
                      items:
                        type: string
                    - type: 'null'
                description: Extra facts about the issue, such as variable names.
            required:
              - code
              - message
        overrides:
          type: array
          items:
            type: string
            enum:
              - company_do_not_contact
              - duplicate_enrollment
          description: Blocks this person is enrolled despite.
        override_reason:
          type:
            - string
            - 'null'
        enrollment_id:
          type:
            - string
            - 'null'
          format: uuid
          description: Set once enrolled.
        first_email_estimated_at:
          type:
            - string
            - 'null'
          description: >-
            Estimated time of this person's first email, following start_mode
            and moved to later days when the batch is more than the mailbox's
            daily limit can send. null when the person isn't ready, the first
            step isn't an email, or the mailbox's daily limit is 0.
        add_email_to_person:
          type: boolean
        blank_variables:
          type: array
          items:
            type: string
        variables:
          type: object
          additionalProperties:
            type: object
            properties:
              value:
                type: string
              source:
                type: string
                enum:
                  - person
                  - sender
                  - job
                  - provided
                  - provided_for_batch
                  - ai
            required:
              - value
              - source
          description: Every filled variable and where its value came from.
        steps:
          type: array
          items:
            type: object
            properties:
              step_id:
                type: string
                format: uuid
                description: Campaign step ID.
              order:
                type: integer
                description: 1-based position in the campaign.
              type:
                type: string
                enum:
                  - email
                  - manual
                  - text
                  - linkedin_message
                  - linkedin_connection
                  - call
              send_after_days:
                type: integer
              subject:
                type:
                  - string
                  - 'null'
              body_html:
                type: string
              edited:
                type: boolean
                description: Edited for this person, so variable changes don't rewrite it.
            required:
              - step_id
              - order
              - type
              - send_after_days
              - subject
              - body_html
              - edited
      required:
        - recipient_id
        - person_id
        - name
        - email
        - status
        - issues
        - overrides
        - override_reason
        - enrollment_id
        - first_email_estimated_at
        - add_email_to_person
        - blank_variables
        - variables
        - steps
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Authenticate with a Bearer token: API key, OAuth token, or session
        token.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.