Pass Management V1
The API V1 Pass endpoints allow you to create, update, delete and manage passes in the system.
Create a Pass
Creates a new pass instance from a specified template.
There's a new generation of API Endpoints that support the system's highly flexible Query Language. If you're starting a new project, we recommend to use the V3 endpoint to create passes.
To add personalized data to your passes, please read how personalization with additional properties works in the system!
URL Parameters
- Name
passtemplate- Type
- string
- (mandatory)
- Description
Pass-template UID as URL parameter with the parameter name passtemplate.
- Name
zapierStyle- Type
- boolean
- (optional)
- Description
Default: false
Recommended: true - Should be set to true. Use the keys that have been returned by the pass-template endpoint that describes the required fields of a pass-template.Legacy templates did support a nested structure to set personalised fields. This is no longer possible with new templates.
Example URL
Request URL
https://app.passcreator.com/api/pass?passtemplate={pass-template-uid}&zapierStyle=true
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header with authorization
POST /api/pass?passtemplate=abc123&zapierStyle=true HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Content-Type: application/json
Request Body - Additional Properties
You can add your additional properties to the request body directly. Use property names or property IDs as keys.
- Name
{PropertyName}- Type
- string
- (optional)
- Description
The additional property defined in the template. For example: firstname - use the property name directly as key.
- Name
{PropertyID}- Type
- string
- (optional)
- Description
Alternatively, use the property ID directly (e.g., 5b3f2f9f66a228.52093670).
To get a list of expected and valid parameters, use the endpoint to get information about a template or the endpoint listing fields only (used for zapierStyle).
Additional Properties Usage
Property examples
{
"firstname": "John",
"5b3f2f9f66a228.52093670": "Zurich"
}
Optional Parameters
The following parameters are optional and will vary based on your pass template:
- Name
userProvidedId- Type
- string
- (optional)
- Description
This is an ID you can specify - it can be used as URL parameter to access the created pass. The URL to access the pass via this ID is always https://app.passcreator.com/passinstance/show/customer-id/userProvidedId. You can find the fixed part of the URL including your customer ID in your account settings.
- Name
barcodeValue- Type
- string
- (optional)
- Description
Sets the barcode value if no auto generated ID should be used.
- Name
barcodeAlternativeText- Type
- string
- (optional)
- Description
Sets the alternative barcode text.
- Name
enforceUniqueUserProvidedId- Type
- boolean
- (optional)
- Description
If set to true, the endpoint will return status 400 if you specify a userProvidedId that is already used within your account.
- Name
groupingIdentifier- Type
- string
- (optional)
- Description
A value that is used to group passes. If a grouping identifier is specified, passes with the same style, pass type identifier, and grouping identifier are displayed as a group. Only valid for event tickets and boarding passes. Will be ignored when it is submitted for other passes. In order to have this value respected, you need to enable the corresponding option on your pass template (tab general → extended options → ask for grouping identifier on pass creation).
- Name
urlToThumbnail- Type
- string
- (optional)
- Description
If your template is using a different thumbnail per pass, you can pass a URL to a valid image here. It will then be used on the pass that is about to be created.
- Name
urlToBackground- Type
- string
- (optional)
- Description
If your template is using a different background image per pass you can pass a URL to a valid image here. It will then be used on the pass that is about to be created.
- Name
urlToLogo- Type
- string
- (optional)
- Description
If your template is using a different logo image per pass you can pass a URL to a valid image here. It will then be used on the pass that is about to be created.
- Name
validAsOfDate- Type
- string
- (optional)
- Description
If set the pass is only valid from this date onwards.
- Name
expirationDate- Type
- string
- (optional)
- Description
If your template is using a different expiration date per pass you can specify this date here in the format Y-m-d H:i.
- Name
relevantDate- Type
- string
- (optional)
- Description
If your template is using a different relevant date per pass you can specify this date here in the format Y-m-d H:i. It's the date when the pass shows up on the lockscreen.
- Name
labelColor- Type
- string
- (optional)
- Description
If your template is using a different label color per pass you can specify a valid hexadecimal color here. Invalid values will be dropped and the default color is used.
- Name
foregroundColor- Type
- string
- (optional)
- Description
If your template is using a different foreground color (the color that field values have) per pass you can specify a valid hexadecimal color here. Invalid values will be dropped and the default color is used.
- Name
backgroundColor- Type
- string
- (optional)
- Description
If your template is using a different background color per pass you can specify a valid hexadecimal color here. Invalid values will be dropped and the default color is used.
- Name
emailRecipient- Type
- string
- (optional)
- Description
If you've selected an email template in the sendout settings of your pass template, you can include an email address here and the system will automatically send the pass via email to the address you've specified.
- Name
phoneRecipient- Type
- string
- (optional)
- Description
If you've specified an SMS text in the sendout settings of your pass template, you can include a phone number here and the system will automatically send the pass via SMS to the number you've specified.
- Name
locations- Type
- array<object>
- (optional)
- Description
An array of valid coordinates. latitude and longitude must contain valid values. relevantText is an optional description for the push notification that is shown. You can also specify an altitude and the maxDistance which defines the number of meters around the coordinate where the notification will be shown.
- Name
storedValue- Type
- float
- (optional)
- Description
A float value that reflects the pass' value. This can e.g. be a monetary value of a gift card, the number of stamps of a stamp card or the number of points of a loyalty campaign. If you have configured a pass functionality for the template of the pass, additional actions like a change of the loyalty tier might be triggered by increasing or decreasing the stored value.
- Name
eligibleValidationPlaces- Type
- array<string>
- (optional)
- Description
Array of strings where this ticket is valid. This is applied when an app scan is used and an app configuration ID is given when requesting info about a pass. The given values have to be part of the validValidationPlaces array of the template. Otherwise, HTTP status 400 will be returned.
- Name
downloadPin- Type
- string
- (optional)
- Description
A PIN that users have to enter before being able to download a pass. Please note that you need to enable the PIN feature on a template level before the PIN verification will be shown.
- Name
bundleId- Type
- string
- (optional)
- Description
Passes with the same bundleId will be bundled together.
- Name
localizedBackgroundImages- Type
- object
- (optional)
- Description
If you have enabled different background images for each pass for your template and are using translations for the template, you can specify different images per language. Submit an array with elements that use the language code as key and the URL to the image as the value.
If you want to know the activated languages for the template, call the endpoint that returns details about a template.
Example Request Body
Request body (zapierStyle=true)
{
"Customerno": "382716",
"barcodeValue": "3897897988979823497234",
"5b3f2f9f66a228.52093670": "Zurich",
"5b3f2f9f66a228.52093671": "Example street 1",
"urlToBackground": "https://www.example.com/default-language.png",
"localizedBackgroundImages": {
"de": "https://www.example.com/german.png",
"nl": "https://www.example.com/dutch.png"
},
"locations": [{
"latitude": 48.0933826,
"longitude": 11.6286617,
"relevantText": "Welcome to the show!",
"altitude": 200,
"maxDistance": 300
}],
"eligibleValidationPlaces": ["room1"],
"userProvidedId": "CUSTOMER-12345",
"enforceUniqueUserProvidedId": true,
"emailRecipient": "john.doe@example.com",
"phoneRecipient": "+49123456789",
"downloadPin": "1234",
"storedValue": 25.50,
"expirationDate": "2025-12-31 23:59",
"relevantDate": "2025-01-15 09:00",
"validAsOfDate": "2025-01-01 00:00",
"labelColor": "000000",
"foregroundColor": "FFFFFF",
"backgroundColor": "FF0000"
}
Returned Values
JSON-Array containing the following information:
- Name
identifier- Type
- string
- (mandatory)
- Description
The unique identifier of the created pass. You should store it in your application if you want to update or delete the pass later.
- Name
uri- Type
- string
- (mandatory)
- Description
The URI of the pass that can be used to update or delete it.
- Name
linkToPassFile- Type
- string
- (mandatory)
- Description
The link where the pkpass-file can be downloaded. The pkpass-file is the actual pass that can be opened on iPhones directly.
Don't use this link to provide the pass to your users in general. It should only be used e.g. if you want to send the Wallet pass to your customers via email after creating a pass. This file is subject to change if you send push notifications which means it might become outdated pretty soon.
- Name
linkToPassPage- Type
- string
- (mandatory)
- Description
Link to the download page for this pass that detects the operating system of the Smartphone that is used and provides device specific help. You are encouraged to always use this link when providing the pass to users because it provides the best user experience on all devices.
This link also works with the identifier and your userProvidedId. If you want to set a default language you can pass the language (e.g. en) in the url: https://app.passcreator.com/({language/})p/{identifier|userProvidedId}
- Name
barcodeValue- Type
- string
- (mandatory)
- Description
The value that is encoded in the barcode of the pass.
- Name
genericProperties- Type
- object
- (mandatory)
- Description
An array containing the values that you can specify in the extended properties of a pass template.
- Name
ErrorMessage- Type
- string
- (mandatory)
- Description
If an error occurs we'll include the error message here.
Example Response
Success Response (201)
{
"identifier": "f4379715-7a69-1742-38ae-836554724306",
"uri": "https://app.passcreator.com/api/pass/f4379715-7a69-1742-38ae-836554724306",
"linkToPassFile": "https://app.passcreator.com/_Resources/Persistent/fcef30ff61c575173f32984178796f5e3fde5541/pass.pkpass",
"linkToPassPage": "https://app.passcreator.com/p/1234567",
"barcodeValue": "3897897988979823497234",
"genericProperties": {
"my-id": "12345678",
"second-field": "Example value"
},
"ErrorMessage": ""
}
Status Codes
- Name
201- Type
- Created
- (mandatory)
- Description
Pass was successfully created.
- Name
400- Type
- Bad Request
- (mandatory)
- Description
Invalid request data or validation error. Check the ErrorMessage field for details.
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key, or attempting to access a template from another customer.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The specified pass template does not exist.
Common Error Messages
- Maximum number of passes for this pass template has been reached
- The given userProvidedId was not unique but the template enforces uniqueness
- The given additional property value was not unique but the template enforces uniqueness
- No custom number from the defined range of custom numbers is available
- Thumbnail could not be imported from given URL
- Background could not be imported from given URL
- Logo could not be imported from given URL
- Expiration date was provided in the wrong format
Get All Passes of a Template
Returns a list of all passes for the given pass template ordered by created on date starting at the given index (start parameter). The pageSize defines how many results you'll get with one request.
You can optionally use the createdSince or modifiedSince parameters to only return passes that have been created or modified since the given date.
Path Parameters
- Name
pass-template-uid- Type
- string
- (mandatory)
- Description
The ID of the template you want to get passes for. This is part of the URL path.
Example Path Usage
URL with path parameter
https://app.passcreator.com/api/pass/list/ddc38a8b-7b2d-4c5e-8318-879230e42f1e
Optional Query Parameters
- Name
start- Type
- integer
- (optional)
- Description
Default: 0
The offset where the query should start.
- Name
pageSize- Type
- integer
- (optional)
- Description
Default: 100, maximum: 100
The number of results per query.
- Name
lastIdOfPriorPage- Type
- string
- (optional)
- Description
Recommended
The UUID of the last entry of the prior page. This will be added to the URL automatically that is returned in the next or self keys.
- Name
lastCreatedOnOfPriorPage- Type
- string
- (optional)
- Description
Recommended
The timestamp of the last entry of the createdOn field of the prior page. This will be added to the URL automatically that is returned in the next or self keys.
- Name
createdSince- Type
- string
- (optional)
- Description
A date in the format Y-m-d H:i (e.g., 2021-07-01 15:30). If set, the result set will only include passes that have been created at or after that date and time.
- Name
modifiedSince- Type
- string
- (optional)
- Description
A date in the format Y-m-d H:i (e.g., 2021-07-01 15:30). If set, the result set will only include passes that have been modified at or after that date and time.
start and pageSize define the pagination, e.g. the first page is start=0 and pageSize=100, the second page is start=100 and pageSize=100.
You can either use a createdSince or modifiedSince date. If you specify both, the modifiedSince parameter will be ignored.
Example URLs with Query Parameters
URLs with query parameters
https://app.passcreator.com/api/pass/list/ddc38a8b-7b2d-4c5e-8318-879230e42f1e?start=0&pageSize=100
https://app.passcreator.com/api/pass/list/ddc38a8b-7b2d-4c5e-8318-879230e42f1e?start=0&pageSize=100&lastIdOfPriorPage=identifier&lastCreatedOnOfPriorPage=1656500068
https://app.passcreator.com/api/pass/list/ddc38a8b-7b2d-4c5e-8318-879230e42f1e?createdSince=2021-07-01%2015:30
https://app.passcreator.com/api/pass/list/ddc38a8b-7b2d-4c5e-8318-879230e42f1e?modifiedSince=2021-07-01%2015:30
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header
GET /api/pass/list/ddc38a8b-7b2d-4c5e-8318-879230e42f1e?start=0&pageSize=100 HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Returned Values
JSON-Array containing an information about the query and the results (these are the actual passes):
- Name
query- Type
- object
- (mandatory)
- Description
Information about the current query including start, pageSize, self URL, and next URL (if available).
- Name
query.start- Type
- integer
- (mandatory)
- Description
Default: 0
The start parameter you've specified.
- Name
query.pageSize- Type
- integer
- (mandatory)
- Description
Default: 100
The pageSize you've specified.
- Name
query.self- Type
- string
- (mandatory)
- Description
The URL of the current request.
- Name
query.next- Type
- string
- (optional)
- Description
The URL of the next page. If no next parameter is returned this means you've reached the end of the list.
- Name
total- Type
- integer
- (mandatory)
- Description
The total number of results for your query.
- Name
results- Type
- array<object>
- (mandatory)
- Description
An array of passes. Each pass object contains the same fields as returned by the Read a Pass endpoint, including all standard pass fields and any additional properties specific to the pass type (e.g., boarding pass fields).
Example Response
Success Response (200)
{
"query": {
"start": 0,
"pageSize": 1,
"self": "https://app.passcreator.com/api/pass/list/ddc38a8b-7b2d-4c5e-8318-879230e42f1e?start=0&pageSize=2&lastIdOfPriorPage=123413c6-714e-4640-b4ee-b94c8061620c&lastCreatedOnOfPriorPage=1656500068",
"next": "https://app.passcreator.com/api/pass/list/ddc38a8b-7b2d-4c5e-8318-879230e42f1e?start=2&pageSize=2&lastIdOfPriorPage=f36a13c6-714e-4640-b4ee-b94c8061620c&lastCreatedOnOfPriorPage=1656500213"
},
"total": 136,
"results": [
{
"identifier": "f36a13c6-714e-4640-b4ee-b94c8061620c",
"uri": "https://app.passcreator.com/api/pass/f36a13c6-714e-4640-b4ee-b94c8061620c",
"generatedId": "we179wavopfw4zpnae5f7ea7464f4a3",
"searchString": "|https://app.passcreator.com/en/p/nr9pod8myjbv65f7ea7464f436||||Sepp|SMSTEST|||we179wavopfw4zpnae5f7ea7464f4a3|987654321||Sepp|Kryptonit|hello@example.com|",
"passData": "",
"voided": false,
"redeemed": false,
"createdOn": "2020-10-08 07:44:38",
"modifiedOn": "2020-10-08 13:43:59",
"expirationDate": "2080-10-08 13:42:00",
"userProvidedId": "",
"passTemplateGuid": "1068b515-7fcb-456f-9abc-0b508b428301",
"passTemplateName": "NFC Pass",
"linkToPassPage": "https://app.passcreator.com/en/p/nr9pod8myjbv65f7ea7464f436",
"thumbnail": null,
"qrCodeImage": "https://app.passcreator.com/qr/987654321",
"barcodeValue": "987654321",
"numberOfActive": 1,
"numberOfInactive": 0,
"numberOfPrinted": 0,
"passFieldData": {
"5cb1a40ac68f80.15012600": "",
"5e2721b93da442.17595709": "",
"5e552028e62805.33020425": "SMSTEST",
"5e5e0adfc1b6e4.84503451": "Sepp",
"5f7216b0297200.36897838": "",
"5f7216b02972e2.34068785": ""
}
}
]
}
Status Codes
- Name
200- Type
- OK
- (mandatory)
- Description
Passes successfully retrieved.
- Name
400- Type
- Bad Request
- (mandatory)
- Description
Invalid request parameters (e.g., pageSize > 100).
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The specified pass template does not exist or you don't have access to it.
Usage Notes
- Use the lastIdOfPriorPage and lastCreatedOnOfPriorPage parameters for efficient pagination
- The next URL in the response includes these pagination parameters automatically
- When there's no next URL, you've reached the end of the results
- Maximum pageSize is 100 to ensure good performance
- Filter by creation or modification date using createdSince or modifiedSince
Read a Pass
Get information about a specific pass instance. If the given pass UID is known, information about the pass is returned.
Path Parameters
- Name
pass-uid- Type
- string
- (mandatory)
- Description
UID, userProvidedId, or barcode value of the pass you want information about. This is part of the URL path.
Example Path Usage
URL with path parameter
https://app.passcreator.com/api/pass/f4379715-7a69-1742-38ae-836554724306
https://app.passcreator.com/api/pass/CUSTOMER-12345
https://app.passcreator.com/api/pass/3897897988979823497234
Optional Query Parameters
- Name
includeFieldMapping- Type
- boolean
- (optional)
- Description
Default: false
Set this GET parameter to true if you want to get an array called fieldMapping that contains the name of the additional property as key and the ID as value.
- Name
appConfigurationId- Type
- string
- (optional)
- Description
If you specify the ID of an app configuration, the system will check if the pass is eligible at the location that is defined for the app configuration. If the pass is not eligible or was used there already, the voided and redeemed fields will be displayed as true, indicating that the pass should not be accepted.
Example URLs with Query Parameters
URLs with query parameters
https://app.passcreator.com/api/pass/f4379715-7a69-1742-38ae-836554724306?includeFieldMapping=true
https://app.passcreator.com/api/pass/f4379715-7a69-1742-38ae-836554724306?appConfigurationId=abc123
https://app.passcreator.com/api/pass/CUSTOMER-12345?includeFieldMapping=true&appConfigurationId=abc123
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header
GET /api/pass/f4379715-7a69-1742-38ae-836554724306 HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Returned Values
JSON-Array containing an array for the pass that has been found. All endpoints that return data of passes use this common data format:
- Name
identifier- Type
- string
- (mandatory)
- Description
The UID of the pass that has the given ID.
- Name
uri- Type
- string
- (mandatory)
- Description
The URI of the pass that can be used to update or delete the pass.
- Name
generatedId- Type
- string
- (mandatory)
- Description
The ID (this is the one that was given in the request).
- Name
searchString- Type
- string
- (mandatory)
- Description
Contains all data on the pass separated by pipe symbols |.
- Name
voided- Type
- boolean
- (mandatory)
- Description
false if the pass is not voided (has not been used). true if the pass is voided (has been used already). A pass can also be voided because it is expired.
- Name
redeemed- Type
- boolean
- (mandatory)
- Description
false if the pass hasn't been used, true if it was used. This value stays the same, no matter if a pass is expired or not.
- Name
createdOn- Type
- string
- (mandatory)
- Description
The date and time when the pass was created.
- Name
modifiedOn- Type
- string
- (mandatory)
- Description
The date and time when the pass was modified the last time.
- Name
expirationDate- Type
- string | null
- (mandatory)
- Description
The date and time when the pass expires (if an expiration date is set).
- Name
userProvidedId- Type
- string
- (mandatory)
- Description
If you've specified a userProvidedId, it will be returned here.
- Name
passTemplateGuid- Type
- string
- (mandatory)
- Description
The GUID of the pass-template that was used to create the pass.
- Name
passTemplateName- Type
- string
- (mandatory)
- Description
The name of the pass-template that was used to create the pass.
- Name
linkToPassPage- Type
- string
- (mandatory)
- Description
The URL to the page where your users can download the pass.
- Name
thumbnail- Type
- string | null
- (mandatory)
- Description
If this pass contains a thumbnail (possible for event tickets and membership cards), the URL to the thumbnail image will be returned here. Otherwise null.
- Name
qrCodeImage- Type
- string
- (mandatory)
- Description
The URL to the QR Code that is shown on the pass.
- Name
barcodeValue- Type
- string
- (mandatory)
- Description
The value of the barcode of this pass. Note that this doesn't mean that the barcode is actually shown. A pass can have a value for this field but the template can be configured so the barcode isn't shown.
- Name
numberOfActive- Type
- integer
- (mandatory)
- Description
The number of active registrations for this pass.
- Name
numberOfInactive- Type
- integer
- (mandatory)
- Description
The number of inactive registrations for this pass.
- Name
numberOfPrinted- Type
- integer
- (mandatory)
- Description
How many times the print version of this pass has been printed/downloaded.
- Name
passFieldData- Type
- object
- (mandatory)
- Description
All personalised fields of this pass including additional properties as an array.
- Name
lastUsage- Type
- string | null
- (mandatory)
- Description
The date and time when the pass was last used (e.g., scanned at the point of sale). Returns null if the pass has never been used.
- Name
storedValue- Type
- float
- (mandatory)
- Description
The value of a pass, e.g. the amount of points of a loyalty program.
- Name
eligiblePlaces- Type
- array<string>
- (mandatory)
- Description
A list of places where this pass may be used.
- Name
placesUsedAt- Type
- object
- (mandatory)
- Description
An object where the key is the timestamp of the usage date and the value the room. Note that a pass can be used multiple times at a location if it was scanned multiple times. Only the first usage was valid in such cases.
- Name
downloadPin- Type
- string
- (mandatory)
- Description
A PIN that users have to enter before being able to download the pass. Returns empty string if no PIN is set.
- Name
bundleId- Type
- string | null
- (mandatory)
- Description
The bundle identifier used to group passes together. Returns null if no bundle ID is set.
- Name
passData- Type
- string
- (mandatory)
- Description
If you've specified a custom data format how you want to show data of your pass, this will be returned here.
- Name
fieldMapping- Type
- object
- (optional)
- Description
Only included when includeFieldMapping=true
An object containing the mapping of additional property names to their IDs.
Dates are converted to the timezone that is set in your company settings.
Example Response
Success Response (200)
{
"identifier": "f36a13c6-714e-4640-b4ee-b94c8061620c",
"uri": "https://app.passcreator.com/api/pass/f36a13c6-714e-4640-b4ee-b94c8061620c",
"generatedId": "we179wavopfw4zpnae5f7ea7464f4a3",
"searchString": "|https://app.passcreator.com/en/p/nr9pod8myjbv65f7ea7464f436||||Sepp|SMSTEST|||we179wavopfw4zpnae5f7ea7464f4a3|987654321||Sepp|Kryptonit|hello@example.com|",
"voided": false,
"redeemed": false,
"createdOn": "2020-10-08 07:44:38",
"modifiedOn": "2020-10-08 13:43:59",
"expirationDate": "2080-10-08 13:42:00",
"userProvidedId": "",
"passTemplateGuid": "1068b515-7fcb-456f-9abc-0b508b428301",
"passTemplateName": "NFC Pass",
"linkToPassPage": "https://app.passcreator.com/en/p/nr9pod8myjbv65f7ea7464f436",
"thumbnail": null,
"qrCodeImage": "https://app.passcreator.com/qr/987654321",
"barcodeValue": "987654321",
"numberOfActive": 1,
"numberOfInactive": 0,
"numberOfPrinted": 0,
"passFieldData": {
"5cb1a40ac68f80.15012600": "",
"5e2721b93da442.17595709": "",
"5e552028e62805.33020425": "SMSTEST",
"5e5e0adfc1b6e4.84503451": "Sepp",
"5f7216b0297200.36897838": "",
"5f7216b02972e2.34068785": ""
},
"lastUsage": "2022-02-23 14:28:51",
"storedValue": 7,
"eligiblePlaces": [
"room1",
"room2"
],
"placesUsedAt": {
"1645625299": "room1",
"1645625531": "room1"
},
"downloadPin": "",
"bundleId": null,
"passData": ""
}
Status Codes
- Name
200- Type
- OK
- (mandatory)
- Description
Pass information successfully retrieved.
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The specified pass does not exist or the app configuration is invalid.
Usage Notes
- You can use the pass identifier, userProvidedId, or barcode value as the path parameter
- When using appConfigurationId, the system validates pass eligibility at the specified location
- Include includeFieldMapping=true to get the mapping between property names and IDs
- The response format follows the common data format used throughout the API
Get URIs to resources for a pass
Retrieve direct URIs to the actual pass resources for Android and iOS platforms. This allows you to build a completely customized way of delivering passes.
Path Parameters
- Name
pass-uid- Type
- string
- (mandatory)
- Description
UID of the pass you want the URLs for. This is part of the URL path.
Example Path Usage
URL with path parameter
https://app.passcreator.com/api/pass/geturis/712b34b6-c56a-4a84-a08d-3500237eef08
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header
GET /api/pass/geturis/712b34b6-c56a-4a84-a08d-3500237eef08 HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Returned Values
JSON object containing the pass URIs:
- Name
iPhoneUri- Type
- string
- (mandatory)
- Description
The URL that returns the actual pkpass file for Apple Wallet.
- Name
AndroidUri- Type
- string
- (mandatory)
- Description
Depending on your template, this is either a URL that triggers the save dialog of Google Pay or a deeplink that opens the pass in PassWallet.
We suggest always using the pass download pages or integrations that Passcreator offers, but this allows you to build your own, completely customized way of delivering passes. Keep in mind that you need to do the device and browser recognition on your own if you go that route.
Example Response
Success Response (200)
{
"iPhoneUri": "https://app.passcreator.com/passinstance/pkpass?passInstance%5B__identity%5D=712b34b6-c56a-4a84-a08d-3500237eef08",
"AndroidUri": "https://passwallet.page.link/?apn=com.attidomobile.passwallet&link=https%3A%2F%2Fapp.passcreator.com%2Fpassinstance%2Fpkpass%3FpassInstance%255B__identity%255D%3D712b34b6-c56a-4a84-a08d-3500237eef08"
}
Status Codes
- Name
200- Type
- OK
- (mandatory)
- Description
Pass URIs successfully retrieved.
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The specified pass does not exist.
Usage Notes
- The iPhoneUri provides a direct link to the .pkpass file for Apple Wallet
- The AndroidUri behavior depends on your pass template configuration
- You are responsible for device and browser detection when using these URIs directly
- Consider using Passcreator's built-in pass download pages for automatic device handling
Search a pass based on its content
Search for passes using a keyword contained in their content. This endpoint allows you to search for information like names or email addresses that are not being used in a barcode.
Path Parameters
- Name
pass-template-uid- Type
- string
- (mandatory)
- Description
UID of the pass-template you want to search passes for. This is part of the URL path.
- Name
searchString- Type
- string
- (mandatory)
- Description
The keyword you want to search for. This is part of the URL path.
Example Path Usage
URL with path parameters
https://app.passcreator.com/api/pass/search/{pass-template-uid}/johnny
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header
GET /api/pass/search/{pass-template-uid}/johnny HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Returned Values
JSON array containing an object for each pass that has been found. See the Read a Pass endpoint for details about the format that passes use and included fields. For boarding passes, additional fields are documented in the Manage Flight Boarding Passes section.
This endpoint may also take into account passes that contain a similar word than your search phrase. E.g. if you search for ID 12345 you may also receive results for passes containing 1234. Or it may return results for Johnny and John, when you search for Johnny.
Example Response
When passes are found, a JSON array is returned:
Success Response (200)
[
{
"identifier": "cd95f105-ce5a-47d1-adaf-ac1996b3c1b4",
"uri": "https://app.passcreator.com/api/pass/cd95f105-ce5a-47d1-adaf-ac1996b3c1b4",
"generatedId": "i76maqci3r7nb0yz9268b82f8f32746",
"searchString": "",
"voided": false,
"redeemed": false,
"createdOn": "2025-09-03 08:07:43",
"modifiedOn": "2025-09-03 08:07:43",
"expirationDate": null,
"userProvidedId": "",
"passTemplateGuid": "eaf794bc-6bf1-4801-bd08-05e4eb97e236",
"passTemplateName": "Documentation",
"linkToPassPage": "https://app.passcreator.com/p/haklg0razi6zd68b82f8f32717",
"thumbnail": null,
"qrCodeImage": "https://app.passcreator.com/qr/i76maqci3r7nb0yz9268b82f8f32746",
"barcodeValue": "i76maqci3r7nb0yz9268b82f8f32746",
"numberOfActive": 0,
"numberOfInactive": 0,
"numberOfPrinted": 0,
"passFieldData": {
"68ad9520a8eb28.52872334": "Johnny",
"68b82f47940da5.86040945": "Doe"
},
"lastUsage": null,
"storedValue": 0,
"eligiblePlaces": [],
"placesUsedAt": [],
"downloadPin": "",
"bundleId": null,
"passData": "Firstname: Johnny\nLastname: Doe\n"
},
{
"identifier": "ef3f87a1-1d6a-4516-9b1b-91806032f9d6",
"uri": "https://app.passcreator.com/api/pass/ef3f87a1-1d6a-4516-9b1b-91806032f9d6",
"generatedId": "lwx37u74eglzfoce4a68b82f6f55a1c",
"searchString": "",
"voided": false,
"redeemed": false,
"createdOn": "2025-09-03 08:07:11",
"modifiedOn": "2025-09-03 08:07:11",
"expirationDate": null,
"userProvidedId": "",
"passTemplateGuid": "eaf794bc-6bf1-4801-bd08-05e4eb97e236",
"passTemplateName": "Documentation",
"linkToPassPage": "https://app.passcreator.com/p/5sl6idcdxbas568b82f6f559e2",
"thumbnail": null,
"qrCodeImage": "https://app.passcreator.com/qr/lwx37u74eglzfoce4a68b82f6f55a1c",
"barcodeValue": "lwx37u74eglzfoce4a68b82f6f55a1c",
"numberOfActive": 0,
"numberOfInactive": 0,
"numberOfPrinted": 0,
"passFieldData": {
"68ad9520a8eb28.52872334": "John",
"68b82f47940da5.86040945": "Doe"
},
"lastUsage": null,
"storedValue": 0,
"eligiblePlaces": [],
"placesUsedAt": [],
"downloadPin": "",
"bundleId": null,
"passData": "Firstname: John\nLastname: Doe\n"
}
]
When no passes match:
Empty Result (200)
[]
Status Codes
- Name
200- Type
- OK
- (mandatory)
- Description
Search completed successfully. Returns a JSON array (may be empty).
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The specified pass template does not exist.
Usage Notes
- Returns a JSON array
- Each pass follows the format documented in the Read a Pass endpoint
- For boarding passes, see additional fields in the Manage Flight Boarding Passes section
- The search may return partial matches and results for similar terms
Get Statistics About Incremental Changes of Pass Usage
Get detailed statistics about passes of a template. This returns timelines for the requested time frame and shows when and how many passes have been created, updated, deleted (deactivated) or saved as well as the operating systems that have been used.
Path Parameters
- Name
pass-template-uid- Type
- string
- (mandatory)
- Description
The UID of the pass template for whose passes you want to get statistics for. This is part of the URL path.
Example Path Usage
URL with path parameter
https://app.passcreator.com/api/pass/statistics/eaf794bc-6bf1-4801-bd08-05e4eb97e236
Required Query Parameters
- Name
timeFrame- Type
- enum<'day', 'week', 'month', 'year'>
- (mandatory)
- Description
The time frame you want to get statistics for. Supported values are day, week, month and year. year is only supported for templates with less than 10,000 passes.
- Name
day- Type
- string
- (mandatory)
- Description
The day that determines what time you'll receive statistics for. Supported are either the string today or a day in the format Y-m-d (e.g., 2025-01-15).
Example URLs with Query Parameters
URLs with query parameters
https://app.passcreator.com/api/pass/statistics/eaf794bc-6bf1-4801-bd08-05e4eb97e236?timeFrame=day&day=today
https://app.passcreator.com/api/pass/statistics/eaf794bc-6bf1-4801-bd08-05e4eb97e236?timeFrame=week&day=2025-01-15
https://app.passcreator.com/api/pass/statistics/eaf794bc-6bf1-4801-bd08-05e4eb97e236?timeFrame=month&day=2025-01-15
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header
GET /api/pass/statistics/eaf794bc-6bf1-4801-bd08-05e4eb97e236?timeFrame=day&day=today HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Returned Values
JSON object containing the following sub-arrays:
- Name
activeRegistrationsTimeline- Type
- array<object>
- (mandatory)
- Description
Shows how many passes have been activated (means saved on a smartphone) per day. Each object contains date and noOfPasses fields.
- Name
inactiveRegistrationsTimeline- Type
- array<object>
- (mandatory)
- Description
Shows how many passes have been deactivated (removed from a phone or push notifications have been deactivated) per day. Each object contains date and noOfPasses fields.
- Name
createdPassesTimeline- Type
- array<object>
- (mandatory)
- Description
Shows how many passes have been created per day. Each object contains date and noOfPasses fields.
- Name
updatedPassesTimeline- Type
- array<object>
- (mandatory)
- Description
Shows how many passes have been updated per day. Each object contains date and noOfPasses fields.
- Name
sentPushNotificationsTimeline- Type
- array<object>
- (mandatory)
- Description
The number of times a push notification has been triggered (which means we've informed the phone that there's something new). Each object contains date and noOfPasses fields.
- Name
receivedPushNotificationsTimeline- Type
- array<object>
- (mandatory)
- Description
The number of times the phone has actually downloaded the new version of a pass. Each object contains date and noOfPasses fields.
- Name
passesPerOperatingSystem- Type
- object
- (mandatory)
- Description
Contains three key value pairs: iOS, Android, WindowsPhone. Each key contains the number of passes that are active right now or have been active per operating system.
Example Response
Success Response (200)
{
"activeRegistrationsTimeline": [
{
"date": "2019-03-10",
"noOfPasses": "268"
}
],
"inactiveRegistrationsTimeline": [
{
"date": "2019-03-10",
"noOfPasses": "9"
}
],
"createdPassesTimeline": [
{
"date": "2019-03-10",
"noOfPasses": "24"
}
],
"updatedPassesTimeline": [
{
"date": "2019-03-10",
"noOfPasses": "541"
}
],
"sentPushNotificationsTimeline": [
{
"date": "2019-03-10",
"noOfPasses": "359"
}
],
"receivedPushNotificationsTimeline": [
{
"date": "2019-03-10",
"noOfPasses": "348"
}
],
"passesPerOperatingSystem": {
"iOS": 143,
"Android": 125,
"WindowsPhone": 0
}
}
Status Codes
- Name
200- Type
- OK
- (mandatory)
- Description
Statistics successfully retrieved.
- Name
400- Type
- Bad Request
- (mandatory)
- Description
Invalid timeFrame parameter or this endpoint is not designed to do data analytics on a larger scale (for templates with more than 10,000 passes using timeFrame other than day or month).
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key, or attempting to access a template from another customer.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The specified pass template does not exist.
Usage Notes
- Year timeFrame is only supported for templates with less than 10,000 passes
- For larger templates, use day or month timeFrame to ensure good performance
- The day parameter accepts either today or a date in Y-m-d format
- All timeline arrays contain objects with date and noOfPasses fields
Get History of Active and Inactive Passes for a Timeframe
Get the history of the total number of active and inactive passes for a template. This starts at the given day until today.
Please note that the system does not keep statistical data for deleted passes. If you remove a pass it will also be removed from this timeline.
Path Parameters
- Name
pass-template-uid- Type
- string
- (mandatory)
- Description
The UID of the pass template for whose passes you want to get statistics for. This is part of the URL path.
- Name
startingday- Type
- string
- (optional)
- Description
The day in the format Y-m-d (e.g., 2020-10-01) from when onwards the system should return data. If you don't specify this parameter you'll get data for the last seven days.
Example Path Usage
URL with path parameters
https://app.passcreator.com/api/pass/statistics/eaf794bc-6bf1-4801-bd08-05e4eb97e236/activehistory/2020-10-01
https://app.passcreator.com/api/pass/statistics/eaf794bc-6bf1-4801-bd08-05e4eb97e236/activehistory
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header
GET /api/pass/statistics/eaf794bc-6bf1-4801-bd08-05e4eb97e236/activehistory/2020-10-01 HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Returned Values
JSON-Array containing the following sub-arrays:
- Name
date- Type
- string
- (mandatory)
- Description
The date in the format Y-m-d.
- Name
active- Type
- integer
- (mandatory)
- Description
The total number of active passes at that day.
- Name
inactive- Type
- integer
- (mandatory)
- Description
The total number of inactive passes at that day.
Example Response
Success Response (200)
[
{
"date": "2020-10-01",
"active": 7,
"inactive": 4
},
{
"date": "2020-10-02",
"active": 7,
"inactive": 4
},
{
"date": "2020-10-03",
"active": 7,
"inactive": 4
},
{
"date": "2020-10-04",
"active": 7,
"inactive": 4
},
{
"date": "2020-10-05",
"active": 7,
"inactive": 4
},
{
"date": "2020-10-06",
"active": 7,
"inactive": 4
},
{
"date": "2020-10-07",
"active": 7,
"inactive": 4
},
{
"date": "2020-10-08",
"active": 8,
"inactive": 5
}
]
Status Codes
- Name
200- Type
- OK
- (mandatory)
- Description
History successfully retrieved.
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key, or attempting to access a template from another customer.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The specified pass template does not exist.
Usage Notes
- Returns data from the specified starting day until today
- If no starting day is provided, returns data for the last seven days
- Deleted passes are not included in the historical data
- Each array entry represents one day with active and inactive pass counts
Update a Pass
Updates an existing pass instance with new data.
There's a new generation of API Endpoints that support the system's highly flexible Query Language. If you're starting a new project, we recommend to use the V3 endpoint to update passes.
Path Parameters
- Name
pass-uid- Type
- string
- (mandatory)
- Description
ID or userProvidedId of the pass that must be updated. This is part of the URL path.
Example Path Usage
URL with path parameter
https://app.passcreator.com/api/pass/f4379715-7a69-1742-38ae-836554724306?zapierStyle=true
https://app.passcreator.com/api/pass/CUSTOMER-12345?zapierStyle=true
Required Query Parameters
- Name
zapierStyle- Type
- boolean
- (mandatory)
- Description
Must be set to true. Use the keys that have been returned by the pass-template endpoint that describes the required fields of a pass-template.
Legacy templates did support a nested structure to set personalised fields. This is no longer possible with new templates.
Example URL with Required Parameters
Request URL
https://app.passcreator.com/api/pass/f4379715-7a69-1742-38ae-836554724306?zapierStyle=true
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header with authorization
POST /api/pass/f4379715-7a69-1742-38ae-836554724306?zapierStyle=true HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Content-Type: application/json
Request Body - Additional Properties
You can add your additional properties to the request body directly. Use property names or property IDs as keys.
- Name
{PropertyName}- Type
- string
- (optional)
- Description
The additional property defined in the template. For example: firstname - use the property name directly as key.
- Name
{PropertyID}- Type
- string
- (optional)
- Description
Alternatively, use the property ID directly (e.g., 5b3f2f9f66a228.52093670).
To get a list of expected and valid parameters, use the endpoint to get information about a template or the endpoint listing fields only (used for zapierStyle).
Additional Properties Usage
Property examples
{
"firstname": "John",
"5b3f2f9f66a228.52093670": "Zurich"
}
Optional Parameters
The following parameters are optional and will vary based on your pass template:
- Name
voided- Type
- boolean
- (optional)
- Description
A boolean that indicates if the pass is voided or not. Voided means the QR-Code will be greyed out and the pass can't be used any longer. Submit true if the pass should be voided, false if it shouldn't be voided. If omitted, the current value remains unchanged.
- Name
groupingIdentifier- Type
- string
- (optional)
- Description
A value that is used to group passes. If a grouping identifier is specified, passes with the same style, pass type identifier, and grouping identifier are displayed as a group. Only valid for event tickets and boarding passes. Will be ignored when it is submitted for other passes. In order to have this value respected, you need to enable the corresponding option on your pass template (tab general → extended options → ask for grouping identifier on pass creation).
- Name
barcodeValue- Type
- string
- (optional)
- Description
Sets the barcode value if no auto generated ID should be used.
- Name
barcodeAlternativeText- Type
- string
- (optional)
- Description
Sets the alternative barcode text.
- Name
urlToThumbnail- Type
- string
- (optional)
- Description
If your template is using a different thumbnail per pass, you can pass a URL to a valid image here. It will then be updated on the pass.
- Name
urlToBackground- Type
- string
- (optional)
- Description
If your template is using a different background image per pass you can pass a URL to a valid image here. It will then be updated on the pass.
- Name
urlToLogo- Type
- string
- (optional)
- Description
If your template is using a different logo image per pass you can pass a URL to a valid image here. It will then be updated on the pass.
- Name
validAsOfDate- Type
- string
- (optional)
- Description
If set the pass is only valid from this date onwards.
- Name
expirationDate- Type
- string
- (optional)
- Description
If your template is using a different expiration date per pass you can specify this date here in the format Y-m-d H:i.
- Name
relevantDate- Type
- string
- (optional)
- Description
If your template is using a different relevant date per pass you can specify this date here in the format Y-m-d H:i. It's the date when the pass shows up on the lockscreen.
- Name
labelColor- Type
- string
- (optional)
- Description
If your template is using a different label color per pass you can specify a valid hexadecimal color here. Invalid values will be dropped and the default color is used.
- Name
foregroundColor- Type
- string
- (optional)
- Description
If your template is using a different foreground color (the color that field values have) per pass you can specify a valid hexadecimal color here. Invalid values will be dropped and the default color is used.
- Name
backgroundColor- Type
- string
- (optional)
- Description
If your template is using a different background color per pass you can specify a valid hexadecimal color here. Invalid values will be dropped and the default color is used.
- Name
emailRecipient- Type
- string
- (optional)
- Description
If you've selected an email template in the sendout settings of your pass template, you can include an email address here and the system will automatically send the pass via email to the address you've specified.
- Name
phoneRecipient- Type
- string
- (optional)
- Description
If you've specified an SMS text in the sendout settings of your pass template, you can include a phone number here and the system will automatically send the pass via SMS to the number you've specified.
- Name
locations- Type
- array<object>
- (optional)
- Description
An array of valid coordinates. latitude and longitude must contain valid values. relevantText is an optional description for the push notification that is shown. You can also specify an altitude and the maxDistance which defines the number of meters around the coordinate where the notification will be shown.
- Name
storedValue- Type
- float
- (optional)
- Description
A float value that reflects the pass' value. This can e.g. be a monetary value of a gift card, the number of stamps of a stamp card or the number of points of a loyalty campaign. If you have configured a pass functionality for the template of the pass, additional actions like a change of the loyalty tier might be triggered by increasing or decreasing the stored value.
- Name
eligibleValidationPlaces- Type
- array<string>
- (optional)
- Description
Array of strings where this ticket is valid. This is applied when an app scan is used and an app configuration ID is given when requesting info about a pass. The given values have to be part of the validValidationPlaces array of the template. Otherwise, HTTP status 400 will be returned.
- Name
downloadPin- Type
- string
- (optional)
- Description
A PIN that users have to enter before being able to download a pass. Please note that you need to enable the PIN feature on a template level before the PIN verification will be shown.
- Name
bundleId- Type
- string
- (optional)
- Description
Passes with the same bundleId will be bundled together.
- Name
localizedBackgroundImages- Type
- object
- (optional)
- Description
If you have enabled different background images for each pass for your template and are using translations for the template, you can specify different images per language. Submit an array with elements that use the language code as key and the URL to the image as the value.
If you want to know the activated languages for the template, call the endpoint that returns details about a template.
Example Request Body
Request body (zapierStyle=true)
{
"Customerno": "382716",
"barcodeValue": "3897897988979823497234",
"5b3f2f9f66a228.52093670": "Zurich",
"5b3f2f9f66a228.52093671": "Example street 1",
"urlToBackground": "https://www.example.com/default-language.png",
"localizedBackgroundImages": {
"de": "https://www.example.com/german.png",
"nl": "https://www.example.com/dutch.png"
},
"locations": [{
"latitude": 48.0933826,
"longitude": 11.6286617,
"relevantText": "Welcome to the updated event!",
"altitude": 200,
"maxDistance": 300
}],
"eligibleValidationPlaces": ["room1"],
"emailRecipient": "john.doe@example.com",
"phoneRecipient": "+49123456789",
"downloadPin": "1234",
"storedValue": 200,
"expirationDate": "2025-12-31 23:59",
"relevantDate": "2025-01-15 09:00",
"validAsOfDate": "2025-01-01 00:00",
"labelColor": "000000",
"foregroundColor": "FFFFFF",
"backgroundColor": "FF0000",
"voided": false
}
Returned Values
If the pass has been updated successfully, HTTP status 204 (No Content) is returned with no response body.
Example Response
Success Response (204)
HTTP/1.1 204 No Content
Status Codes
- Name
204- Type
- No Content
- (mandatory)
- Description
Pass was successfully updated.
- Name
400- Type
- Bad Request
- (mandatory)
- Description
Invalid request data or validation error. Check the ErrorMessage field for details.
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key, or attempting to access a pass from another customer.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The specified pass does not exist.
Common Error Messages
- The given additional property value was not unique but the template enforces uniqueness
- Thumbnail could not be imported from given URL
- Background could not be imported from given URL
- Logo could not be imported from given URL
- Expiration date was provided in the wrong format
- The given values have to be part of the validValidationPlaces array of the template
Mark a Pass Voided
Mark a pass as voided or not voided. This is useful for event tickets that have been used. When a pass is voided, the barcode shown on the pass will be greyed out on the user's device.
Path Parameters
- Name
pass-uid- Type
- string
- (mandatory)
- Description
The unique identifier of the pass. Can be either:
- Pass UID (e.g., f4379715-7a69-1742-38ae-836554724306)
- User provided ID
- Barcode value
Example URL
Request URL
https://app.passcreator.com/api/pass/f4379715-7a69-1742-38ae-836554724306
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header with authorization
PUT /api/pass/f4379715-7a69-1742-38ae-836554724306 HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Content-Type: application/json
Request Body
- Name
voided- Type
- boolean
- (mandatory)
- Description
Indicates if a pass is voided/invalid (true) or not (false). When true, the QR code will be greyed out and the pass can't be used any longer.
Example Request Body
Mark as voided
{
"voided": true
}
Mark as not voided
{
"voided": false
}
Returned Values
If the pass has been updated successfully, HTTP status 204 (No Content) is returned.
Example Response
Success Response (204)
HTTP/1.1 204 No Content
Status Codes
- Name
204- Type
- No Content
- (mandatory)
- Description
Pass was successfully marked as voided/not voided.
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key, or attempting to access a pass from another customer.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The specified pass does not exist.
Usage Example
This endpoint is particularly useful for event tickets. When an attendee enters the venue and their ticket is scanned, you can mark the pass as voided to prevent reuse.
Manage Flight Boarding Passes
When creating or updating flight boarding passes, specific flight-related fields are required in addition to the standard pass creation parameters.
Template Requirements:
- Pass template must have passType set to boardingPass
- Transit type must be set to PKTransitTypeAir for flight boarding passes
- These fields are specifically for airline/flight boarding passes only
How to Use
See documentation of create or update pass endpoints above. This section explains the additional fields required for flight boarding passes.
Required Fields for Flight Boarding Pass
- Name
originAirportCode- Type
- string
- (mandatory)
- Description
A valid IATA code of the origin airport.
- Name
destinationAirportCode- Type
- string
- (mandatory)
- Description
A valid IATA code of the destination airport.
- Name
localScheduledDepartureTime- Type
- string
- (mandatory)
- Description
The local scheduled departure time in the format Y-m-dTH:i (e.g., 2023-07-01T15:00).
- Name
localBoardingDateTime- Type
- string
- (mandatory)
- Description
The local boarding date and time in the format Y-m-dTH:i.
- Name
passengerName- Type
- string
- (mandatory)
- Description
The name of the passenger.
- Name
carrierCode- Type
- string
- (mandatory)
- Description
A valid IATA code of the carrier.
- Name
confirmationCode- Type
- string
- (mandatory)
- Description
The confirmation code for this boarding pass.
- Name
flightNumber- Type
- integer
- (mandatory)
- Description
The flight number.
Example Required Fields
Required boarding pass fields
{
"originAirportCode": "MUC",
"destinationAirportCode": "LAX",
"localScheduledDepartureTime": "2023-07-01T15:13",
"localBoardingDateTime": "2023-07-01T17:19",
"passengerName": "Jane Doe",
"carrierCode": "LH",
"confirmationCode": "ABC",
"flightNumber": 738
}
Optional Fields for Flight Boarding Pass
- Name
originAirportGate- Type
- string
- (optional)
- Description
The gate at the origin airport (e.g., B16).
- Name
originAirportTerminal- Type
- string
- (optional)
- Description
The terminal at the origin airport (e.g., 2).
- Name
destinationAirportGate- Type
- string
- (optional)
- Description
The gate at the destination airport (e.g., A2).
- Name
destinationAirportTerminal- Type
- string
- (optional)
- Description
The terminal at the destination airport (e.g., E).
- Name
localEstimatedOrActualDepartureDateTime- Type
- string
- (optional)
- Description
The local estimated or actual departure date and time in the format Y-m-dTH:i.
- Name
localScheduledArrivalDateTime- Type
- string
- (optional)
- Description
The local scheduled arrival date and time in the format Y-m-dTH:i.
- Name
localEstimatedOrActualArrivalDateTime- Type
- string
- (optional)
- Description
The local estimated or actual arrival date and time in the format Y-m-dTH:i.
- Name
seatClass- Type
- string
- (optional)
- Description
The class of service (e.g., Business or Economy).
- Name
seatNumber- Type
- string
- (optional)
- Description
The seat number (e.g., 26A).
- Name
sequenceNumber- Type
- string
- (optional)
- Description
The sequence number for the passenger (e.g., 066).
- Name
boardingGroup- Type
- string
- (optional)
- Description
The boarding group (e.g., B).
- Name
boardingPosition- Type
- string
- (optional)
- Description
The boarding position (e.g., A13).
Complete Boarding Pass Example
Complete boarding pass request including all supported parameters
{
"originAirportCode": "MUC",
"originAirportGate": "B16",
"originAirportTerminal": "2",
"destinationAirportCode": "LAX",
"destinationAirportGate": "A2",
"destinationAirportTerminal": "E",
"localScheduledDepartureTime": "2023-07-01T15:13",
"localEstimatedOrActualDepartureDateTime": "2023-07-01T18:13",
"localBoardingDateTime": "2023-07-01T17:19",
"localScheduledArrivalDateTime": "2023-07-02T16:14",
"localEstimatedOrActualArrivalDateTime": "2023-07-02T18:15",
"passengerName": "Jane Doe",
"seatClass": "Business",
"seatNumber": "36C",
"sequenceNumber": "066",
"boardingGroup": "B",
"boardingPosition": "A13",
"carrierCode": "LH",
"confirmationCode": "ABC",
"flightNumber": 738
}
Usage Examples
Creating a Flight Boarding Pass
Use the standard create pass endpoint with the flight boarding pass fields included in the request body along with any standard pass parameters.
Remember to include zapierStyle=true parameter in the URL and all required flight boarding pass fields in the request body.
Updating a Flight Boarding Pass
To update a flight boarding pass, use the standard update pass endpoint with the boarding pass fields you want to update included in the request body.
You only need to include the fields you want to update. Unchanged fields will retain their existing values.
Example Requests
Create boarding pass (cURL)
curl -X POST "https://app.passcreator.com/api/pass?passtemplate={template-uid}&zapierStyle=true" \
-H "Authorization: yourApiKeyHere" \
-H "Content-Type: application/json" \
-d '{
"originAirportCode": "MUC",
"destinationAirportCode": "LAX",
"localScheduledDepartureTime": "2023-07-01T15:13",
"passengerName": "Jane Doe",
"carrierCode": "LH",
"confirmationCode": "ABC",
"flightNumber": 738,
"seatNumber": "36C",
"boardingGroup": "B",
"userProvidedId": "BOARDING-001",
"emailRecipient": "jane.doe@example.com"
}'
Update boarding pass (cURL)
curl -X POST "https://app.passcreator.com/api/pass/{pass-uid}?zapierStyle=true" \
-H "Authorization: yourApiKeyHere" \
-H "Content-Type: application/json" \
-d '{
"originAirportGate": "B22",
"localEstimatedOrActualDepartureDateTime": "2023-07-01T16:30",
"seatNumber": "38A"
}'
Important Notes for Flight Boarding Passes
- Template Requirements: The pass template MUST be configured with passType: boardingPass and transitType: PKTransitTypeAir
- All date/time fields should use the format Y-m-dTH:i (e.g., 2023-07-01T15:00)
- Airport codes must be valid IATA codes
- Carrier codes must be valid IATA airline codes
- These flight boarding pass fields are in addition to all standard pass creation and update parameters
- The boarding pass fields are added directly to the request body, not nested in a separate object
- Grouping identifier is supported for flight boarding passes to group related tickets together
Enable Download of a Pass
If you have enabled the option on pass templates that prevents the download if a pass is already active, you can enable the download of the pass temporarily, even if the given pass is active already.
Path Parameters
- Name
pass-uid- Type
- string
- (mandatory)
- Description
UID of the pass you want to enable download for. This is part of the URL path.
Example Path Usage
URL with path parameter
https://app.passcreator.com/api/pass/f4379715-7a69-1742-38ae-836554724306/enabledownload
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header
POST /api/pass/f4379715-7a69-1742-38ae-836554724306/enabledownload HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Content-Type: application/json
Request Body
- Name
enableDownloadUntil- Type
- string
- (optional)
- Description
Default: 10 minutes from request time
A date and time until the download should be possible. If you don't specify this parameter, the download will be enabled for ten minutes. Format: Y-m-d H:i (e.g., 2019-05-20 10:09).
Example Request
Request body
{
"enableDownloadUntil": "2019-05-20 10:09"
}
Returned Values
If the pass has been found and the download is enabled successfully, HTTP status 204 (No Content) is returned with no response body.
Example Response
Success Response (204)
HTTP/1.1 204 No Content
Status Codes
- Name
204- Type
- No Content
- (mandatory)
- Description
Pass was found and download is enabled again.
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The specified pass does not exist.
Usage Notes
- This endpoint is only useful if your pass template has download prevention enabled for active passes
- The download will be temporarily enabled for the specified duration
- If no duration is specified, download is enabled for 10 minutes from the request time
Push Notification to a Pass
Sends a push notification to an active pass.
Path Parameters
- Name
pass-uid- Type
- string
- (mandatory)
- Description
UID, userProvidedId, or barcode value of the pass that should receive the notification. This is part of the URL path.
Example Path Usage
URL with path parameter
https://app.passcreator.com/api/pass/f4379715-7a69-1742-38ae-836554724306/sendpushnotification
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Header containing your API key.
Example HTTP Header
HTTP header
POST /api/pass/{pass-uid}/sendpushnotification HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Content-Type: application/json
Request Body
- Name
pushNotificationText- Type
- string
- (mandatory)
- Description
The text for the push notification. This may include placeholders of additional properties to personalise the message with existing data (e.g., {Firstname}).
Example Request
Request body
{
"pushNotificationText": "Hi {Firstname}, how are you?"
}
Status Codes
- Name
204- Type
- No Content
- (mandatory)
- Description
The notification has been sent successfully.
- Name
304- Type
- Not Modified
- (mandatory)
- Description
The same notification text was already sent previously. The notification will not be sent again to avoid duplicate notifications.
- Name
400- Type
- Bad Request
- (mandatory)
- Description
The pass is not active, the pushNotificationText was empty, or is not set.
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key, or attempting to access a pass from another customer.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The pass identifier is not known.
Usage Notes
- The pass must be active (have at least one device registration) to receive push notifications
- Property placeholders (e.g., {Firstname}) will be replaced with actual values from the pass data
- The system prevents sending duplicate notifications with the same text to avoid spamming
Push Notification to Multiple Passes
Sends a push notification to multiple passes at once. You can send notifications to up to 500 passes in a single request.
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header with authorization
POST /api/pass/sendpushnotifications HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Content-Type: application/json
Request Body
- Name
listOfPasses- Type
- array<string>
- (mandatory)
- Description
An array of pass identifiers that should receive the push notification. Each identifier can be a pass UID, userProvidedId, or barcode value. You can specify up to 500 identifiers in one request.
- Name
pushNotificationText- Type
- string
- (mandatory)
- Description
The text for the push notification. This may include placeholders of additional properties (e.g., {Firstname}) to personalise the message with existing data.
Example Request
Request body
{
"listOfPasses": [
"b1d972dc-eccf-4f87-ab21-25939d9213d8",
"23443567-eccf-4f87-ab21-2435465789"
],
"pushNotificationText": "Hi {Firstname}, how are you?"
}
Response Status Codes
- Name
202- Type
- Accepted
- (mandatory)
- Description
Push notifications have been scheduled successfully. Notifications are sent asynchronously.
- Name
400- Type
- Bad Request
- (mandatory)
- Description
The request is invalid. This occurs when:
- More than 500 passes are specified
- No passes are provided in the listOfPasses array
- The listOfPasses array is empty
- Required fields are missing
- The pushNotificationText is empty
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key.
Usage Notes
- Notifications are processed asynchronously
- Maximum of 500 identifiers per request
- Push notification text supports property placeholders for personalization
- Invalid or non-existent identifiers are silently skipped (no error returned)
- Duplicate notifications with the same text are automatically prevented
Send a Pass via Email
Sends an email with a pass to a specified recipient if an email template for ad hoc submission is configured for the pass template.
Path Parameters
- Name
identifier- Type
- string
- (mandatory)
- Description
The ID of an existing pass. This can be a pass UID, userProvidedId, or barcode value.
- Name
recipientMail- Type
- string
- (mandatory)
- Description
The email address of the recipient.
Example Path Usage
URL with path parameters
https://app.passcreator.com/api/pass/deliver/f4379715-7a69-1742-38ae-836554724306/email/john.doe@example.com
https://app.passcreator.com/api/pass/deliver/CUSTOMER-12345/email/jane@company.com
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header with authorization
POST /api/pass/deliver/f4379715-7a69-1742-38ae-836554724306/email/john.doe@example.com HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Response Status Codes
- Name
200- Type
- OK
- (mandatory)
- Description
The email has been sent successfully.
- Name
400- Type
- Bad Request
- (mandatory)
- Description
The request failed. This occurs when:
- Email address is invalid
- No email template for ad hoc submission is specified for the template of the pass
- Name
404- Type
- Not Found
- (mandatory)
- Description
No pass could be found with the specified identifier.
Usage Notes
- An email template for ad hoc email submission must be defined for the pass template
- The email will be sent using the configured template with the pass attached or linked
- The recipient email address must be valid and properly formatted
Delete a Pass
Delete the pass with the given ID.
Path Parameters
- Name
pass-uid- Type
- string
- (mandatory)
- Description
UID, userProvidedId, or barcode value of the pass you want to delete. This is part of the URL path.
Example Path Usage
URL with path parameter
https://app.passcreator.com/api/pass/f4379715-7a69-1742-38ae-836554724306
https://app.passcreator.com/api/pass/CUSTOMER-12345
https://app.passcreator.com/api/pass/3897897988979823497234
Authorization
- Name
Authorization- Type
- string
- (mandatory)
- Description
HTTP Authorization Header that contains your API key.
Example HTTP Header
HTTP header
DELETE /api/pass/f4379715-7a69-1742-38ae-836554724306 HTTP/1.1
Host: app.passcreator.com
Authorization: yourApiKeyHere
Returned Values
If the pass has been deleted successfully, HTTP status 200 (OK) is returned.
Example Response
Success Response (200)
HTTP/1.1 200 OK
Status Codes
- Name
200- Type
- OK
- (mandatory)
- Description
Pass was successfully deleted.
- Name
401- Type
- Unauthorized
- (mandatory)
- Description
Invalid or missing API key, or attempting to access a pass from another customer.
- Name
404- Type
- Not Found
- (mandatory)
- Description
The specified pass does not exist.
Usage Notes
- Deletion is permanent and cannot be undone