Skip to main content
GET
/
v1
/
passes
List passes
curl --request GET \
  --url https://api.passlet.io/v1/passes \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.passlet.io/v1/passes"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.passlet.io/v1/passes', 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://api.passlet.io/v1/passes",
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>"
],
]);

$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://api.passlet.io/v1/passes"

req, _ := http.NewRequest("GET", url, nil)

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://api.passlet.io/v1/passes")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.passlet.io/v1/passes")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "items": [
    {
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "externalPassId": "<string>",
      "label": "<string>",
      "version": 123,
      "templateVersionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "templateId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "variables": {},
      "redemption": {
        "windows": [
          {
            "start": "<string>",
            "end": "<string>",
            "maxUses": 50000
          }
        ],
        "maxUses": 50000,
        "perPeriod": {
          "count": 50000,
          "timezone": "<string>"
        },
        "minIntervalMinutes": 263520,
        "activation": {
          "basis": "<string>",
          "validForHours": 43920
        }
      },
      "expiresAt": "2023-11-07T05:31:56Z",
      "createdAt": "2023-11-07T05:31:56Z",
      "updatedAt": "2023-11-07T05:31:56Z"
    }
  ],
  "total": 0,
  "limit": 0,
  "offset": 0,
  "hasMore": true,
  "nextCursor": "<string>"
}
{
"message": "<string>",
"correlationId": "<string>",
"details": {}
}
{
"message": "<string>",
"correlationId": "<string>",
"details": {}
}
{
"message": "<string>",
"correlationId": "<string>",
"details": {}
}
{
"message": "<string>",
"correlationId": "<string>",
"details": {}
}
{
"message": "<string>",
"correlationId": "<string>",
"details": {}
}
{
"message": "<string>",
"correlationId": "<string>",
"details": {}
}
{
"message": "<string>",
"correlationId": "<string>",
"details": {}
}
{
"message": "<string>",
"correlationId": "<string>",
"details": {}
}

Authorizations

Authorization
string
header
required

Passlet access token (plt_*) sent as Authorization: Bearer <token> or X-API-Key. Authorized scopes are listed per operation under x-required-scopes.

Query Parameters

limit
integer
default:20

Number of items per page

Required range: 1 <= x <= 100
cursor
string

Opaque cursor returned by the previous page

Required string length: 1 - 512
offset
integer
default:0

Deprecated offset compatibility parameter

Required range: 0 <= x <= 9007199254740991
status
enum<string>[]

Filter by one or more statuses

Minimum array length: 1
Available options:
QUEUED,
ISSUING,
ISSUED,
VOID,
FAILED,
EXPIRED
externalPassId
string

Filter by external ID

Search by label, status, or external pass ID

Required string length: 1 - 255
projectId

Filter by project. UUID = that project; the string "null" = uncategorised passes.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
templateId
string<uuid>

Filter by template — matches passes issued from any version of this template.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
variable
string[]

Repeatable key:value filter on stored pass variables (exact, trimmed match; value = everything after the first ":"). Same key repeated = any-of; different keys must all match. Max 5 entries. Example: variable=memberTier:gold&variable=region:EU

Required array length: 1 - 5 elements

Stored-variable filter entry in key:value form.

Required string length: 3 - 2177
validOn
string

Only passes valid for scanning on this date (YYYY-MM-DD). Matches passes with a redemption window containing the date; passes that declare no windows are always valid.

Pattern: ^\d{4}-\d{2}-\d{2}$
redeemed
boolean

Filter passes by whether they are redeemed — i.e. have an unreversed accepted scan (scoped by redeemedContext).

redeemedContext
string

Scope the redeemed filter to one scan context key (e.g. an event day). Only meaningful together with redeemed.

Maximum string length: 128
sortBy
enum<string>
default:createdAt

Sort field

Available options:
createdAt,
updatedAt,
label,
status,
externalPassId
sortDir
enum<string>
default:desc

Sort direction

Available options:
asc,
desc

Response

OK

items
object[]
required
total
integer
required

Total number of items

Required range: -9007199254740991 <= x <= 9007199254740991
limit
integer
required

Items per page

Required range: -9007199254740991 <= x <= 9007199254740991
offset
integer
required

Items skipped

Required range: -9007199254740991 <= x <= 9007199254740991
hasMore
boolean
required

Whether more items exist

nextCursor
string | null

Opaque cursor for the next page, or null when exhausted