Every change to the Partner API, newest first. Breaking changes are called out explicitly and we will contact you before making one.
Versioning
The path carries the major version. Anything that would break an existing integration ships as /v2, never as a change to /v1. Additive changes, new fields on a response and new optional parameters, land in place and are listed here.
21 September 2026
Four ways a creator gets a code
Most merchants already run a coupon engine, so Trendly generating every code was the wrong default. You can now keep your engine and pick how the two systems meet: we ask yours for a code, you push one to us when you mint it, we generate one for you to mirror, or a person types it in.
Codes have always been versioned rather than overwritten. That history is now readable, in the API and in the dashboard, so a code that changed in June does not quietly rewrite what June earned.
PUT /v1/affiliates/{id}/code, for engines that mint codes on their own schedule. Needs the new codes:write scope.
An optional provisioning URL we call on approval, for engines that can be reached from outside.
GET /v1/codes returns superseded codes alongside live ones, with replaced_by to follow a chain.
What to change
Nothing, unless you want one of the new models. Polling GET /v1/codes keeps working exactly as before. If you filter that endpoint client side, add a status check now that replaced codes are included.
18 September 2026
Test orders are stored and visible
Orders reported with a test key used to be validated, priced, and discarded. They are now recorded and appear in Trendly marked as test, so you can send an order and go look at it.
Test data is excluded from the program’s figures and from every payout. A brand can clear it at any time from Developers.
POST /v1/orders with a test key now returns recorded: true. It previously returned false.
Orders carry is_test. Live figures and payouts ignore anything marked test.
What to change
If you branch on `recorded` to decide whether a test call worked, switch to the HTTP status. `recorded` now means the same thing in both environments.
18 September 2026
Replay a request from the dashboard
Any order report in the request log can be sent again from Trendly, using the key that made it. The replay is a new entry that points back at the original, so a failure and its fix both stay in the history.
Replay for POST /v1/orders and POST /v1/orders/batch.
18 September 2026
Programs publish their hold period and minimum payout
GET /public/affiliate/{slug} now returns hold_period_days and min_payout_amount. Both are part of the offer a creator accepts, and leaving them out meant nobody could explain why a small balance had not been paid.
hold_period_days and min_payout_amount on the public program endpoint.
15 September 2026
Partner API v1
Report affiliate orders to Trendly with one call. Read the codes attached to a program, validate one at checkout, and read your own request history.
Money is a decimal string. Writes are idempotent on your order id.
POST /v1/orders, POST /v1/orders/batch, GET /v1/orders/{id}
GET /v1/codes, GET /v1/codes/{code}, POST /v1/codes/validate
GET /v1/ping, GET /v1/events, GET /v1/openapi.json
Watching for changes
The OpenAPI document is versioned alongside the API. Diff it in your own CI and you will see additive changes before you read about them here.
Open the spec