| HTTP Status | Code | Meaning | Action |
|-------------|------|---------|--------|
| 400 | INVALID_PAX_DOB | Date of birth format invalid | Use YYYY-MM-DD |
| 401 | TOKEN_EXPIRED | Access token expired | Re-authenticate |
| 429 | RATE_LIMITED | Too many requests | Implement exponential backoff |
| 500 | AIRLINE_TIMEOUT | Airline NDC gateway unreachable | Retry with idempotency key |
Idempotency keys are mandatory for all mutation endpoints (/ndc/order, /ndc/payment). Send an Idempotency-Key: <UUID> header to prevent duplicate bookings.
Enable audit.logging=true in the configuration. The guide explains how to export raw NDC XML/JSON requests and responses sent to the airline’s endpoint. This is critical for airline dispute resolution. aptra advance ndc developer-s guide
Access Logs: GET /v1/admin/audit?transactionId=abc123
The Aptra Advance NDC Developer’s Guide provides a standard error catalog. All errors follow RFC 7807 (Problem Details): | HTTP Status | Code | Meaning |
"type": "https://api.aptra-advance.com/errors/offer-expired",
"title": "Offer Expired",
"status": 409,
"detail": "Offer OFF-JFK-LHR-001 cannot be booked after its TTL of 240 seconds.",
"instance": "/ndc/order",
"retryAfter": 0
If you are self-hosting APTRA Advance (on-prem or private cloud), follow the installation checklist from Chapter 3 of the guide:
# Sample Docker run command from the guide
docker run -d \
--name aptra-advance-ndc \
-p 8080:8080 \
-e NDC_AGGREGATOR_TYPE=DUFFEL \
-e DUFFEL_API_KEY=sk_test_xxxx \
-e LOG_LEVEL=DEBUG \
ncr/aptra-advance:ndc-latest
For cloud-hosted (SaaS), you only need to configure API keys via the Admin Console. Enable audit
APTRA Advance can run in Hybrid Mode, sending shopping requests to both NDC and EDIFACT (ATPCO) and comparing results. This helps identify pricing discrepancies during transition.
Enable via: features.hybridMode=true
Endpoint: POST /v1/ndc/offer-price
Many developers skip this step, leading to booking failures. The guide insists that for dynamic pricing airlines (e.g., Delta, Lufthansa), you must call OfferPrice before OrderCreate.