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

# Create Customer Resource

> Creates a single customer resource using the default customer schema.



## OpenAPI

````yaml POST /api/resources/customers
openapi: 3.0.0
info:
  title: Reach API
  version: 1.0.0
  description: API documentation for Reach platform
servers:
  - url: https://api.embedreach.com
    description: Production server
security: []
paths:
  /api/resources/customers:
    post:
      tags:
        - Default Partner Resources
      summary: Create Customer Resource
      description: Creates a single customer resource using the default customer schema.
      parameters:
        - name: reach-tenant-id
          in: header
          required: false
          schema:
            type: string
            description: >-
              If using a platform scoped JWT, you can pass in a header to
              impersonate a specific tenant to impersonate the request as.
        - schema:
            type: string
            enum:
              - upsert
              - reject
            default: upsert
            description: >-
              What to do if the resource already exists. upsert will merge new
              data with existing data (PATCH-like behavior), preserving existing
              fields not included in the request. Null values will delete
              fields. reject will throw an error if the resource already exists
          required: false
          description: >-
            What to do if the resource already exists. upsert will merge new
            data with existing data (PATCH-like behavior), preserving existing
            fields not included in the request. Null values will delete fields.
            reject will throw an error if the resource already exists
          name: onconflict
          in: query
        - schema:
            type: boolean
            nullable: true
            default: false
            description: >-
              Whether to allow extra fields that are not defined in the schema.
              If true, extra fields will be accepted but not saved. If false,
              requests with extra fields will be rejected.
          required: false
          description: >-
            Whether to allow extra fields that are not defined in the schema. If
            true, extra fields will be accepted but not saved. If false,
            requests with extra fields will be rejected.
          name: ignoreUnknownFields
          in: query
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    customerId:
                      type: string
                    email:
                      type: string
                    phone:
                      type: string
                    firstName:
                      type: string
                    lastName:
                      type: string
                    emailOptOut:
                      type: boolean
                      description: >-
                        Email subscription opt-out status. Defaults to false
                        (opted in)
                    smsOptOut:
                      type: boolean
                      description: >-
                        SMS subscription opt-out status. Defaults to true (opted
                        out)
                    customerDetailUrl:
                      type: string
                      description: URL to click-out to the customer detail page
                    createdAt:
                      type: string
                      format: date-time
                  required:
                    - customerId
                    - firstName
                    - lastName
                    - createdAt
                  description: Default Customer Resource
              required:
                - data
      responses:
        '200':
          description: Status 200 response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Unique identifier for the resource
                      schema_definition_id:
                        type: string
                        format: uuid
                        description: >-
                          [Deprecated] Please use schemaDefinitionId instead. ID
                          of the schema definition for this resource
                      schemaDefinitionId:
                        type: string
                        format: uuid
                        description: ID of the schema definition for this resource
                      platform_id:
                        type: string
                        format: uuid
                        description: >-
                          [Deprecated] Please use platformId instead. ID of the
                          platform this resource belongs to
                      platformId:
                        type: string
                        format: uuid
                        description: ID of the platform this resource belongs to
                      business_id:
                        type: string
                        format: uuid
                        description: >-
                          [Deprecated] Please use businessId instead. ID of the
                          business this resource belongs to
                      businessId:
                        type: string
                        format: uuid
                        description: ID of the business this resource belongs to
                      resource_external_id:
                        type: string
                        description: External ID of the resource
                      resourceExternalId:
                        type: string
                        description: >-
                          [Deprecated] Please use resourceExternalId instead.
                          External ID of the resource
                      created_at:
                        type: string
                        description: '[Deprecated] Please use createdAt instead'
                      createdAt:
                        type: string
                        description: Creation timestamp
                      updated_at:
                        type: string
                        description: '[Deprecated] Please use updatedAt instead'
                      updatedAt:
                        type: string
                        description: Last update timestamp
                      data:
                        type: object
                        properties:
                          customerId:
                            type: string
                          email:
                            type: string
                          phone:
                            type: string
                          firstName:
                            type: string
                          lastName:
                            type: string
                          emailOptOut:
                            type: boolean
                            description: >-
                              Email subscription opt-out status. Defaults to
                              false (opted in)
                          smsOptOut:
                            type: boolean
                            description: >-
                              SMS subscription opt-out status. Defaults to true
                              (opted out)
                          customerDetailUrl:
                            type: string
                            description: URL to click-out to the customer detail page
                          createdAt:
                            type: string
                            format: date-time
                        required:
                          - customerId
                          - firstName
                          - lastName
                          - createdAt
                    required:
                      - id
                      - schema_definition_id
                      - schemaDefinitionId
                      - platform_id
                      - platformId
                      - business_id
                      - businessId
                      - resource_external_id
                      - resourceExternalId
                      - created_at
                      - createdAt
                      - updated_at
                      - updatedAt
                      - data
                required:
                  - success
        '400':
          description: Bad Request - Validation or request error
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                    default: false
                  message:
                    type: string
                    description: Error message describing what went wrong
                  errors:
                    type: array
                    items:
                      type: string
                    description: Optional array of specific validation errors
                required:
                  - message
        '404':
          description: Status 404 response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      error:
                        type: string
                    required:
                      - error
                required:
                  - success

````