Zum Hauptinhalt springen
Omneya
EN
Start test system Try it
Developer docs menu

Customers

Read the customers that were created or matched through your API client.

Get a customer

GET /customers/{externalId}

Scope: customers.read

Returns all data of the customer linked to your customer ID, including the address book. Login data such as passwords and security codes is never included.

Only customers that were created or matched through your API client can be read. Any other customer, an unknown ID and a deleted customer all answer 404, so the response never reveals whether a customer exists.

Path parameters

Parameter Type Required Description
externalId string required Your customer ID, as sent in customer.external_id. Case-sensitive. URL-encode special characters. max length 191

Example request

curl "https://shop.example.com/api/v1/customers/u-55871" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Accept: application/json"

Responses

200 OK The customer.

{
  "data": {
    "id": 9021,
    "customer_id": 9021,
    "external_id": "u-55871",
    "email": "alex.sample@example.com",
    "salutation": "Mr",
    "title": null,
    "first_name": "Alex",
    "last_name": "Sample",
    "company_name": null,
    "street": "Sample Street",
    "house_number": "5",
    "additional": "2nd floor",
    "postcode": "10115",
    "city": "Berlin",
    "country_id": 276,
    "country": "DE",
    "telephone": "+49 30 0000000",
    "shop_id": 1,
    "customer_class_id": 1,
    "is_guest": 0,
    "status": 0,
    "created_at": "2026-10-13T12:05:03.000000Z",
    "updated_at": "2026-10-13T12:05:03.000000Z",
    "billing": {
      "salutation": "Mr",
      "title": null,
      "first_name": "Alex",
      "last_name": "Sample",
      "company": null,
      "street": "Sample Street",
      "house": "5",
      "additional": "2nd floor",
      "postcode": "10115",
      "city": "Berlin",
      "country": "DE"
    },
    "addresses": [
      {
        "id": 1,
        "customer_id": 9021,
        "first_name": "Alex",
        "last_name": "Sample",
        "company_name": null,
        "street": "Packstation",
        "house_number": "123",
        "postcode": "10117",
        "city": "Berlin",
        "country_id": 276,
        "country": "DE",
        "packstation": 1,
        "packstation_name": "123",
        "postnumber": "12345678",
        "is_default": 0,
        "is_default_billing": 0,
        "is_default_shipping": false
      }
    ]
  }
}
Response fields
Field Type Required Description
data object required All data of the customer. The fields listed here are the most important ones; further fields of the customer record are included as well and may be added over time. Login data (passwords, security codes, reset tokens) is never included.
id integer optional Our customer number (same as customer_id).
customer_id integer required Our customer number.
external_id string required Your customer ID, as used in the path.
email string | null optional
salutation string | null optional
title string | null optional
first_name string | null optional
last_name string | null optional
company_name string | null optional
street string | null optional
house_number string | null optional
additional string | null optional
postcode string | null optional
city string | null optional
country_id integer | null optional Our internal country ID.
country string | null required Country code according to ISO 3166-1 alpha-2.
telephone string | null optional
shop_id integer | null optional
customer_class_id integer | null optional Assigned customer class (see listCustomerClasses).
is_guest integer | null optional 1 for a guest customer without an account.
status integer | null optional 0 = active, any other value = blocked.
created_at string (date-time) | null optional
updated_at string (date-time) | null optional
billing object required Billing address of the customer in the format of customer.billing of an order.
salutation string | null optional
title string | null optional
first_name string | null optional
last_name string | null optional
company string | null optional
street string | null optional
house string | null optional
additional string | null optional
postcode string | null optional
city string | null optional
country string | null optional
addresses[] array of object required Address book of the customer, without deleted addresses.
id integer required ID of the address, used in the path of updateCustomerAddress and deleteCustomerAddress.
customer_id integer required Our customer number.
salutation string | null optional
title string | null optional
first_name string | null optional
last_name string | null optional
company_name string | null optional
street string | null optional
house_number string | null optional
additional string | null optional
postcode string | null optional
city string | null optional
country_id integer | null optional Our internal country ID.
country string | null required Country code according to ISO 3166-1 alpha-2.
telephone string | null optional
mobile string | null optional
email string | null optional
packstation integer | null optional 1 for a parcel locker address.
packstation_name string | null optional Number of the parcel locker.
postnumber string | null optional Parcel locker customer number.
is_default integer | null optional 1 if this is the default delivery address (same as is_default_shipping).
is_default_billing integer | null optional 1 if this is the default billing address.
is_default_shipping boolean required true if this is the default delivery address.
created_at string (date-time) | null optional
updated_at string (date-time) | null optional

Error responses

401 Unauthorized The API key is missing, malformed, wrong, paused, expired or revoked. The body is always the same and never names the reason.
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid or missing API key.",
    "details": []
  }
}
403 Forbidden The API key is valid but lacks a scope this endpoint needs. details.required lists the scopes the endpoint requires, details.missing the ones your key lacks. Ask the shop operator to add the scope.
{
  "error": {
    "code": "insufficient_scope",
    "message": "The API key is missing a required scope.",
    "details": {
      "required": [
        "orders.write"
      ],
      "missing": [
        "orders.write"
      ]
    }
  }
}
404 Not Found The path does not exist, the API is not enabled on this system, the order does not belong to the shop of your API client, or the customer, address or label value is not known to your API client.
{
  "error": {
    "code": "not_found",
    "message": "The requested resource does not exist.",
    "details": []
  }
}
429 Too Many Requests Too many requests. Either your API client used up its requests per minute (message Too many requests., with all rate limit headers), or too many failed authentications came in a short time (message Too many authentication attempts., only Retry-After). Both carry the code rate_limited.
{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests.",
    "details": []
  }
}
500 Internal Server Error An unexpected error occurred on our side. Retry later.
{
  "error": {
    "code": "server_error",
    "message": "An unexpected error occurred.",
    "details": []
  }
}

All error codes: error code reference.