Skip to content

Create a customer

POST
/api/customers
curl --request POST \
--url https://app.dycrypt.com/o/acme/api/customers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "name": "example", "email": "hello@example.com", "notes": "example" }'
Media typeapplication/json
object
name
required
string
email
string format: email
notes
string
Examplegenerated
{
"name": "example",
"email": "hello@example.com",
"notes": "example"
}

The new customer.

Media typeapplication/json

Who a licence is issued to. Not a user of your organisation, and has no sign-in.

object
id
required
integer format: int64
name
required
string
email
string | null format: email
notes
string | null
licenseCount
integer format: int64
createdAt
string format: date-time
createdBy
string | null
Examplegenerated
{
"id": 1,
"name": "example",
"email": "hello@example.com",
"notes": "example",
"licenseCount": 1,
"createdAt": "2026-04-15T12:00:00Z",
"createdBy": "example"
}

The request is wrong — a bad date, a missing field, a value the product does not declare.

Media typeapplication/json

Every failure in this API has this shape and no other.

object
error
required
string
Example
{
"error": "this token does not have licenses:write"
}

No credential, or one that no longer resolves — revoked, expired, deleted. Replace it.

Media typeapplication/json

Every failure in this API has this shape and no other.

object
error
required
string
Example
{
"error": "this token does not have licenses:write"
}

Authenticated, but not allowed: a missing scope, a read-only role, a plan limit reached, or a credential used under another organisation’s slug. The right credential doing something it may not do.

Media typeapplication/json

Every failure in this API has this shape and no other.

object
error
required
string
Example
{
"error": "this token does not have licenses:write"
}