Create multiple weather insurance quotes in a single batch request (maximum 3 quotes). Each quote is processed independently — partial failures are possible.
Useful when a customer is booking multiple camping sites or experiences and wants insurance for each.
Member discount. For a partner that runs a membership program, the membership check runs once per request, not once per quote. The discount applies only to the quotes whose customer carries the member number (customer.memberNumber, or customer.partnerCustomerId): each of those successful quotes carries the same membership block (same tier, or the same reason), with amounts for its own price. A quote without a member number is not a member quote: it is priced at full price and has no membership block, even when another quote in the request carries a number. If quotes carry different member numbers the whole request is rejected with 400 VALIDATION_ERROR (details.field customer.memberNumber, details.reason conflicting_member_numbers). A check that fails never causes an error: every quote is returned at full price.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Multi-Quote Workflow
flowchart TB
A["POST /quotes/multi<br/>Submit 1-3 quotes"] --> B["Parallel Processing<br/>30s timeout per quote"]
B --> C{"Results"}
C -->|"All succeed"| D["multi_id + all quotes"]
C -->|"Partial success"| E["multi_id + mixed results<br/>Check summary.failed"]
C -->|"All fail"| F["multi_id + all errors"]
D --> G["GET /quotes/multi/{id}<br/>Review before purchase"]
E --> G
G --> H["POST /quotes/multi/{id}/purchase<br/>Atomic: all-or-nothing"]
H --> I["Multiple policies created"]
style A fill:#e3f2fd
style D fill:#e8f5e9
style E fill:#fff3e0
style F fill:#fce4ec
style I fill:#e8f5e9
What This Endpoint Does
- Batch Processing: Accepts 1-3 quote requests in a single call
- Parallel Execution: Processes all quotes concurrently for speed
- Independent Results: Each quote succeeds or fails independently
- Atomic Purchase: Successful quotes can be purchased together later
When to Use This Endpoint
Call this endpoint when:
- Customer is booking multiple nights that need separate coverage
- You need quotes for different locations simultaneously
- You want to compare coverage for different amounts
- Processing multiple bookings in a batch
Request Structure
Each quote in the quotes[] array follows the standard quote format:
| Field | Required | Description |
|---|---|---|
| productName | Yes | Name of the product being insured |
| experienceDetails.name | Yes | Name of the experience/event |
| experienceDetails.type | Yes | Type: camping, hiking, event, sports, experience, accommodation |
| experienceDetails.location | Yes | Suburb, state, country, coordinates |
| coverage.startDate | Yes | Coverage start (YYYY-MM-DD) |
| coverage.endDate | Yes | Coverage end (YYYY-MM-DD) |
| coverage.exposureAmount | Yes | Total value to protect |
| options.partnerQuoteId | No | Your internal reference |
Understanding the Response
multi_quote object contains:
| Field | Description |
|---|---|
| multi_id | UUID to reference this batch for purchase |
| created_at | Batch creation timestamp |
| quotes[] | Array of individual results |
| summary | Success/failure counts |
quotes[] - each item has either success or failure structure:
Success:
| Field | Description |
|---|---|
| request_index | Position in original request (0-based) |
| status | "success" |
| quote | Full quote response with pricing_options |
Failure:
| Field | Description |
|---|---|
| request_index | Position in original request (0-based) |
| status | "failed" |
| error.code | Error code |
| error.message | Error description |
summary object:
| Field | Description |
|---|---|
| total_requested | Number of quotes submitted |
| successful | Number that generated pricing |
| failed | Number that encountered errors |
Partial Success Handling
Unlike single-quote creation, this endpoint allows partial success:
- Some quotes may succeed while others fail
- Check
summary.failedto see if any quotes had issues - Review each
quotes[].statusto identify failures - Failed quotes show error details for debugging
- Successful quotes can still be purchased
Error Handling
Batch-level errors (400):
| Error | Description |
|---|---|
| VALIDATION_ERROR | Invalid request structure |
| MAX_QUOTES_EXCEEDED | More than 3 quotes submitted |
| NO_QUOTES | Empty quotes array |
Individual quote errors (in quotes[].error):
| Error | Description |
|---|---|
| INVALID_DATE_RANGE | Start/end date issues |
| LOCATION_NOT_SUPPORTED | No weather station coverage |
| EXPOSURE_LIMIT_EXCEEDED | Amount outside allowed range |
| TIMEOUT | Quote processing exceeded 30 seconds |
Best Practices
- Check summary first: Use
summary.failedto quickly detect issues - Map by request_index: Results maintain order via request_index
- Handle partial success: Decide whether to proceed with successful quotes only
- Use partner_quote_id: Link each quote to your booking for tracking
- Store multi_id: Required for batch purchase
Next Steps
After creating a multi-quote:
- Review
summaryto confirm success count - Extract quote_ids from successful
pricing_options - Display options to customer (can mix options from different quotes)
- Use
POST /quotes/multi/{multiId}/purchaseto purchase selected quotes - Store multi_id and selected quote_ids for the transaction
