Metadata, audit log, rate limits and versions
SET API and SET Merchant API · Live since 2026-11-09
Metadata
Attach up to 20 of your own ids to a customer, virtual account, bank account, Cash-Out Address, Conversion Address, recipient or payout.
- Send
metadata: {…}when you create the object. Every answer and event then carries the object'smetadata({}when none). - Read it with
GET /v1/metadata/{id}. Change it withPOST /v1/metadata/{id} {metadata}: keys you send are set,""ornullremoves a key, andmetadata: nullclears all. - Keys are 1–40 of
A-Z a-z 0-9 _ . : -; values are strings of at most 200 characters. - Metadata never goes to SET's provider.
metadataon any other call is400 metadata_not_supported.
Never personal data. A value that looks like an email, has a space (as a name does), or has a run of more than 8 digits (as an account, card, phone or tax number does) is refused with 400 metadata_personal_data before anything runs.
Audit log
GET /v1/audit_log lists every write made with your keys, and by SET's operator for you, newest first. Each entry has:
actor: a key's prefix, or{type: "operator"};method,path,objectId,status,requestId,createdAt;action, for changes made on SET's console.
It never holds a body. Refused writes are listed with their status. Filter with actor=key|operator, and page with createdBefore.
Request ids and rate-limit headers
Every answer carries Request-Id; quote it when you contact SET. Every answer to a key also carries:
| Header | Meaning |
|---|---|
RateLimit-Limit | Requests allowed this minute: the tighter of the per-key limit and, for a write, the write limit |
RateLimit-Remaining | What is left this minute, by SET's own count |
RateLimit-Reset | Seconds to the end of the minute |
The limiter itself counts per location, so a 429 rate_limited can come a little before or after RateLimit-Remaining reaches zero.
Versions (SET-Version)
- Every
/v1answer carriesSET-Version, the dated version it follows. - Each key is pinned to the version current when it was issued, so a later change never breaks an existing integration.
- Send
SET-Versionon a request to follow another version SET offers. An unknown one is400 version_unsupported. - Today there is one version,
2026-11-09. A breaking change ships under a new date.