Get card
curl --request GET \
--url https://tapcoupon.at/api/v1/cards \
--header 'Authorization: Bearer <token>' \
--header 'X-Device-ID: <x-device-id>'import requests
url = "https://tapcoupon.at/api/v1/cards"
headers = {
"X-Device-ID": "<x-device-id>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Device-ID': '<x-device-id>', Authorization: 'Bearer <token>'}
};
fetch('https://tapcoupon.at/api/v1/cards', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://tapcoupon.at/api/v1/cards",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-Device-ID: <x-device-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://tapcoupon.at/api/v1/cards"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Device-ID", "<x-device-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://tapcoupon.at/api/v1/cards")
.header("X-Device-ID", "<x-device-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tapcoupon.at/api/v1/cards")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Device-ID"] = '<x-device-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"cardId": "9866191586296",
"cardType": "loyaltyCard",
"activated": true,
"lifetime": 0,
"scansNeeded": 5,
"currentScans": 1,
"rewardMessage": "You earned a free coffee!",
"amountRenews": 1,
"unlimitedRenews": false
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}Cards
Get card
Retrieve the newest unarchived card instance for your API key’s account.
GET
/
cards
Get card
curl --request GET \
--url https://tapcoupon.at/api/v1/cards \
--header 'Authorization: Bearer <token>' \
--header 'X-Device-ID: <x-device-id>'import requests
url = "https://tapcoupon.at/api/v1/cards"
headers = {
"X-Device-ID": "<x-device-id>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Device-ID': '<x-device-id>', Authorization: 'Bearer <token>'}
};
fetch('https://tapcoupon.at/api/v1/cards', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://tapcoupon.at/api/v1/cards",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-Device-ID: <x-device-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://tapcoupon.at/api/v1/cards"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Device-ID", "<x-device-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://tapcoupon.at/api/v1/cards")
.header("X-Device-ID", "<x-device-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tapcoupon.at/api/v1/cards")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Device-ID"] = '<x-device-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"cardId": "9866191586296",
"cardType": "loyaltyCard",
"activated": true,
"lifetime": 0,
"scansNeeded": 5,
"currentScans": 1,
"rewardMessage": "You earned a free coffee!",
"amountRenews": 1,
"unlimitedRenews": false
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}GET /cards
Retrieve the newest unarchived card instance for your API key’s account.
Send Authorization: Bearer YOUR_API_KEY and X-Device-ID: YOUR_DEVICE_ID. See authentication.
cardId and timestamp are required query parameters. Send an ISO 8601 timestamp; the current handler checks that it is present.
cardType can be blankCard, couponCard, loyaltyCard, statusCard, or pointsCard. A blank card needs a template before use. lifetime is in hours from createdAt; 0 means unlimited.
isLocationBound restricts redemption to the issuing location. location contains the current location details when available. Points and status cards include their current program. Status points represent progress within the current tier and may decrease as awards leave the rolling window.
Example request
curl "https://tapcoupon.at/api/v1/cards?cardId=9866191586296×tamp=2026-10-02T12:00:00Z" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Device-ID: YOUR_DEVICE_ID"
Example response fields
{
"cardId": "9866191586296",
"cardType": "loyaltyCard",
"activated": true,
"lifetime": 0,
"scansNeeded": 5,
"currentScans": 1,
"rewardMessage": "You earned a free coffee!",
"amountRenews": 1,
"unlimitedRenews": false
}
Authorizations
Location API key. Also requires X-Device-ID.
Headers
Stable device identifier. API key binds to this value on first use.
Query Parameters
Printed or digital card identifier.
Request timestamp.
Response
Success
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
Available options:
blankCard MongoDB object id.
Pattern:
^[a-fA-F0-9]{24}$Reusable printed or digital card identifier.
Lifetime in hours, measured from createdAt; 0 means unlimited.
Required range:
x >= 0Original coupon value in cents, or template amount for other types.
Show child attributes
Show child attributes
MongoDB object id.
Pattern:
^[a-fA-F0-9]{24}$When true, use is restricted to the issuing location.
MongoDB object id.
Pattern:
^[a-fA-F0-9]{24}$Show child attributes
Show child attributes
