Add card to draft
curl --request POST \
--url https://sg.sandbox.api.reap.global/card-shipments/{id}/cards \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Reap-Version: <reap-version>' \
--data '
{
"cardId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cardDesignId": "<string>",
"shippingAddress": {
"line1": "<string>",
"city": "<string>",
"postalCode": "<string>",
"country": "US",
"line2": "<string>",
"zone": "<string>"
}
}
'const options = {
method: 'POST',
headers: {
'Reap-Version': '<reap-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
cardId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
cardDesignId: '<string>',
shippingAddress: {
line1: '<string>',
city: '<string>',
postalCode: '<string>',
country: 'US',
line2: '<string>',
zone: '<string>'
}
})
};
fetch('https://sg.sandbox.api.reap.global/card-shipments/{id}/cards', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sg.sandbox.api.reap.global/card-shipments/{id}/cards"
payload = {
"cardId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cardDesignId": "<string>",
"shippingAddress": {
"line1": "<string>",
"city": "<string>",
"postalCode": "<string>",
"country": "US",
"line2": "<string>",
"zone": "<string>"
}
}
headers = {
"Reap-Version": "<reap-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "DRAFT",
"destinationAddress": {
"line1": "<string>",
"line2": "<string>",
"zone": "<string>",
"city": "<string>",
"postalCode": "<string>",
"country": "US"
},
"recipient": {
"firstName": "<string>",
"lastName": "<string>",
"phoneNumber": "<string>",
"dialCode": 123,
"email": "jsmith@example.com"
},
"courier": {
"type": "POSTAL"
},
"trackingNumber": "<string>",
"trackingUrl": "<string>",
"cutoffDate": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"submittedAt": "<string>",
"deliveredAt": "<string>"
}{
"error": {
"code": "CARD_NOT_PHYSICAL",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "CARD_SHIPMENT_CARD_NOT_FOUND",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "ACTIVE_CARD_SHIPMENT_EXISTS",
"message": "<string>",
"detail": {}
}
}Card Shipments
Add card to draft
Append a card to a shipment in DRAFT status. Rejects if the card is already in another active shipment, or if the shipment is already at the 200-card limit.
POST
/
card-shipments
/
{id}
/
cards
Add card to draft
curl --request POST \
--url https://sg.sandbox.api.reap.global/card-shipments/{id}/cards \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Reap-Version: <reap-version>' \
--data '
{
"cardId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cardDesignId": "<string>",
"shippingAddress": {
"line1": "<string>",
"city": "<string>",
"postalCode": "<string>",
"country": "US",
"line2": "<string>",
"zone": "<string>"
}
}
'const options = {
method: 'POST',
headers: {
'Reap-Version': '<reap-version>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
cardId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
cardDesignId: '<string>',
shippingAddress: {
line1: '<string>',
city: '<string>',
postalCode: '<string>',
country: 'US',
line2: '<string>',
zone: '<string>'
}
})
};
fetch('https://sg.sandbox.api.reap.global/card-shipments/{id}/cards', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sg.sandbox.api.reap.global/card-shipments/{id}/cards"
payload = {
"cardId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cardDesignId": "<string>",
"shippingAddress": {
"line1": "<string>",
"city": "<string>",
"postalCode": "<string>",
"country": "US",
"line2": "<string>",
"zone": "<string>"
}
}
headers = {
"Reap-Version": "<reap-version>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "DRAFT",
"destinationAddress": {
"line1": "<string>",
"line2": "<string>",
"zone": "<string>",
"city": "<string>",
"postalCode": "<string>",
"country": "US"
},
"recipient": {
"firstName": "<string>",
"lastName": "<string>",
"phoneNumber": "<string>",
"dialCode": 123,
"email": "jsmith@example.com"
},
"courier": {
"type": "POSTAL"
},
"trackingNumber": "<string>",
"trackingUrl": "<string>",
"cutoffDate": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"submittedAt": "<string>",
"deliveredAt": "<string>"
}{
"error": {
"code": "CARD_NOT_PHYSICAL",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "CARD_SHIPMENT_CARD_NOT_FOUND",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "ACTIVE_CARD_SHIPMENT_EXISTS",
"message": "<string>",
"detail": {}
}
}Authorizations
API key as Bearer token
Headers
API version (YYYY-MM-DD)
Available options:
2025-02-14 Example:
"2025-02-14"
Path Parameters
Body
application/jsonapplication/x-www-form-urlencodedmultipart/form-data
Request body for appending a card to a draft shipment
Response
Card shipment resource
Unique shipment identifier
Shipment lifecycle status
Available options:
DRAFT, PLACED, IN_PRODUCTION, READY_TO_SHIP, IN_TRANSIT, OUT_FOR_DELIVERY, DELIVERED, DELIVERY_FAILED, EXCEPTION, CANCELED Example:
"DRAFT"
Box-level destination address
Show child attributes
Show child attributes
Recipient details
Show child attributes
Show child attributes
Courier on the shipment
- Postal
- Courier
Show child attributes
Show child attributes
Courier tracking number
Courier tracking URL
ISO 8601 cutoff date returned by the manufacturer
ISO 8601 creation timestamp
ISO 8601 last update timestamp
ISO 8601 timestamp when submitted to the manufacturer
ISO 8601 timestamp when all cards were delivered