Repender Public API

Browse the device catalog and create and update customers via the Repender API

Base URL

https://repender.nl/api/v1

Authentication

All requests require a personal access token with the api ability. Pass the token in the Authorization header.

Authorization: Bearer {token}

Tokens can be generated in Repender under Settings > API access.

Shop context

Each request is scoped to a shop. For organizations with a single shop, the shop is resolved automatically. For organizations with multiple shops, pass shop_id in the request body.

Endpoints

GET /device-types

List the device types that have at least one enabled device. Use the returned slug to filter /devices and /brands.

Query parameters

Field Type Required Description
is_visible_in_plugin boolean No Only return device types with at least one device visible in the plugin widget.

Response 200 OK

{ "data": [ { "name": "Smartphone", "slug": "smartphone" }, { "name": "Tablet", "slug": "tablet" } ] }
GET /brands

List the brands that have at least one enabled device. Use the returned slug to filter /devices.

Query parameters

Field Type Required Description
device_type string No Slug of an existing device type. Only return brands with a device of this type.
is_visible_in_plugin boolean No Only return brands with at least one device visible in the plugin widget.

Response 200 OK

{ "data": [ { "name": "Apple", "slug": "apple" }, { "name": "Samsung", "slug": "samsung" } ] }
GET /devices

List devices, including a ready-to-use plugin embed shortcode per device. Paginated.

Query parameters

Field Type Required Description
device_type string No Slug of an existing device type, from /device-types.
brand string No Slug of an existing brand, from /brands.
search string No Filter by device name.
created_after date No Only return devices created after this date. Devices are never updated, so this can be used to sync new devices incrementally.
is_visible_in_plugin boolean No Only return devices visible in the plugin widget.
page integer No Page number. Defaults to 1.
per_page integer No Max 100. Defaults to 25.

Trial organizations only have access to a fixed subset of the device catalog, regardless of the filters used.

Response 200 OK

{ "data": [ { "slug": "iphone-15-pro", "device_type": "Smartphone", "brand": "Apple", "name": "iPhone 15 Pro", "image_url": "https://repender.nl/.../iphone-15-pro.webp", "shortcode": "<div id=\"repender-inline\" data-device-type=\"smartphone\" data-brand=\"apple\" data-device=\"iphone-15-pro\"></div>", "created_at": "2026-01-14T10:00:00.000000Z" } ], "links": { "first": "...", "last": "...", "prev": null, "next": "..." }, "meta": { "current_page": 1, "per_page": 25, "total": 512 } }
GET /customers

List customers. Paginated.

Query parameters

Field Type Required Description
created_after date No Only return customers created after this date. Can be used to sync new customers incrementally.
page integer No Page number. Defaults to 1.
per_page integer No Max 100. Defaults to 25.

Response 200 OK

{ "data": [ { "id": 512, "name": "Jane Doe", "is_company": false, "company_name": null, "postal_code": "1234 AB", "house_number": 12, "house_number_addition": null, "street": "Main Street", "city": "Amsterdam", "country_id": 1, "phone_number": "+31612345678", "email": "[email protected]", "invoice_email": null, "registration_number": null, "vat_number": null, "codice_fiscale": null, "remarks": null } ], "links": { "first": "...", "last": "...", "prev": null, "next": "..." }, "meta": { "current_page": 1, "per_page": 25, "total": 512 } }
POST /customers

Create a customer.

Request body application/json

Field Type Required Description
name string Yes Customer's full name. Max 255 characters.
is_company boolean Yes Whether this customer is a company.
company_name string No Max 255 characters.
postal_code string No Max 255 characters.
house_number integer No  
house_number_addition string No Max 255 characters.
street string No Max 255 characters.
city string No Max 255 characters.
country_id integer No Id of an existing country.
phone_number string No Max 255 characters.
email string No Valid email address. Max 255 characters.
invoice_email string No Valid email address. Max 255 characters.
registration_number string No Chamber of Commerce number. Max 255 characters.
vat_number string No Max 255 characters.
codice_fiscale string No Italian tax code. Max 255 characters.
remarks string No Free text notes. Max 65535 characters.

Response 201 Created

{ "data": { "id": 512, "name": "Jane Doe", "is_company": false, "company_name": null, "postal_code": "1234 AB", "house_number": 12, "house_number_addition": null, "street": "Main Street", "city": "Amsterdam", "country_id": 1, "phone_number": "+31612345678", "email": "[email protected]", "invoice_email": null, "registration_number": null, "vat_number": null, "codice_fiscale": null, "remarks": null } }
PUT /customers/{id}

Update a customer. Accepts the same fields as POST /customers. name and is_company are required.

Response 200 OK

{ "data": { "id": 512, "name": "Jane Doe", ... } }

Error responses

Status Meaning
401 Missing or invalid token.
403 Token does not have the api ability, the organization's plan does not include this endpoint (customer endpoints require a Pro plan), or the provided shop_id is not accessible with this token.
404 Customer not found.
422 Validation error, e.g. an unknown device_type or brand slug. The response body contains a message and an errors object with field-level details.
Repender logo

Repender B.V.

Hercules 6, 5126RK Gilze

KVK: 94818932

Btw: NL866902648B01

Copyright © 2026 Repender B.V. All rights reserved.

Termini e condizioni Informativa sulla privacy