Skip to main content

Domain Offers

Accor availability allows any partner to retrieve hotel offers. Response is not paginated, nor streamed.

Version
1.55.0
Status
Coming soon
Incident
No incident

📖 Typical Use Case Scenarios

The NGA Domain Offers API supports several typical scenarios for hotel booking flows.

Scenario 1: Multi-Hotel Search (BestOffers)

Context: User searches for hotels in Paris for 2 adults, 2 nights, December 15-17

API Call:

POST /hotels/best-offers

Payload:

Click to reveal the request payload

{
  "hotelIds": ["5993", "5309", "2192", "H8189", "HB599"],
  "dateIn": [2026, 12, 15],
  "lengthOfStay": { "value": 2, "unit": "NIGHT" },
  "adults": 2,
  "childrenAges": [],
  "countryMarket": "FR",
  "currency": "EUR"
}

Result: List of hotels with best available offer, total price, cancellation policies

Scenario 2: Detailed Offer Selection (Offers)

Context: User clicks on a hotel and wants to see all available rooms

API Call:

GET /hotels/HB599/offers?dateIn=2026-12-15&lengthOfStay.value=2&lengthOfStay.unit=NIGHT&adults=2&countryMarket=FR

Result: Complete list of offers with room types, ratePlans, additional products, detailed policies, payment conditions

Scenario 3: Availability Calendar (Calendar)

Context: User browses calendar to choose flexible dates

API Call:

GET /hotels/2192/calendar/best-offers?from=2026-12-14&to=2026-12-21&lengthOfStay.value=2&lengthOfStay.unit=NIGHT&adults=2

Result: Calendar view with best available offer per check-in date over the requested period


⚙️ Common Parameters

Required Headers

The NGA Domain Offers API requires specific headers for authentication and identification.

Header Required Description
clientId Yes API client identifier (e.g., poc.free.distrib, all.accor)
Authorization Depends on client Authentication token (Bearer, Basic, etc.)
Identification-JWT Optional User identification JWT (loyalty members)
Accept-Language No Response language (fr-FR, en-US, etc.)

Stay Criteria Parameters

These parameters define the search criteria for hotel offers.

Parameter Type Description Example
dateIn Array[Integer] or String Check-in date [2026, 12, 15] or "2026-12-15"
lengthOfStay Object Stay duration with unit (NIGHT or DAY) { "value": 2, "unit": "NIGHT" }
adults Integer Number of adults 2
childrenAges Array[Integer] Children ages [5, 11, 2]
countryMarket String (ISO 2) Country market (for pricing) FR, US, GB
currency String (ISO 3) Desired currency (optional) EUR, USD, GBP
concession Object Promotional code or SNU { "unit": "SNU", "value": 1 }
groupCode String Group code for group rates FAMGROUP2

Special Use Case Parameters

The API supports specialized booking scenarios through specific parameters:

  • Day Use: Set lengthOfStay.unit = "DAY" for day reservations without overnight stay
  • Family Bookings: Provide childrenAges array for family rates (e.g., [5, 11])
  • Group Bookings: Use groupCode parameter for negotiated group rates
  • Promotional Offers: Use concession object for special offers like SNU (extra nights)
  • Upsells: Add include=UPSELLS parameter to retrieve premium upgrade offers
  • Additional Products: Use include=REMAINING_PRODUCTS to get supplements and options

⚠️ HTTP Response Codes

The NGA Domain Offers API uses conventional HTTP response codes to indicate the success or failure of requests.

Success Codes

Code Description Use Case
200 OK Success Offers found without issues
206 Partial Content Partial success Offers returned with warnings (e.g., some hotels unavailable)

Client Error Codes (4xx)

Code Description Use Case
400 Bad Request Invalid request Missing or incorrect format parameters
401 Unauthorized Not authenticated Missing or invalid token
403 Forbidden Access denied ClientId not authorized for this operation
404 Not Found Resource not found Non-existent HotelId or OfferId
429 Too Many Requests Rate limit exceeded Too many requests (DDoS protection)

