Create Offer
Sending a Quote Request
The Create Offer endpoint generates personalized product offerings based on partner business context and customer information. This endpoint uses a schema-driven approach to validate requests and returns one or more products with detailed pricing, policy information, and content for display to customers.
For the full request/response schema, query parameters, and field definitions, see the Create Offer API Specification.
What You Get in the Response
The response from the Create Offer endpoint includes:
Offer ID - Unique identifier (UUID) for the offer that can be used to confirm the purchase or opt out.
Session ID - Unique session identifier associated with this offer.
Offer Config ID - The Offer configuration used to generate this Offer. Can be used in subsequent requests to exclude previously shown offers.
Currency - The currency code for all pricing.
Products - List of available products with their configurations. For each product:
Quote ID - Used for booking confirmation via the Confirm Offer endpoint
Product Type (e.g.,
xcover-product)Finance Information - Price breakdown including total, tax, surcharge, and commission (each with formatted display values)
Policy Dates (start and end dates)
Policy Disclosure Statement (PDS) URL
Attached Files (documents related to the product)
Extra Fields and Experiment data (when requested)
Benefits from the pricing engine
Product Rules - Selection rules controlling how products behave in the UI (visibility, required/optional, interactions between products). Only present when rules are configured for the offer.
Content - Localized display content including:
Offer-level: title, description, terms URL
Per-product: title, description, benefits, inclusions, exclusions, extras, disclaimers
Metadata - Additional response metadata such as experiment data. Only present when applicable.
Errors - Empty on success.
Making a Create Offers Request
The request structure is defined by your partner's Offer Schema, which validates all incoming data using JSON Schema Draft 7. Every request typically includes:
schema - Schema identifier for the Offer type. If omitted, the default schema for the partner will be used. If the partner does not have a default schema, omitting this field will return a validation error.
customer - Customer information (language, currency, country, and optional fields like email, IP address, region, postcode)
context - Business context data required for offer selection and pricing (product-specific fields defined by your schema)
partner (optional) - Partner-specific information such as subsidiary, transaction ID, customer ID, and metadata (including an optional
metadata.session_id).
For the complete field definitions, required vs. optional fields, and query parameters, see the Create Offer API Specification.
Response Status Codes
200 OK
Offer successfully created with available products
400 Bad Request
Malformed or unparseable request body
401 Unauthorized
Missing or invalid API key
403 Forbidden
Access denied
404 Not Found
Partner not found, no offers exist, no offers match the request context, or no offers pass access control
422 Unprocessable Entity
Request validation failed, all quotes failed to generate, or expression evaluation errors
429 Too Many Requests
Rate limit exceeded
500 Internal Server Error
Unexpected server error
Error Responses
Create Offer supports the opt-in X-API-Error-Version: v2 header, which returns every error response from this endpoint in one consistent shape. We recommend all new integrations send it.
On a 422 where no quote could be generated, for example, the body carries the code offer_quote_generation_failed and one entry per failed product:
The header applies to all of the non-2xx statuses in the table above. See Error Versioning for the full field reference and error code list.
Important Notes
The
idfield in each product is the quote ID that must be used when confirming the offer via the Confirm Offer endpoint.Performance Tip: For optimal performance and dynamic pricing, always request fresh offers rather than caching offer responses. Server-side configuration is cached for 5 minutes, so very recent config changes may not be reflected immediately.
Schema Validation: All requests are validated against your partner's Offer Schema. Contact your integration team to understand your specific schema requirements.
Exclude Offers: Use the
exclude_offer_idsquery parameter to request a different offer later in a customer journey by excluding a previously shown offer using theoffer_config_idreturned in the response.
Next Steps
After receiving an Offer response:
Display the product information and pricing to your customer
Present the content (benefits, inclusions, exclusions, disclaimers)
When the customer decides to purchase, use the Confirm Offer endpoint with:
The offer
idfrom the responseThe quote
id(from each product) of the selected product(s)Policyholder details (first name, last name, country)
If the customer declines, use the Opt-Out endpoint with the offer
idfor conversion tracking
Last updated
Was this helpful?

