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

Customer notes

Add internal notes to a customer.

Create a note

POST /customers/{externalId}/notes

Scope: customers.write

Adds a note to the customer. text may be plain text or simple HTML (paragraphs, lists, bold and similar). Scripts and event attributes are removed. Because the text is stored as HTML, special characters in plain text come back encoded (for example & as &).

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

Request body

Field Type Required Description
text string required Text of the note, plain text or simple HTML. max length 65535
notification integer | null optional When the note is shown as a notice: 0 never, 1 when opening the customer or an order and when creating an order, 2 only in the customer view. one of: 0, 1, 2, null · default 0

Example request

curl -X POST "https://shop.example.com/api/v1/customers/u-55871/notes" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "text": "Customer prefers delivery in the afternoon.",
  "notification": 0
}'

Responses

201 Created The note was created.

{
  "data": {
    "id": 501,
    "customer_id": 9021,
    "text": "<p>Customer prefers delivery in the afternoon.</p>",
    "notification": 0,
    "created_at": "2026-10-14T14:02:11+02:00"
  }
}
Response fields
Field Type Required Description
data object required
id integer required
customer_id integer required Our customer number.
text string required The stored text as cleaned HTML.
notification integer required one of: 0, 1, 2
created_at string (date-time) | null required

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": []
  }
}
422 Unprocessable Content The request data is invalid. details lists every problem at once: per field a list of {code, message}. Field names use dots for nesting, for example value_ids.1 is the second entry of value_ids (counting from 0).
{
  "error": {
    "code": "validation_failed",
    "message": "The request payload is invalid.",
    "details": {
      "street": [
        {
          "code": "required",
          "message": "The street field is required."
        }
      ],
      "country": [
        {
          "code": "unknown_country",
          "message": "The selected country is invalid."
        }
      ]
    }
  }
}
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.