Server Error Codes (5xx)

Code Description Use Case
500 Internal Server Error Server error Internal technical error
504 Gateway Timeout Provider timeout ACRS not responding within time limit

Some 4xx errors include an error code in the response body that briefly explains the error reported.


🖥️ Environments

The NGA Domain Offers API is available in multiple environments for testing and production use.

Environment URLs

Environment Base URL Usage
REC (Recette) https://api-rec.wcoff-rec.aws.accor.com Development and qualification testing
INT (Integration) https://api-int.wcoff-rec.aws.accor.com Inter-system integration testing
PRE (Pre-production) https://api-pre.wcoff-pre.aws.accor.com Final testing before production
OAT (User Acceptance) https://api-oat.wcoff-oat.aws.accor.com End-user acceptance testing
PROD (Production) https://api.wcoff.aws.accor.com Production environment

Environment-Specific Notes

  • REC: Ideal for initial development and integration testing
  • INT: Used for validating integrations between different systems
  • PRE: Mirror of production, used for final validation before go-live
  • OAT: Dedicated environment for business user acceptance testing
  • PROD: Live production environment serving real customers

Example URLs

  • REC: https://api-rec.wcoff-rec.aws.accor.com/web/offers/v1/hotels/best-offers
  • PROD: https://api.wcoff.aws.accor.com/web/offers/v1/hotels/best-offers

📊 Monitoring & Support

The NGA Domain Offers API provides comprehensive monitoring and debugging capabilities.

Actuator Endpoints

The API exposes Spring Boot Actuator endpoints for health monitoring:

  • Health Check: GET /actuator/health - Returns the application health status
  • Info: GET /actuator/info - Returns version and build information

Example:

GET https://api-rec.wcoff-rec.aws.accor.com/web/offers/v1/actuator/health

Click to reveal the response example

{
  "status": "UP",
  "components": {
    "diskSpace": { "status": "UP" },
    "ping": { "status": "UP" }
  }
}

Logs and Debugging with Splunk

All API calls are traced in Splunk with their CJID (Correlation Journey ID), enabling end-to-end request tracking across all systems.

How to use CJID for debugging:

  1. Extract the CJID from the response headers or logs
  2. Search in Splunk using: CJID="your-correlation-id"
  3. View the complete journey of the request through all systems (REST → Domain → ACRS)

Splunk environments:

  • REC: Access via Splunk REC instance
  • PROD: Access via Splunk PROD instance with appropriate permissions

Postman Collection

A complete Postman collection is available with 23 examples covering all use cases:

Collection location: docs/api/postman-collections/DOMAIN.postman_collection.json

Included examples:

  • BestOffers (night, dayuse)
  • Calendar (standard, dayuse, remaining products)
  • Offers (standard, FMLY, PMR, Thalassa, Group, SNU, OAT, PROD)
  • OfferById (standard, Thalassa, Upsells)
  • Health & Info
  • NGL Benefits (loyalty rewards)

Using the collection:

  1. Import the JSON file into Postman
  2. Configure environment variables (base URL, clientId, tokens)
  3. Run individual requests or entire collections
  4. Use examples as templates for your own integrations

Getting Support

For technical questions or support:

  • Internal teams: Contact the Offers API Team
  • External partners: Use your designated support channel
  • Documentation: Refer to the technical documentation
  • Swagger/OpenAPI: Detailed API specifications available

Rate Limiting

The API implements rate limiting to protect against overload:

  • Monitor the response headers for rate limit information
  • If you receive 429 Too Many Requests, implement exponential backoff
  • Contact support if you need higher rate limits for your use case

About us

We are far more than a worldwide leader. We are 300,000 hospitality experts placing people at the heart of what we do, and nurturing real passion for service and achievement beyond limits. We take care of millions of guests in our 5,000 addresses.