Create Multi-Quote

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.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

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

  1. Batch Processing: Accepts 1-3 quote requests in a single call
  2. Parallel Execution: Processes all quotes concurrently for speed
  3. Independent Results: Each quote succeeds or fails independently
  4. 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:

FieldRequiredDescription
productNameYesName of the product being insured
experienceDetails.nameYesName of the experience/event
experienceDetails.typeYesType: camping, hiking, event, sports, experience, accommodation
experienceDetails.locationYesSuburb, state, country, coordinates
coverage.startDateYesCoverage start (YYYY-MM-DD)
coverage.endDateYesCoverage end (YYYY-MM-DD)
coverage.exposureAmountYesTotal value to protect
options.partnerQuoteIdNoYour internal reference

Understanding the Response

multi_quote object contains:

FieldDescription
multi_idUUID to reference this batch for purchase
created_atBatch creation timestamp
quotes[]Array of individual results
summarySuccess/failure counts

quotes[] - each item has either success or failure structure:

Success:

FieldDescription
request_indexPosition in original request (0-based)
status"success"
quoteFull quote response with pricing_options

Failure:

FieldDescription
request_indexPosition in original request (0-based)
status"failed"
error.codeError code
error.messageError description

summary object:

FieldDescription
total_requestedNumber of quotes submitted
successfulNumber that generated pricing
failedNumber that encountered errors

Partial Success Handling

Unlike single-quote creation, this endpoint allows partial success:

  • Some quotes may succeed while others fail
  • Check summary.failed to see if any quotes had issues
  • Review each quotes[].status to identify failures
  • Failed quotes show error details for debugging
  • Successful quotes can still be purchased

Error Handling

Batch-level errors (400):

ErrorDescription
VALIDATION_ERRORInvalid request structure
MAX_QUOTES_EXCEEDEDMore than 3 quotes submitted
NO_QUOTESEmpty quotes array

Individual quote errors (in quotes[].error):

ErrorDescription
INVALID_DATE_RANGEStart/end date issues
LOCATION_NOT_SUPPORTEDNo weather station coverage
EXPOSURE_LIMIT_EXCEEDEDAmount outside allowed range
TIMEOUTQuote processing exceeded 30 seconds

Best Practices

  1. Check summary first: Use summary.failed to quickly detect issues
  2. Map by request_index: Results maintain order via request_index
  3. Handle partial success: Decide whether to proceed with successful quotes only
  4. Use partner_quote_id: Link each quote to your booking for tracking
  5. Store multi_id: Required for batch purchase

Next Steps

After creating a multi-quote:

  1. Review summary to confirm success count
  2. Extract quote_ids from successful pricing_options
  3. Display options to customer (can mix options from different quotes)
  4. Use POST /quotes/multi/{multiId}/purchase to purchase selected quotes
  5. Store multi_id and selected quote_ids for the transaction
Body Params
quotes
array of objects
required
length between 1 and 3

Array of quote requests (1–3 items)

quotes*
string
enum
Defaults to weather

Policy type. This endpoint only supports weather. For annual products, use POST /wholesale/quotes.

Allowed:
string
required
length ≥ 1

Name of the product being insured

experienceDetails
object
required
coverage
object
required

Coverage period and amount

customer
object

Customer details. At purchase time, email, firstName, and phone are required unless they were already captured at quote time. lastName is optional.

options
object
onBehalfOf
object

Network provider / distributor tracking. Used when a partner creates quotes on behalf of a sub-distributor.

metadata
object

Optional metadata for the multi-quote batch

Headers
string

Idempotency key for safe retries. Send the same key and the same body when retrying. If a request with this key already completed within the TTL window (7 days for financial operations), the original response is returned with X-Idempotent-Replayed: true and nothing is re-executed. While the first request is still processing, a retry gets 409 CONFLICT_ERROR (details.reason = request_in_progress, Retry-After: 1). Reusing a key with a different body gets 422 VALIDATION_ERROR (details.reason = idempotency_key_reused). 5xx responses are not stored, so a retry after one executes again.

Responses

Language
Credentials
Bearer
API Key
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json