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

# Get Customer

> Retrieve one customer by ID, including tags, addresses, additional data fields, and subscription status.

Returns the full profile for a single customer. Alongside the standard attributes, the response carries the customer's additional data fields in `additionalData` and their per-app marketing subscription state in `subscriptionStatus`.

## Additional data fields

`additionalData` is a flat map of field key to value. The keys are the field keys of the custom fields defined for your company in the **Customers** menu, so a field named "Favorite Food" with the key `favorite_food` is read as `additionalData.favorite_food`.

```json theme={null}
{
  "data": {
    "id": "cust_abc123",
    "email": "john@example.com",
    "firstName": "John",
    "lastName": "Doe",
    "tags": ["vip"],
    "additionalData": {
      "favorite_food": "Nasi Goreng",
      "shirt_size": "L",
      "loyalty_signup_year": 2024
    },
    "subscriptionStatus": [{ "app": "BITCRM", "status": "subscribe" }]
  }
}
```

Values keep the type they were stored with: text fields return strings, number fields return numbers, and multiple-choice fields return arrays. Fields [synced from Shopify](/bitcrm/how-to-use-shopify-customer-metafields) appear in the same map, alongside your bitbybit fields.

A field the customer has never been given a value for is left out of the map, and a field that was set and later cleared comes back as `null`. Read keys defensively rather than assuming every field is present. A customer with no values at all returns `"additionalData": {}`.

<Note>
  `additionalData` is read-only here. Create and update calls do not accept it — set those values on the customer profile in the app, in the bitChat **Additional data** card, or through a bitLogin Collect Data form.
</Note>

## Subscription status

`subscriptionStatus` lists one entry per bitbybit app the customer has a recorded marketing preference for. `app` is `BITCRM` or `BITLINK`, and `status` is `subscribe` or `unsubscribe`. Apps with no recorded preference are omitted, so an empty array means the customer has never been opted in or out.

The same two fields are also returned by [List Customers](/api-reference/endpoint/customers/list).


## OpenAPI

````yaml GET /customers/{id}
openapi: 3.1.0
info:
  title: bitbybit Open API
  description: >-
    The bitbybit Open API provides programmatic access to your bitbybit data
    including customers, orders, and products.
  version: 1.0.0
  contact:
    name: bitbybit Support
    url: https://bitbybit.studio
servers:
  - url: https://api.bitbybit.studio/customer/api/open/v1
    description: Production
security:
  - ApiKeyAuth: []
paths:
  /customers/{id}:
    get:
      tags:
        - Customers
      summary: Get a customer
      description: Retrieve a single customer by ID.
      operationId: getCustomer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Customer'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Customer:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
          nullable: true
        phoneNumber:
          type: string
          nullable: true
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        imageUrl:
          type: string
          nullable: true
        tags:
          type: array
          items:
            type: string
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/Address'
        additionalData:
          type: object
          description: >-
            Custom customer fields defined for your company, returned as a flat
            map of field key to value. Keys match the field keys you configured
            in Settings; values keep the type they were stored with (string,
            number, boolean, array, or object). Returns an empty object when the
            customer has no custom field values.
          additionalProperties: true
          example:
            favorite_food: Nasi Goreng
            shirt_size: L
            loyalty_signup_year: 2024
        subscriptionStatus:
          type: array
          description: >-
            Marketing subscription state per bitbybit app. Apps the customer has
            never been recorded against are omitted.
          items:
            $ref: '#/components/schemas/SubscriptionStatus'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    Address:
      type: object
      properties:
        id:
          type: string
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        phone:
          type: string
          nullable: true
        address1:
          type: string
          nullable: true
        address2:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        province:
          type: string
          nullable: true
        country:
          type: string
          nullable: true
        zip:
          type: string
          nullable: true
    SubscriptionStatus:
      type: object
      properties:
        app:
          type: string
          enum:
            - BITCRM
            - BITLINK
          description: The bitbybit app the subscription state applies to
        status:
          type: string
          enum:
            - subscribe
            - unsubscribe
          description: >-
            Whether the customer is subscribed to marketing messages for that
            app
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: NOT_FOUND
              message: Resource not found
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Create one in Settings > Developer.

````