Get async orders status
Get an async order by external reference ID with cursor-based pagination.
Closed Release:This feature is available for a limited number of customers with a specific use case.
This endpoint in the Tango API is used to retrieve a high-level summary of an asynchronous order that was previously placed using the POST {URI}/asyncOrders endpoint. The endpoint provides a high-level summary of an async order, including: total number of line items, delivery status of each item, recipient details, delivery methods, reward types and amounts, and any associated fees or exchange rates. This endpoint does not return reward credentials, making it safe for internal systems that should not expose sensitive data.
Use the following endpoint to retrieve the order summary and view delivery status. Using this endpoint, you can ensure all line items were processed correctly.
| Endpoint | Purpose |
|---|---|
GET {URI}/asyncOrders/customers/{customerIdentifier}/ accounts/{accountIdentifier}/{externalRefID} | Get an async order by external reference ID with cursor-based pagination. |
Benefits
- Track deliveries without retrieving reward credentials.
- Address specific line items that may have failed during the order process
Use case
After placing an async order, Acme Corp would like to confirm which line items were successfully delivered, and audit who received what and how. Moreover, Acme Corp avoids exposing reward codes to internal staff or systems.
The following path parameter indicates which specific async order the request is acting upon:
| Path params | Data type | Requirement | Description |
|---|---|---|---|
| customerIdentifier | string | required | Specify the customer to be queried |
| accountIdentifier | string | required | Specify the account to be queried. |
| externalRefID | string | required | An idempotent field that can be used for your order cross-reference and to prevent accidental order duplication. This value is returned in the order response, order details, and order history. The string has a maximum of 100 alphanumeric characters. |
The following query parameters are used to filter, sort, or paginate data in your request. They are typically optional and allow you to customize the response without changing the endpoint structure:
Query params | Data type | Requirement | Description |
|---|---|---|---|
prevCursor | string | required | An idempotent field that can be used for your order cross-reference and to prevent accidental order duplication. This value is returned in the order response, order details, and order history. The string has a maximum of 100 alphanumeric characters. |
nextCursor | string | ||
maxResults | int32 | Maximum number of line items to return. The limit parameter accepts an integer between 1 and 500, with a default value of 100. For example, setting limit=32 will return up to 32 line items. | |
externalLineItemReferenceIds | array of strings | Optional | Used to identify specific line items within the order If provided, only return line items matching these IDs. Max 50 items in the array. Length: 0–100 characters per string. |
referenceLineItemIds | array of strings | Optional | Used to filter by internal reference IDs returned in previous responses.
Note: You can use either |
failedOnly | boolean | Optional | Default is false. If true, only return line items that failed. If no failed items exist, the response should return 'NONE' or 'NULL' for the lineItems array. |
The following example illustrates the payload for using this endpoint and its parameters. 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:
{
"referenceOrderID": "string",
"externalRefID": "string",
"orderStatus": "PENDING",
"createdAt": "2025-10-23T21:52:43.041Z",
"completedAt": "2025-10-23T21:52:43.041Z",
"customerIdentifier": "string",
"accountIdentifier": "string",
"sender": {
"firstName": "string",
"lastName": "string",
"email": "string"
},
"amountCharged": {
"currencyCode": "string",
"value": 0,
"total": 0
},
"campaign": "string",
"purchaseOrderNumber": "string",
"notes": "string",
"totalLineItems": 0,
"pagination": {
"prevCursor": "string",
"nextCursor": "string",
"prevPageAvailable": true,
"nextPageAvailable": true,
"maxResults": 0,
"numberOfElements": 0
},
"orderErrors": [
{
"errorCode": "string",
"errorMessage": "string"
}
],
"lineItems": [
{
"referenceLineItemId": "string",
"externalRefLineItemID": "string",
"lineItemStatus": "COMPLETE",
"deliveryStatus": "string",
"recipient": {
"firstName": "string",
"lastName": "string",
"email": "string",
"address": {
"streetLine1": "string",
"streetLine2": "string",
"city": "string",
"stateOrProvince": "string",
"country": "string",
"postalCode": "string",
"companyName": "string"
},
"mobileNumber": "string"
},
"deliveryMethod": "NONE",
"rewardName": "string",
"amount": 0,
"amountCharged": {
"value": 0,
"currencyCode": "string",
"exchangeRate": 0,
"fee": 0,
"total": 0
},
"scheduledDeliveryDate": "2025-10-23T21:52:43.041Z",
"lineItemErrors": [
{
"errorCode": "string",
"errorMessage": "string"
}
]
}
]
}The possible response codes for this endpoint are as follows. For details, see i18nkey codes and their error messages:
| Response code | Meaning |
|---|---|
| 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 refused to authorize it. |
| 404 | The server was unable to find the requested resource. In other words, the URL you're trying to access doesn't point to anything that exists on the server. |
| 422 | The server understands the request but cannot process it due to semantic errors. |
| 429 | Exceeded the allowable TPS rate limit. It indicates that the user has sent too many requests within a given time frame, and the server is rate-limiting further requests. |
| 500 | Something went wrong on the server, but the server cannot be more specific about the exact problem. |
| 503 | The server is currently unable to handle the request due to temporary overload or maintenance. |
Updated 6 days ago
