Issue a gift card directly via the API (self-contained request).
Header Parameters
Accepted for forward compatibility but not currently enforced by the server, so a retry with the same key is processed again. Do not rely on it to prevent duplicates. Deduplicate on your side using your own order reference, and avoid refreshing or replaying payment success pages.
Media type the client can parse. Always application/json for this API.
application/jsonBody Parameters
The promotion-id from GET /getPromotionsList, not the brand-id from GET /getBrands. The brand and commission terms are resolved from the promotion. A brand-id is not accepted.
End-user UID (not numeric user ID — confusingly named).
User consent indicator.
ISO 4217 currency code.
Face value to issue.
Response
Gift card issued. Response contains the card URL, reference, face value, and expiry.
Response Attributes
Brand's numeric Spendstream ID.
Human-readable brand name.
Gift-card supplier reference ID. Pass this as transactionid to /giftCardBalanceCheck.
Branded URL where the user views and redeems their gift card.
Cost to the publisher (may differ from face value if there's a discount).
ISO 4217 currency code.
Expiry date/time. Format YYYY-MM-DD HH:MM:SS.
Echoes the HTTP status code.
The request was malformed or missing required parameters. The response body names the specific validation failure (e.g. "UID is required").
Response Attributes
Human-readable failure reason. Safe to surface to integrators but not end-users.
Alternative error message field used by a subset of endpoints (notably getToken
and authentication failures). Integrators should check for both message and
error when parsing failure responses.
Numeric status code echoing the HTTP status (e.g. 400, 401). Populated on
most error paths; a few auth-layer failures omit it.
Authentication failed. Common causes: missing Authorization header, malformed bearer
token, token expired (tokens live 10 hours), or — on getToken itself — HMAC signature
mismatch due to clock drift or wrong secret.
Response Attributes
Human-readable failure reason. Safe to surface to integrators but not end-users.
Alternative error message field used by a subset of endpoints (notably getToken
and authentication failures). Integrators should check for both message and
error when parsing failure responses.
Numeric status code echoing the HTTP status (e.g. 400, 401). Populated on
most error paths; a few auth-layer failures omit it.
Your publisher account has an IP allow-list and the request came from an address that is not on it. The API checks the caller's IP address on every request once a list exists. Ask Spendstream to add the address, or to clear the list if you do not want the restriction. See IP allow-listing in the guide.
Response Attributes
Rate limit exceeded. The POST /getToken endpoint is rate-limited to five requests
per minute, and the limit is currently shared across all publishers; other endpoints may be throttled at the reverse-proxy layer
in response to abusive traffic. Wait and retry with exponential backoff; the
Retry-After header tells you the minimum wait in seconds.
Response Attributes
Human-readable failure reason. Safe to surface to integrators but not end-users.
Alternative error message field used by a subset of endpoints (notably getToken
and authentication failures). Integrators should check for both message and
error when parsing failure responses.
Numeric status code echoing the HTTP status (e.g. 400, 401). Populated on
most error paths; a few auth-layer failures omit it.