GetThere
For card issuers For travellers Contact us

For card issuers

API reference

Version 1 · Draft · Every endpoint runs in test mode today: nothing is sent to your systems until we switch your channel to live.

The short version. You build two endpoints and send one push of your own. GetThere builds everything else: the offer page, pricing, checkout, flight watching, rebooking cards, messages to the cardholder and support.

Who builds what

You build

  • The "Just booked a flight?" push. Your own push, from your own card data, after an airline charge. It links to your offer page. No call to GetThere is needed.
  • A push endpoint that receives GetThere's three messages (pass bought, card ready, card used) and shows them in your app.
  • A purchase-match endpoint optional that answers yes or no: did this cardholder pay this airline this amount?
  • Push receipts: a call back to GetThere saying which pushes reached the cardholder.

GetThere provides

  • Your offer page at https://<issuer>.getthere.now/offer, in your colours.
  • Your forwarding address quote@<issuer>.getthere.now, where cardholders send their booking.
  • The partner API at https://<issuer>.getthere.now/partner/v1: a key check, your offer link, and push receipts.
  • Every message to the cardholder: the price email, the pass confirmation, and the rebooking card on WhatsApp and by email.

The journey, call by call

One cardholder, Mia, from booking to rebooking. Each step shows who acts and which call is made.

  1. Mia→Your systems

    Mia pays an airline with your card

    Your systems see the airline charge. Nothing reaches GetThere: card data stays with you.

  2. Your app→Mia

    You send "Just booked a flight?"

    Your own push, sent when you decide (for example, airline charges on premium cards). It opens your offer page.

    Link: https://<issuer>.getthere.now/offer · you send it

  3. Mia→GetThere

    Mia forwards her booking email

    She forwards the airline's confirmation to quote@<issuer>.getthere.now. GetThere reads every flight and traveller on it.

  4. GetThere→Your APIoptional

    GetThere checks the charge with you

    When the booking email shows the airfare, GetThere asks within seconds whether Mia paid that airline that amount. You answer yes or no.

    POST <your API>/v1/getthere/purchase-match · you build it

  5. GetThere→Mia

    Mia gets a price and buys a pass

    GetThere emails her a price within a minute. She pays at checkout on <issuer>.getthere.now.

  6. GetThere→Your push endpoint→Mia

    Push 1: pass bought

    The moment she pays, GetThere calls your push endpoint and your app confirms the purchase.

    POST <your push URL> with "kind": "pass_purchased" · you build it

  7. GetThere→Your push endpoint→Mia

    Push 2: her flight is late, her card is ready

    When her flight is 3+ hours late or cancelled, GetThere sends the card to Mia on WhatsApp and by email, and calls your push endpoint so your app alerts her too.

    POST <your push URL> with "kind": "card_issued" · you build it

  8. GetThere→Your push endpoint→Mia

    Push 3: she has rebooked

    When Mia uses the card for a new flight, GetThere calls your push endpoint and your app thanks her.

    POST <your push URL> with "kind": "card_used" · you build it

  9. Your systems→GetThere

    You report which pushes arrived

    Whenever you have them, in batches, you tell GetThere which pushes were delivered, and which cardholders turned GetThere pushes off.

    POST /partner/v1/push-receipts · GetThere provides it

Every call at a glance

WhenWho callsEndpointWho builds it
While you set upYou → GetThereGET /partner/v1/pingGetThere
Optional, at setupYou → GetThereGET /partner/v1/offerGetThere
After an airline chargeYour app → cardholderhttps://<issuer>.getthere.now/offer (a link)GetThere hosts the page
A booking is forwardedGetThere → youPOST <your API>/v1/getthere/purchase-matchYou (optional)
Pass bought, card ready, card usedGetThere → youPOST <your push URL>You
After you deliver pushesYou → GetTherePOST /partner/v1/push-receiptsGetThere

Your channel

Each card issuer is its own channel with a short handle, <issuer>. The handle gives you your own addresses, all in your colours:

  • Pages: https://<issuer>.getthere.now (offer, checkout, pass and card pages)
  • Booking forwarding address: quote@<issuer>.getthere.now
  • API base URL: https://<issuer>.getthere.now/partner/v1

Authentication

You calling GetThere. Every channel has its own API key. Send it on every call:

Authorization: Bearer <your channel's API key>

The key identifies your channel, so you only ever see your own data. A missing or wrong key gets 401 {"detail": "invalid partner key"}. We issue keys by email for now and rotate them on request; a self-serve page for keys comes later.

