Get a list of async orders
Get a list of Async Orders placed under this Platform.
Closed Release:
This feature is available for a limited number of customers with specific use cases only.
This endpoint allows you to retrieve a list of asynchronous orders placed under your platform. You can track, audit, and manage your reward program by reviewing your previously placed async orders using the Tango API. These orders are processed in the background (non-blocking) and are multiple line items that may complete at different times.
Use the following endpoint to retrieve a list of all reward async orders placed under your platform:
| Endpoint | Purpose |
|---|---|
GET {URI}/asyncOrders | Get a list of async orders placed under this platform. |
Benefits
- Tracks and audit all async orders across your platform.
- Filters and searches for specific orders using query parameters, such as date, status, and externalRefID.
Use case
Acme Health runs a monthly wellness incentive program where employees who complete health challenges receive digital rewards. The program needs to handle multiple reward distributions, support various delivery methods, track order status and delivery, and enable follow-up actions such as resends. Acme uses this endpoint to be able to:
- Send hundreds of rewards in one async order.
- Support multiple delivery channels.
- Gain full visibility into order and line item status.
- Integrate with Acme’s internal wellness tracking system.
Here is a list of query parameters offered with this endpoint to better filter your search results:
Query params | Data type | Description |
|---|---|---|
accountIdentifier | string | Specify the account to be queried. The string must have 5-100 characters. |
customerIdentifier | string | Specify the customer to be queried. The string must have 5-100 characters. |
externalRefID | string | Specify the external reference ID to be queried. The string may have up to 100 alphanumeric characters. |
startDate | string | Specify the starting date or date time to be queried according to RFC 3339, i.e. "2016-01-01" or "2016-01-01T00:00:00Z". See https://www.ietf.org/rfc/rfc3339.txt |
endDate | string | Specify the ending date or date time to be queried according to RFC 3339, i.e. "2016-01-01" or "2016-01-01T00:00:00Z". See https://www.ietf.org/rfc/rfc3339.txt |
maxResults | int32 | Specify the number of maxResults per page. |
page | int32 | Specify the page number to return. |
minAmount | double | Specify the minimum face value of the reward to be queried. 👍 **Best practice:**When you are searching for an amount, we recommend you to enter a minimum and a maximum amount for the search. |
maxAmount | double | Specify the maximum face value of the reward to be queried. 👍 **Best practice:**When you are searching for an amount, we recommend you to enter a minimum and a maximum amount for the search. |
currencyCode | string | Specify the currency code of the reward to be queried. The string must be three characters. We accept AUD, CAD, EUR, GBP, or USD. Only one currency can be specified. Currency can never be changed. The currency defaults to USD if no currency is specified. |
utid | string | Specify the unique identifier of the reward to be queried. For example: UTID=U1234 has the attributes= (NONE, EMAIL, PHONE, and EMBEDDED). |
ptid | string | Specify the unique identifier of the physical delivery template to be queried. PTID is required for orders where the UTID is Reward Type = Reward Link, Fulfillment Type = Physical. |
rewardName | string | Specify the reward name of the reward to be queried. |
senderFirstName | string | Specify the sender's first name to be queried. This information is for tracking purposes only and doesn’t change the email address the reward is sent from when |
senderLastName | string | Specify the sender's last name to be queried. This information is for tracking purposes only and doesn’t change the email address the reward is sent from when |
senderEmail | string | Specify the sender email address to be queried. This information is for tracking purposes only and doesn’t change the email address the reward is sent from when |
recipientEmail | string | Specify the recipient’s email address to be queried. |
recipientMobileNumber | string | Specify the recipient mobile number to be queried. The
|
recipientFirstName | string | Specify the recipient’s first name to be queried.
The |
recipientLastName | string | Specify the recipient’s last name to be queried.
The |
deliveryMethod | string | Specify the delivery method for an order to determine how a reward is sent to a recipient. |
status | string | Specify the status to be queried: COMPLETE -PENDING -FAILED -CANCELLED -PARTIAL |
orderStatus | string | Specify the status to be queried. See order status. -COMPLETE -PENDING -FAILED -CANCELLED -PARTIAL |
lineItemStatus | string | Specify the status to be queried. See line item status . -COMPLETE -PENDING -FAILED -CANCELLED |
campaign | string | Specify the campaign to be queried. The maximum length is 1024 characters, including the special characters such as @, #, %, etc. |
notes | string | Specify the notes to be queried. The string may have up to 150 characters. |
lineItemNotes | string | Specify the notes to be queried. |
purchaseOrderNumber | string | specify the |
prevCursor | string | |
nextCursor | string |
The following example shows the payload including pagination when you use GET {URI}/asyncOrders. The return payload shows the total amount charged at the order level, making it easier to determine the total amount charged without summing the paginated line items. See totalAmountCharged in the payload example:
{
"prevCursor": "string",
"nextCursor": "string",
"prevPageAvailable": true,
"nextPageAvailable": true,
"maxResults": 0,
"orders": [
{
"createdAt": "2025-10-23T21:52:43.041Z",
"referenceOrderID": "string",
"externalRefID": "string",
"customerIdentifier": "string",
"accountIdentifier": "string",
"accountNumber": "string",
"sender": {
"firstName": "string",
"lastName": "string",
"email": "string",
"address": {
"streetLine1": "string",
"streetLine2": "string",
"city": "string",
"stateOrProvince": "string",
"country": "string",
"postalCode": "string",
"companyName": "string"
},
"mobileNumber": "string"
},
"campaign": "string",
"purchaseOrderNumber": "string",
"notes": "string",
"fulfillBy": "2025-10-23T21:52:43.041Z",
"orderStatus": "string",
"totalLineItemsRows": 0,
"amountCharged": {
"currencyCode": "string",
"value": 0,
"total": 0
}
}
]
}Here's an example payload for when you receive a 400 error message:
{
"timestamp": "2025-10-23T21:52:43.041Z",
"requestId": "string",
"path": "string",
"httpCode": 0,
"httpPhrase": "string",
"i18nKey": "string",
"message": "The error message will show here for error codes ",
"errors": [
{}
]
}The possible response codes for this endpoint are as follows. For details, see i18nkey codes and their error messages:
| Response | Description |
|---|---|
| 200 | The request was successful. |
| 400 | The server could not understand the request due to invalid syntax. |
| 401 | Authentication is required and has either not been provided or failed. |
| 403 | The server understood the request but refuses to authorize it. |
| 500 | Something went wrong on the server, but the server cannot be more specific about the exact problem. |
Updated 6 days ago
