Technical reference for travel insurance providers integrating real-time quote APIs with Compare Travel Insurance New Zealand. Use this guide alongside your provider dashboard to go live on the comparison platform.
Compare Travel Insurance (CTI) aggregates quotes from participating insurers and displays them in a single comparison flow. When a traveller requests quotes, CTI forwards a QuoteRequestV2 payload to each enabled provider API and streams results back to the browser as they arrive.
You implement a REST endpoint that accepts trip details and returns priced products. CTI provides the comparison website, quote orchestration, provider portal, outbound click tracking, and review management tools.
Architecture
Each role in the integration and what it is responsible for.
Role
Responsibility
Your API
Accept QuoteRequestV2 and return QuoteResponseV2 with one or more priced products
Collect trip details, display comparison results, redirect travellers to your purchase flow
Integration checklist
Production site: https://www.comparetravelinsurance.co.nz. All CTI platform paths below are relative to this host (e.g. /api/v1/quote/stream).
1Create a provider account and complete your company profile.
2Implement the Partner Quote API v2 (POST /v2/quotes) on your infrastructure.
3In the provider dashboard API integration tab, enter your endpoint URL and bearer token.
4Run Test integration in the dashboard to verify connectivity.
5Contact CTI to enable your provider for production quote traffic.
POST
/v2/quotes
This is the API you must implement. CTI calls the URL configured in your provider dashboard whenever a consumer requests quotes. Configure the full URL including path — CTI posts to exactly the URL you supply.
Body
application/json
quoteTransactionId required
string · example: Q-CTI-2026-00142
Unique identifier for the quote transaction. Include in logs and hand-off URLs.
policyType required
string · enum: SINGLE, ANNUAL
Whether the traveller is requesting a single trip or annual multi-trip policy.
travellerAges required
integer[] · example: [35, 32]
Ages of adult travellers at the start of the trip.
CTI skips providers that error or time out; other insurers still appear in the comparison.
Status
When
400
Validation failure — return status, error, message, and validationErrors[] with field-level issue messages
401
Invalid or missing bearer token
500
Unexpected server error — include a safe message for logging
Quote streaming
Used by the comparison website. Request body is the same QuoteRequestV2 JSON sent to your API.
Method
Path
Description
POST
/api/v1/quote
Stream quotes as Server-Sent Events (WebFlux JSON stream)
POST
/api/v1/quote/stream
Stream quotes as SSE (text/event-stream)
Outbound click tracking
When outbound tracking is enabled, CTI replaces your handOffUrl with a tracked redirect: GET /api/v1/outbound/{linkId} returns 302 to your original URL. Clicks are recorded for reporting.
Always return a valid handOffUrl in quote responses; CTI handles the rewrite in production.
Provider authentication
Authenticate with Authorization: Bearer {accessToken} or the cti HTTP-only session cookie.
Method
Path
Description
POST
/api/auth/provider/signup
Register a new provider account
POST
/api/auth/provider/login
Login — returns JWT accessToken and sets cti cookie
GET
/api/auth/me
Current user profile (requires auth)
Partner portal API
Requires provider JWT. Base path: /api/v1/partner
Method
Path
Description
GET
/details
Your provider profile
PUT
/details
Update company details, logo, PDS link, API endpoint
Benefit comparison table for selected brand/plan pairs
Performance expectations
1Target under 5 seconds per provider response where possible; the UI streams results as they arrive.
2Support concurrent requests — CTI fans out to all enabled providers in parallel.
3Use quoteTransactionId in your logs to correlate CTI requests with your pricing engine.
4Return JSON only with Content-Type: application/json.
OpenAPI specification
The canonical Partner Quote API is available on request as a YAML or JSON file. Please contact us directly if you would like a copy
Frequently asked questions
Do we need to implement exactly /v2/quotes?
The path is flexible — CTI posts to the full URL you configure in the provider dashboard. /v2/quotes is the convention in our OpenAPI spec, but your endpoint may use a different path if it accepts the same JSON shapes.
Should premiums be in dollars or cents?
Use dollars with decimal places (e.g. 189.50). New v2 integrations should use dollar amounts unless CTI advises otherwise during onboarding.
What date format should we use?
Use dd/MM/yyyy for dates nested under singleJourneyDetails or annualMultiTripDetails (e.g. 21/01/2026).
What happens if our API is slow or returns an error?
CTI streams quotes from other providers as they arrive. Your products will not appear for that comparison if your API errors or times out.
How is the handOffUrl used?
When a consumer selects your quote they are sent to handOffUrl to complete purchase. In production CTI may wrap this with /api/v1/outbound/{id} for click attribution.
How do we test before going live?
Sign in to the provider dashboard, open API integration, enter your staging endpoint and token, and run Test integration.
Ready to integrate?
Create a provider account, implement the Partner Quote API v2, and configure your endpoint in the dashboard.