Skip to main content
One API call enrolls a user as a partner and creates their referral link. No separate portal signup.
Your appPOST /v2/partners Tolt
Created in Tolt
partnerpart_8fKq2LmZ…
email
groupDefault
statusactive
Ready to share
linklnk_4DwKp9Xm…
param
value
url

Create the partner

Pass the user’s email and your program_id. Tolt creates the partner in the program’s default group (or the group_id you pass) and builds a link slug from their name.
The response is the partner (status: "active") with its link attached: { id, param: "ref", value: "sam" }. Store data.id on your user record. You need it to show their dashboard, pull their stats and change their status.
  • Link slug. Leave out link and Tolt slugs the name (or the email before the @). link.param defaults to your program’s first URL parameter. Values are lowercased and must be unique per parameter.
  • Duplicates. The same email in the same program, or a link value already taken, returns 409 already_exists. Check errors[0].field: email means they’re already a partner, so look them up with GET /v2/partners?search=sam@example.com; link.value means the slug is taken, so pick another or leave out link.
  • Welcome email. Pass "notify_partner": true to send the program’s welcome email (only if it is enabled and the partner is active).

Choose active or pending

Sam Rivera part_8fKq2LmZ…
AppliedPendingDay 0
Approved…/approve ActiveDay 1
Rejected…/reject RejectedDay 1
Suspended…/suspend SuspendedDay 90

Approve returns any partner to active.

New partners are active by default and can earn right away. Pass "status": "pending" to review them first; you then approve or reject them from the dashboard or the API.

Approve, reject or suspend

Status changes are actions, not field edits. Each returns the updated partner and fires a partner.updated webhook.
Partners are never deleted. Suspend or reject them instead.

Approve in bulk

Clear a queue of applications with up to 100 ids per call. Each id succeeds or fails on its own. If a request fails partway with a server error, the ids before it are already applied, so check their state before retrying.
POST /v2/partners/bulk/reject takes the same ids plus an optional shared rejection_note.