> ## 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.

# Mark emails as bounced (bulk)

> Mark or unmark stored email addresses as bounced for one or many persons. Emails and campaigns skip bounced addresses, and the address stays on the person.

Each address must already exist on its person; matching ignores letter case. Several addresses of the same person can be sent in one request. Invalid rows fail individually and do not block other rows in the same request. When the same person_id and email appear twice, the last entry wins.

Read the current state from `is_bounced` on each `emails[]` entry of a person response.



## OpenAPI

````yaml /api-reference/openapi-v1.json post /v1/persons/email-bounced
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.
paths:
  /v1/persons/email-bounced:
    post:
      tags:
        - Persons
      summary: Mark emails as bounced (bulk)
      description: >-
        Mark or unmark stored email addresses as bounced for one or many
        persons. Emails and campaigns skip bounced addresses, and the address
        stays on the person.


        Each address must already exist on its person; matching ignores letter
        case. Several addresses of the same person can be sent in one request.
        Invalid rows fail individually and do not block other rows in the same
        request. When the same person_id and email appear twice, the last entry
        wins.


        Read the current state from `is_bounced` on each `emails[]` entry of a
        person response.
      operationId: setPersonsEmailBounced
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetEmailsBouncedBulkRequest'
      responses:
        '200':
          description: Bounced flags updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetEmailsBouncedBulkResponse'
              example:
                success: true
                data:
                  updated:
                    - person_id: 123e4567-e89b-12d3-a456-426614174000
                      email: john@techcorp.com
                      is_bounced: true
                  failed:
                    - person_id: 123e4567-e89b-12d3-a456-426614174000
                      email: old@techcorp.com
                      error: Email is not stored on this person
                    - person_id: 00000000-0000-0000-0000-000000000001
                      email: jane@example.com
                      error: Person not found
        '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.
                    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.
                    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.
                    required:
                      - code
                      - message
                required:
                  - success
                  - error
components:
  schemas:
    SetEmailsBouncedBulkRequest:
      type: object
      properties:
        updates:
          type: array
          items:
            type: object
            properties:
              person_id:
                type: string
                format: uuid
                description: Person UUID. Get IDs from POST /v1/persons/search.
              email:
                type: string
                minLength: 1
                description: >-
                  Email address to mark or unmark. Must already exist on that
                  person. Matching ignores letter case.
              is_bounced:
                type: boolean
                description: >-
                  true marks the address as bounced, so emails and campaigns
                  skip it. false clears the bounced mark.
            required:
              - person_id
              - email
              - is_bounced
          minItems: 1
          maxItems: 100
          description: >-
            Email addresses to mark or unmark (1–100). Several addresses of the
            same person can be sent in one request. Invalid rows fail
            individually and do not block other rows. When the same person_id
            and email appear twice, the last entry wins.
      required:
        - updates
    SetEmailsBouncedBulkResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
        data:
          $ref: '#/components/schemas/SetEmailsBouncedBulkResult'
      required:
        - success
        - data
    SetEmailsBouncedBulkResult:
      type: object
      properties:
        updated:
          type: array
          items:
            type: object
            properties:
              person_id:
                type: string
                format: uuid
              email:
                type: string
              is_bounced:
                type: boolean
            required:
              - person_id
              - email
              - is_bounced
          description: >-
            Addresses now in the requested state. email is the stored address;
            is_bounced is its bounced state after the request.
        failed:
          type: array
          items:
            type: object
            properties:
              person_id:
                type: string
                format: uuid
                description: Person UUID of the row that failed.
              email:
                type: string
                description: Email address from the failed row.
              error:
                type: string
                description: >-
                  Why this row was not applied, such as "Person not found" or
                  "Email is not stored on this person".
            required:
              - person_id
              - email
              - error
          description: >-
            Rows that could not be updated. Other valid rows in the same request
            are still processed.
      required:
        - updated
        - failed
  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.