Skip to main content

Get Partners

Retrieve a paginated list of published partners from your store.

Archived partners and the store referrer are omitted. The list is identity only — no currency, and no per-row earnings. Narrow it with the optional filters below. All filters combine with AND.

Request​

GET /partners

Query Parameters​

ParameterTypeRequiredDefaultDescription
pageintegerNo1Page number for pagination.
per_pageintegerNo25Items per page (min: 1, max: 100). The default is 25, not 10.
sortstringNonameSort field: name, created_at, or ref. Prefix with - for descending.
querystringNo—Partial match on name or ref.
created_fromstringNo—Only partners created on or after this date (inclusive), YYYY-MM-DD. No date window when omitted.
created_tostringNo—Only partners created on or before this date (inclusive), YYYY-MM-DD. No date window when omitted.

Omitting a filter or passing it empty means no filter on that field. A present but unparseable value returns 400 (see Bad Request). That includes a malformed date, an out-of-range per_page, or an unknown sort field. The query search term is free text and is always accepted.

There is no currency and no include on this endpoint. Earnings for one partner are on Get Partner with include=stats.

Ordering: Partners default to name ascending unless sort is supplied.

Counting matches: every response includes the filtered total in pagination.total. To get only a count, request per_page=1 with your filters and read pagination.total.

Example Request​

curl -X GET "https://cart.easy.tools/api/v1/partners?per_page=25" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Response​

Success Response (200)​

Returns a paginated list of partners. cookie_valid_days: null means the partner inherits the store default.

{
"items": [
{
"id": "7c2e9a14-3b6f-4d81-9e25-0c8a1f4b6d30",
"name": "Ada",
"email": "ada@example.com",
"ref": "ada",
"cookie_valid_days": null,
"commission_percent": 15,
"is_auto_created": false,
"created_at": "2026-05-27T10:15:30+00:00",
"updated_at": "2026-05-27T10:15:30+00:00"
}
],
"pagination": {
"current_page": 1,
"total_pages": 1,
"per_page": 25,
"total": 1
}
}

Response Fields​

The list item is the Partner object without stats.

FieldTypeNullableDescription
idstringNoPartner UUID.
namestringNoPartner name.
emailstringYesLinked account email. Null when no account is linked.
refstringYesCheckout ?ref= slug.
cookie_valid_daysintegerYesCookie-length override, in days. Null inherits the store default.
commission_percentintegerYesCommission override. 15 means 15%. Null inherits the store default.
is_auto_createdbooleanNoTrue when checkout created this partner from an unknown ref.
created_atstringNoWhen the partner was created (ISO 8601).
updated_atstringNoWhen the partner was last updated (ISO 8601).

Pagination Object​

FieldTypeDescription
current_pageintegerCurrent page number.
total_pagesintegerTotal number of pages.
per_pageintegerEffective page size (echoes the per_page request parameter; defaults to 25).
totalintegerTotal number of partners matching the applied filters, across all pages.

Error Responses​

Bad Request (400)​

Returned when a filter has a non-empty but unparseable value. The message names the offending field and the value received.

{
"message": "Invalid value for 'sort': 'email'"
}

Unauthorized Error (401)​

{
"message": "Unauthenticated."
}

Forbidden Error (403)​

Returned when your API key has not been granted access to the requested store.

{
"message": "You do not have API access to the requested store."
}

Rate Limit Error (429 Too Many Requests)​

Returned when you exceed the rate limit. The Retry-After response header gives the number of seconds to wait.

{
"message": "Too many requests. Please retry after 60 seconds."
}