For card issuers
You build
GetThere provides
https://<issuer>.getthere.now/offer, in your colours.quote@<issuer>.getthere.now, where cardholders send their booking.https://<issuer>.getthere.now/partner/v1: a key check,
your offer link, and push receipts.One cardholder, Mia, from booking to rebooking. Each step shows who acts and which call is made.
Your systems see the airline charge. Nothing reaches GetThere: card data stays with you.
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
She forwards the airline's confirmation to quote@<issuer>.getthere.now. GetThere reads every flight and traveller on it.
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
GetThere emails her a price within a minute. She pays at checkout on <issuer>.getthere.now.
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
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
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
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
| When | Who calls | Endpoint | Who builds it |
|---|---|---|---|
| While you set up | You → GetThere | GET /partner/v1/ping | GetThere |
| Optional, at setup | You → GetThere | GET /partner/v1/offer | GetThere |
| After an airline charge | Your app → cardholder | https://<issuer>.getthere.now/offer (a link) | GetThere hosts the page |
| A booking is forwarded | GetThere → you | POST <your API>/v1/getthere/purchase-match | You (optional) |
| Pass bought, card ready, card used | GetThere → you | POST <your push URL> | You |
| After you deliver pushes | You → GetThere | POST /partner/v1/push-receipts | GetThere |
Each card issuer is its own channel with a short handle, <issuer>. The handle gives you your
own addresses, all in your colours:
https://<issuer>.getthere.now (offer, checkout, pass and card pages)quote@<issuer>.getthere.nowhttps://<issuer>.getthere.now/partner/v1You 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
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.
Checks your key and connection.
200 {"ok": true, "channel": "<issuer>", "mode": "stub"}
mode is stub while GetThere runs in test mode and live after.
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"}
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"}
]}
| Field | Meaning |
|---|---|
push_id | The push_id we sent you with the push |
status | delivered, not_delivered or opted_out. opted_out stops all further pushes to that cardholder. |
at | Optional, 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
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}
| Field | Meaning |
|---|---|
push_id | Unique per push. It's also the Idempotency-Key header, so a retry never shows twice. |
customer.email | The email your cardholder forwarded their booking from. Match it to your customer. |
kind | pass_purchased, card_issued or card_used |
title, body | Ready to show. We agree the wording for your channel with you before launch. |
link | Optional 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>"}
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}
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.false.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.