PolderAPI

Backlog API

Customers

Customers of the workspace and the requests they made.

Base URLhttps://backlog.polder.work

A customer is a client of the workspace. A customer request is what that client asked for, in their own words, filed against the issue that answers it. Filing a request also links the customer to the issue.

Every member can read customers. Creating, changing and deleting customers needs a workspace owner or admin, the same bar as the settings screen.

The customer object

{
  "id": 9,
  "name": "De Vries Bouw",
  "slug": "de-vries-bouw",
  "color": "#f59e0b",
  "phone": "+31 20 123 4567",
  "email": "info@devriesbouw.example",
  "website": "https://devriesbouw.example",
  "sla_policy_id": null,
  "created_at": "2026-05-04T10:00:00+00:00"
}

phone, email and website are left out entirely (not null) for guests. The customer's ingest token is never returned.

List customers

GET/api/v1/workspaces/{workspace}/customersscope customers:read

Customers ordered by name. Paged with page and per_page (50 by default, at most 200).

curl https://backlog.polder.work/api/v1/workspaces/7/customers \
  -H "Authorization: Bearer $POLDER_TOKEN"

Create a customer

POST/api/v1/workspaces/{workspace}/customersscope customers:write

Creates a customer and answers 201. 403 when you are not an owner or admin.

Field Type Required Description
name string yes Up to 255 characters. The slug is made from it.
color string or null no Up to 20 characters.
phone string or null no Up to 50 characters.
email string or null no A valid address, up to 255 characters.
website string or null no Up to 255 characters. https:// is added when you leave out the scheme; only http and https are accepted.
sla_policy_id integer or null no An SLA policy of this workspace.

Blank phone, email and website are stored as null.

curl https://backlog.polder.work/api/v1/workspaces/7/customers \
  -H "Authorization: Bearer $POLDER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "De Vries Bouw", "website": "devriesbouw.example"}'

Get a customer

GET/api/v1/customers/{customer}scope customers:read

One customer. 403 when it is in a workspace you are not a member of.

Change a customer

PATCH/api/v1/customers/{customer}scope customers:write

Changes the fields you send, with the rules of Create a customer except that name is optional. Answers 200 with the customer. Owner or admin only.

Delete a customer

DELETE/api/v1/customers/{customer}scope customers:write

Deletes the customer. Answers 204. Owner or admin only.

The customer request object

{
  "id": 140,
  "customer_id": 9,
  "issue_id": 2210,
  "project_id": null,
  "body": "We cannot export the invoice list since Monday.",
  "requester_name": "Jan de Vries",
  "source": "api",
  "created_at": "2026-10-20T13:05:00+00:00"
}

project_id is only set for a request that is filed on a project instead of an issue; it is null for requests made through this API.

List the requests of a customer

GET/api/v1/customers/{customer}/requestsscope customers:read

Requests of a customer, newest first. Paged with page and per_page.

File a customer request

POST/api/v1/issues/{issue}/customer-requestsscope customers:write

Files a request against an issue and links the customer to that issue (if it was not linked yet). You need to be able to change the issue; otherwise 403. Answers 201.

Field Type Required Description
customer_id integer yes A customer of the issue's workspace.
body string yes What the customer asked, as plain text. Up to 20000 characters.
source string or null no Where it came from, up to 40 characters. Defaults to api.
requester_name string or null no Who at the customer asked, up to 255 characters.
curl https://backlog.polder.work/api/v1/issues/2210/customer-requests \
  -H "Authorization: Bearer $POLDER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"customer_id": 9, "body": "We cannot export the invoice list since Monday.", "requester_name": "Jan de Vries"}'

Tip: for something nobody has looked at yet, use the triage ingest instead of this endpoint.