GetThere calling you. You give us a token for your API, and we send it the same way, as Authorization: Bearer <token>. We can add mutual TLS if you need it. Calls are JSON over HTTPS.

You call GetThere · GetThere builds these

LINK

https://<issuer>.getthere.now/offer

Who: your app links to it · When: in your "Just booked a flight?" push · Built by: GetThere

The page your "Just booked a flight?" push opens. It explains the Flight Delay Pass and shows the cardholder where to forward their booking email. No key needed: it's a public page. You decide when to send this push, for example after an airline charge on a premium card.

GET

/partner/v1/ping

Who: you call GetThere · When: while you set up, to test your key · Built by: GetThere

Checks your key and connection.

200 {"ok": true, "channel": "<issuer>", "mode": "stub"}

mode is stub while GetThere runs in test mode and live after.

GET

/partner/v1/offer

Who: you call GetThere · When: optional, once at setup or before each push · Built by: GetThere

The offer link and forwarding address for your channel, if you'd rather not hard-code them.

200 {"offer_url": "https://<issuer>.getthere.now/offer",
     "forward_to": "quote@<issuer>.getthere.now",
     "product_name": "GetThere"}
POST

/partner/v1/push-receipts

Who: you call GetThere · When: after you deliver GetThere's pushes, in batches · Built by: GetThere

Tells us what happened to the pushes we asked you to show. Send receipts in batches, whenever you have them.

{"receipts": [
  {"push_id": "5b1f…", "status": "delivered", "at": "2026-11-20T07:41:05Z"},
  {"push_id": "9c2e…", "status": "opted_out"}
]}
FieldMeaning
push_idThe push_id we sent you with the push
statusdelivered, not_delivered or opted_out. opted_out stops all further pushes to that cardholder.
atOptional, ISO 8601. Defaults to when we receive it.
200 {"results": [{"push_id": "5b1f…", "result": "ok"},
                 {"push_id": "9c2e…", "result": "ok"}]}

Each result is ok, bad_status or unknown_push (not one of your channel's pushes). A body without a receipts list gets 422.

GetThere calls you · you build these

POST

<your push URL>

Who: GetThere calls you · When: a pass is bought, a card is ready, a card is used · Built by: you

Shows a GetThere message as a push in your app. You give us one URL. We call it when a pass is bought, when a rebooking card is ready and after the cardholder rebooks. Pushes are alerts only: the card itself always goes to the cardholder on WhatsApp and by email.

Idempotency-Key: 5b1f…

{"push_id": "5b1f…",
 "customer": {"email": "mia@example.com"},
 "kind": "card_issued",
 "title": "Your flight is 3h 50m late. Your rebooking card, preloaded with A$2,325, is ready.",
 "body": "GetThere has sent it to you on WhatsApp and by email.",
 "link": null}
FieldMeaning
push_idUnique per push. It's also the Idempotency-Key header, so a retry never shows twice.
customer.emailThe email your cardholder forwarded their booking from. Match it to your customer.
kindpass_purchased, card_issued or card_used
title, bodyReady to show. We agree the wording for your channel with you before launch.
linkOptional page to open, or null

Reply when you've accepted the push. Report delivery later to /partner/v1/push-receipts.

202 {"accepted": true, "reference": "<your id for the push>"}
POST

<your API>/v1/getthere/purchase-match

Who: GetThere calls you · When: each time a cardholder forwards a booking that shows its airfare · Built by: you (optional)

Optional. When a cardholder forwards a booking, we ask whether you saw a matching airline charge on their card. A match confirms the booking is real and its airfare is right, so we can offer a pass even when the airfare looks unusually high for the route. We send only what's needed to match, and you answer yes or no: no transaction data comes back.

{"email": "mia@example.com",
 "airline": "QF",
 "amount": "1550.00",
 "currency": "AUD",
 "booked_after": "2025-10-09T00:00:00Z"}
200 {"match": true}
  • Answer true if a charge from that airline, within 1% of amount, was made on or after booked_after on a card held by the customer with that email.
  • A customer you can't find by email is false.
  • We wait up to 5 seconds. A timeout or error doesn't block the cardholder: the booking simply goes through our other checks.

Test mode

Until we switch your channel to live, every endpoint above works against test data. Calls to GetThere answer normally, and nothing is sent to your push URL or purchase-match API. Ask us for a test key at partner@getthere.now.

GetThere

Don't miss a single moment of your trip.

Card issuersThe productThe numbersAPI reference
Contactpartner@getthere.now
Terms · Privacy
© 2026 GetThere.