Sending gifts
There are three send endpoints. They differ only in what the gift is; everything else — who gets it, when, how it is paid for — works the same way.
| Endpoint | The gift |
|---|---|
POST /send/gift |
One product you choose. |
POST /send/collection |
A set the recipient chooses from. |
POST /send/template |
A preset saved in 1UP. |
All three return the same SendResponse.
Two delivery modes
Section titled “Two delivery modes”Delivery mode is inferred from the request, not stated. You supply one of two fields:
Supply recipients. 1UP emails each person their code.
{ "productId": 184, "value": 25.00, "recipients": [ { "email": "aisha@example.com", "name": "Aisha" }, { "email": "tom@example.com", "name": "Tom", "quantity": 2 } ]}quantity defaults to 1 and can go up to 1000 — that recipient gets that many separate codes.
The response has deliveryMode: "send" and an empty codes array: the codes went to the
recipients, not to you.
Supply codeQuantity. Nothing is emailed and no recipients are recorded — you get the raw codes
back to distribute however you like.
{ "productId": 184, "value": 25.00, "codeQuantity": 50}The response has deliveryMode: "manual" and codes populated:
{ "deliveryMode": "manual", "codeCount": 50, "recipientCount": 0, "codes": [ { "code": "4RT9-KK2M", "pin": "8812", "redemptionUrl": "https://1up.gift/c/4RT9-KK2M" } ]}Up to 5000 codes in one call.
The greeting
Section titled “The greeting”Three optional fields shape what the recipient sees:
fromName— who it is from, at most 32 charactersmessage— a personal note, at most 256 characterswrappingKey— the box colours and emoji, defaulting todefault
On a template send these act as overrides: set them to replace the template’s, omit them to use the template’s.
Scheduling
Section titled “Scheduling”sendAt takes an absolute UTC instant. Omit it to send immediately.
{ "productId": 184, "value": 50.00, "sendAt": "2026-12-24T08:00:00Z", "recipients": [{ "email": "aisha@example.com" }]}The order is placed and funded straight away; only the delivery waits. The response carries
scheduledFor so you can confirm it.
sendAt must be in the future, and is ignored for a code batch — those are always generated now.
Values
Section titled “Values”Whether you must supply a value depends on the gift:
- Physical gifts have an intrinsic price. Omit
value. - Digital gifts with one denomination are implied. Omit
value. - Everything else needs a
valuethat is one of the product’s denominations, or inside itsminAmount/maxAmountrange.
GET /products/{id} tells you which case you are in via requiresAmount. See
Choosing a gift.
Attribution
Section titled “Attribution”Set source to a short token — zapier, hris, crm — and it shows up against the order in
1UP reporting. It defaults to api.
Every order is also attributed to the service account your key belongs to, which you cannot override from the API.
