{"info":{"_postman_id":"eae8d08b-d3d0-453e-ac42-f225a542573d","name":"FanPass API","description":"<html><head></head><body><p><strong>CONFIDENTIAL NOTICE. The information contained in this document is strictly confidential<strong><strong>and contains proprietary information. It may only be used by the intended parties and is</strong></strong>subject to the terms of any other confidentiality or nondisclosure agreement between parties.</strong></p>\n<h1 id=\"overview-please-read\">Overview (Please read!)</h1>\n<p>FanPass lets you push your own data into FanReach so it can power personalization and targeting.</p>\n<p>Two things you can push:</p>\n<p><strong>Imported Segments</strong> — lists of user IDs that FanReach uses to target content, push notifications, and campaigns. Send a list inline or upload a file for larger imports.</p>\n<p><strong>User Model Attributes</strong> — key-value data sent via the <code>userProperties</code> field that updates attributes on an individual user's record. There are two distinct types:</p>\n<ul>\n<li><p><strong>Platform User Properties</strong> (<code>user_properties.\\*</code>) — a pre-defined set of attributes (e.g. <code>user_properties.sth</code>, <code>user_properties.ticketing_plans</code>) built into the FanReach User Model. These feed personalization rules and are automatically synced to GA4, attaching to every analytics event for enhanced reporting. → <a href=\"https://docs.google.com/document/d/1xSwhb64_uVrM37b2K8tcTA3pb_x_nC75PkPVdq8vTGw/edit?tab=t.0#heading=h.ybdyyjajmgj5\">View full list of Platform User Properties</a></p>\n</li>\n<li><p><strong>Custom Attributes</strong> (<code>custom.\\*</code>) — attributes you define yourself (e.g. <code>custom.loyalty_tier</code>). These must be registered in the FanReach Portal before use. They power personalization and targeting but are not synced to GA4.</p>\n</li>\n</ul>\n<h1 id=\"endpoints-in-this-collection\">Endpoints in this Collection</h1>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Request</th>\n<th>Method &amp; Path</th>\n<th>Purpose</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Create/Update Segment</strong></td>\n<td><code>POST /api/v1/segments</code></td>\n<td>Create or update an Imported Segment from an inline <code>userIds</code> array (JSON body).</td>\n</tr>\n<tr>\n<td><strong>Import Segment via CSV upload</strong></td>\n<td><code>POST /api/v1/segments</code></td>\n<td>Create or update an Imported Segment by uploading a CSV/XLSX/XLS/ZIP file (<code>multipart/form-data</code>). Recommended for large segments.</td>\n</tr>\n<tr>\n<td><strong>Get Segment Import Status</strong></td>\n<td><code>POST /api/v1/segment_import_status</code></td>\n<td>Poll the progress of a file-based segment import using the <code>firebase_imported_segment_id</code> returned by the upload.</td>\n</tr>\n<tr>\n<td><strong>Update User Properties</strong></td>\n<td><code>POST /api/v1/update_user</code></td>\n<td>Enrich user records with platform and custom user attributes.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The two segment-creation requests target the <strong>same</strong> <code>POST /api/v1/segments</code> endpoint — the API selects file mode when the request is sent as <code>multipart/form-data</code> with a <code>file</code> part, and JSON mode when a JSON body is sent.</p>\n<h1 id=\"getting-started-with-this-postman-collection\">Getting Started with this Postman Collection</h1>\n<p>This collection can be imported into any Postman workspace. It allows you to explore the FanPass API, validate your integration, and reproduce issues for support. It uses variables to manage the API host and your authentication token.</p>\n<p>To get started:</p>\n<p><strong>1. Import this collection into your postman workspace:</strong></p>\n<ul>\n<li><p>In the top right bar of this webpage, click on the <strong>Run in Postman</strong>.</p>\n</li>\n<li><p>Select the <strong>Workspace</strong> you'd like to import this collection into.</p>\n</li>\n</ul>\n<p><strong>2. Select the Collection and Go to Variables:</strong></p>\n<ul>\n<li><p>In the sidebar, click on the <strong>FanPass API</strong> collection.</p>\n</li>\n<li><p>Select the <strong>Variables</strong> tab.</p>\n</li>\n</ul>\n<p><strong>3. Set Your API Token:</strong></p>\n<ul>\n<li><p>You will see a variable named <code>api_access_token</code>.</p>\n</li>\n<li><p>In the <strong>Current Value</strong> column for that variable, <strong>paste your JWT Token</strong>.</p>\n</li>\n<li><p>This <strong>JWT Token</strong> is generated in the Fanreach Portal. It is unique to your user for auditing purposes. Ensure your JWT remains secure and do not share it externally. If your token is compromised, contact FanReach support immediately to issue a new one.</p>\n</li>\n</ul>\n<blockquote>\n<p><strong>Security Best Practice:</strong> Using the <strong>Current Value</strong> field ensures your secret token remains on your local machine and will not be synced with Postman's servers or exposed if you share the collection. </p>\n</blockquote>\n<p>The <code>domain</code> variable is already set to the production host. Once your token is set, you can run any request.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Overview (Please read!)","slug":"overview-please-read"},{"content":"Endpoints in this Collection","slug":"endpoints-in-this-collection"},{"content":"Getting Started with this Postman Collection","slug":"getting-started-with-this-postman-collection"}],"owner":"1065403","collectionId":"eae8d08b-d3d0-453e-ac42-f225a542573d","publishedId":"2sB2x6kC5M","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-06-12T18:11:07.000Z"},"item":[{"name":"Create/Update Segment","id":"d1a159af-2be7-4f9e-b7c6-07a3391fe83c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"title\": \"User Group 1\",\n  \"tag\": \"userGroup1\",\n  \"sourceType\": 0,\n  \"userIds\": [\"12345\",\"54321\",\"56435\"],\n  \"notes\": \"Refresh of User Group 1\"\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/segments","description":"<h3 id=\"endpoint-post-apiv1segments\">Endpoint: <code>POST /api/v1/segments</code></h3>\n<p>Create or update Imported Segments by uploading lists of user IDs. These segments are typically based on behavioral or transactional data and are used to power campaign targeting and personalization.</p>\n<h4 id=\"common-segment-examples\">Common Segment Examples</h4>\n<ul>\n<li><p>Users who renewed season tickets</p>\n</li>\n<li><p>Users interested in tickets</p>\n</li>\n<li><p>Single-game ticket holders</p>\n</li>\n<li><p>Merchandise purchasers</p>\n</li>\n<li><p>CRM-based cohorts</p>\n</li>\n<li><p>Sponsors and VIPs</p>\n</li>\n</ul>\n<h4 id=\"important-notes\">Important Notes</h4>\n<ul>\n<li><p>If a segment <code>tag</code> does not exist, it will be created.</p>\n</li>\n<li><p>If a segment <code>tag</code> already exists, its list of <code>userIds</code> will be fully replaced (\"rinse and replace\").</p>\n</li>\n<li><p>Imported Segments are immediately available for the Personalization Engine. It may take up to 12 hours for changes to reflect in Push Notifications and In-App Messages.</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"request-body-parameters\">Request Body Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>title</code></td>\n<td><code>String</code></td>\n<td>Yes</td>\n<td>A descriptive, friendly name for the segment.</td>\n</tr>\n<tr>\n<td><code>tag</code></td>\n<td><code>String</code></td>\n<td>Yes</td>\n<td>Unique alphanumeric identifier used as the primary key. No spaces allowed.</td>\n</tr>\n<tr>\n<td><code>userIds</code></td>\n<td><code>Array</code></td>\n<td>Yes</td>\n<td>An array of user identifiers (e.g., Ticketing IDs). The array must not be empty.</td>\n</tr>\n<tr>\n<td><code>sourceType</code></td>\n<td><code>Integer</code></td>\n<td>No</td>\n<td>Integer indicating the source of the user IDs. Defaults to <code>0</code>.  <br /><code>0</code> - Ticketing ID  <br /><code>1</code> - Push Notification ID (coming soon)  <br /><code>2</code> - Loyalty ID (coming soon)  <br /><code>3</code> - Ad ID (coming soon)  <br /><code>4</code> - Subscriber ID (coming soon)</td>\n</tr>\n<tr>\n<td><code>notes</code></td>\n<td><code>String</code></td>\n<td>No</td>\n<td>Optional string for import logs (e.g., batch ID). This is visible in the portal.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"eae8d08b-d3d0-453e-ac42-f225a542573d","id":"eae8d08b-d3d0-453e-ac42-f225a542573d","name":"FanPass API","type":"collection"}},"urlObject":{"protocol":"https","path":["api","v1","segments"],"host":["fanpass-api.fanreachdata.io"],"query":[],"variable":[]}},"response":[{"id":"0f71b1e6-77d0-4d59-87a6-9e5531ac5896","name":"Success Response (200)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"title\": \"User Group 1\",\n  \"tag\": \"userGroup1\",\n  \"sourceType\": 0,\n  \"userIds\": [\"12345\",\"54321\",\"56435\"],\n  \"notes\": \"Refresh of User Group 1\"\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/segments"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 200,\n    \"correlationId\": \"95e0bd4c-35e4-4cd4-9e4c-46e06f7b58a1\",\n    \"messages\": [\n        \"Segment User Group 1 queued 3 for import\"\n    ],\n    \"errors\": []\n}"},{"id":"75b0f565-47d4-48fc-95e6-1a17c5ca3170","name":"Error: Missing Fields (400)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"notes\": \"Trying to create a segment with missing fields.\"\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/segments"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 400,\n    \"correlationId\": \"b2c3d4e5-f6a7-8901-2345-67890abcdef1\",\n    \"messages\": [],\n    \"errors\": [\n        \"Missing required fields: title, tag, userIds\"\n    ]\n}"},{"id":"69b0f380-c8ed-4d89-bce1-43e4aa26a50f","name":"Error: Unauthorized (401)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer an-invalid-token"}],"body":{"mode":"raw","raw":"{\n  \"title\": \"User Group 1\",\n  \"tag\": \"userGroup1\",\n  \"sourceType\": 0,\n  \"userIds\": [\"12345\",\"54321\",\"56435\"],\n  \"notes\": \"Refresh of User Group 1\"\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/segments"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 401,\n    \"correlationId\": \"d2e1f3a0-c4b5-6789-0123-456789abcdef\",\n    \"messages\": [],\n    \"errors\": [\n        \"The API access token is missing or invalid. Please verify that you are using the correct FanPass API token, which is available in the Fanreach Portal.\"\n    ]\n}"}],"_postman_id":"d1a159af-2be7-4f9e-b7c6-07a3391fe83c"},{"name":"Import Segment via CSV upload","id":"506c90ef-945e-4359-a4ce-3740fb79a108","request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"<p>Required. The CSV/XLSX/XLS/ZIP file to import. Click this row's Value cell in the Body → form-data tab and select your file. No file is bundled with this collection.</p>\n","value":null},{"key":"title","type":"text","value":"User Group 1","description":"<p>Required. A descriptive, friendly name for the segment.</p>\n"},{"key":"tag","type":"text","value":"userGroup1","description":"<p>Required. Unique alphanumeric identifier used as the primary key. No spaces allowed.</p>\n"},{"key":"sourceType","type":"text","value":"0","description":"<p>Optional. Source of the user IDs. Defaults to 0 (Ticketing ID).</p>\n"},{"key":"notes","type":"text","value":"CSV import of User Group 1","description":"<p>Optional. Notes for import logs. Visible in the portal.</p>\n"},{"key":"dry_run","type":"text","value":"false","description":"<p>Optional. Set to true to validate the file without persisting. Accepts true/1/yes/on.</p>\n"},{"key":"correlation_id","type":"text","value":"","description":"<p>Optional. Override the auto-generated correlation id for tracing.</p>\n"}]},"url":"https://fanpass-api.fanreachdata.io/api/v1/segments","description":"<h3 id=\"endpoint-post-apiv1segments-multipartform-data\">Endpoint: <code>POST /api/v1/segments</code> (multipart/form-data)</h3>\n<h2 id=\"create-or-update-an-imported-segment-by-uploading-a-file-csv-xlsx-xls-or-zip-instead-of-sending-an-inline-userids-array\">Create or update an Imported Segment by uploading a file (CSV, XLSX, XLS, or ZIP) instead of sending an inline userIds array.</h2>\n<p>Create or update an Imported Segment by uploading a file (CSV, XLSX, XLS, or ZIP) instead of sending an inline <code>userIds</code> array. This is the recommended method for large segments.</p>\n<p>This is the same endpoint as Create/Update Segment — the API switches to file mode when the request is sent as <code>multipart/form-data</code> with a <code>file</code> part. The \"rinse and replace\" behavior for an existing <code>tag</code> is identical: if the <code>tag</code> exists, its user list is fully replaced.</p>\n<p><strong>File Requirements</strong></p>\n<ul>\n<li><p>Allowed extensions: <code>.csv</code>, <code>.xlsx</code>, <code>.xls</code>, <code>.zip</code>. Maximum size: 10 MB.</p>\n</li>\n<li><p>The <strong>first column</strong> must be the user ID column.</p>\n</li>\n<li><p>Any additional columns are written to the user's record as User Model Attributes automatically. FanReach resolves each column header using the following order:</p>\n<ol>\n<li><p><strong>Platform User Property</strong> — if the column name matches a non-reserved <code>user_properties.\\\\*</code> attribute (e.g. <code>sth</code>, <code>ticketing_plans</code>), it is written there directly. → <a href=\"https://docs.google.com/document/d/1xSwhb64_uVrM37b2K8tcTA3pb_x_nC75PkPVdq8vTGw/edit?tab=t.0#heading=h.ybdyyjajmgj5\">View full list of Platform User Properties</a></p>\n</li>\n<li><p><strong>Custom Attribute</strong> — if it doesn't match a Platform User Property, FanReach checks whether the attribute is registered in the FanReach Portal under FanPass. If registered, it is written to <code>custom.\\\\*</code>.</p>\n</li>\n<li><p><strong>Rejected</strong> — if the column name matches neither, the row is rejected and an error is recorded on the segment.</p>\n</li>\n</ol>\n</li>\n<li><p>An ID-only file (no extra columns) is valid.</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"form-fields\">Form Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>file</code></td>\n<td>File</td>\n<td>Yes</td>\n<td>The CSV/XLSX/XLS/ZIP file to import.</td>\n</tr>\n<tr>\n<td><code>title</code></td>\n<td>Text</td>\n<td>Yes</td>\n<td>A descriptive, friendly name for the segment.</td>\n</tr>\n<tr>\n<td><code>tag</code></td>\n<td>Text</td>\n<td>Yes</td>\n<td>Unique alphanumeric identifier used as the primary key. No spaces allowed.</td>\n</tr>\n<tr>\n<td><code>sourceType</code></td>\n<td>Text</td>\n<td>No</td>\n<td>Source of the user IDs. Defaults to <code>0</code> (Ticketing ID).</td>\n</tr>\n<tr>\n<td><code>notes</code></td>\n<td>Text</td>\n<td>No</td>\n<td>Notes for import logs (e.g., batch ID). Visible in the portal.</td>\n</tr>\n<tr>\n<td><code>dry_run</code></td>\n<td>Text</td>\n<td>No</td>\n<td>Set to <code>true</code> to validate the file without persisting. Accepts true/1/yes/on.</td>\n</tr>\n<tr>\n<td><code>correlation_id</code></td>\n<td>Text</td>\n<td>No</td>\n<td>Override the auto-generated correlation id for tracing.</td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p>Unknown form fields are ignored. To create a segment from an inline list of IDs instead of a file, use the <strong>Create/Update Segment</strong> request. </p>\n</blockquote>\n<hr />\n<h4 id=\"tracking-progress\">Tracking Progress</h4>\n<p>A successful (non-<code>dry_run</code>) response returns a <code>firebase_imported_segment_id</code> and a <code>lookup_key</code>. Use the <strong>Get Segment Import Status</strong> request to poll the import's progress with that id.</p>\n<blockquote>\n<p><strong>Setting the file:</strong> In the Body → form-data tab, click the Value cell of the <code>file</code> row and choose <strong>Select File</strong>. No file is shipped with this collection.</p>\n</blockquote>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"eae8d08b-d3d0-453e-ac42-f225a542573d","id":"eae8d08b-d3d0-453e-ac42-f225a542573d","name":"FanPass API","type":"collection"}},"urlObject":{"protocol":"https","path":["api","v1","segments"],"host":["fanpass-api.fanreachdata.io"],"query":[],"variable":[]}},"response":[{"id":"16b706c6-8ed8-41b7-b2cd-54c01a303d38","name":"Success Response (200)","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"Required. The CSV/XLSX/XLS/ZIP file to import. Click this row's Value cell in the Body → form-data tab and select your file. No file is bundled with this collection."},{"key":"title","type":"text","value":"User Group 1","description":"Required. A descriptive, friendly name for the segment."},{"key":"tag","type":"text","value":"userGroup1","description":"Required. Unique alphanumeric identifier used as the primary key. No spaces allowed."},{"key":"sourceType","type":"text","value":"0","description":"Optional. Source of the user IDs. Defaults to 0 (Ticketing ID)."},{"key":"notes","type":"text","value":"CSV import of User Group 1","description":"Optional. Notes for import logs. Visible in the portal."},{"key":"dry_run","type":"text","value":"false","description":"Optional. Set to true to validate the file without persisting. Accepts true/1/yes/on."},{"key":"correlation_id","type":"text","value":"","description":"Optional. Override the auto-generated correlation id for tracing."}]},"url":"https://fanpass-api.fanreachdata.io/api/v1/segments","description":"### Endpoint: `POST /api/v1/segments` (multipart/form-data)\n\n## Create or update an Imported Segment by uploading a file (CSV, XLSX, XLS, or ZIP) instead of sending an inline userIds array.\n\nCreate or update an Imported Segment by uploading a file (CSV, XLSX, XLS, or ZIP) instead of sending an inline `userIds` array. This is the recommended method for large segments.\n\nThis is the same endpoint as Create/Update Segment — the API switches to file mode when the request is sent as `multipart/form-data` with a `file` part. The \"rinse and replace\" behavior for an existing `tag` is identical: if the `tag` exists, its user list is fully replaced.\n\n**File Requirements**\n\n- Allowed extensions: `.csv`, `.xlsx`, `.xls`, `.zip`. Maximum size: 10 MB.\n    \n- The **first column** must be the user ID column.\n    \n- Any additional columns are written to the user's record automatically. FanReach resolves each column header using the following order:\n    \n    1. **Platform User Property** — if the column name matches a non-reserved `user_properties.\\\\*` attribute (e.g. `sth`, `ticketing_plans`), it is written there directly. → [View full list of Platform User Properties](https://docs.google.com/document/d/1xSwhb64_uVrM37b2K8tcTA3pb_x_nC75PkPVdq8vTGw/edit?tab=t.0#heading=h.ybdyyjajmgj5)\n        \n    2. **Custom User Property** — if it doesn't match a Platform User Property, FanReach checks whether the attribute is registered in the FanReach Portal under FanPass. If registered, it is written to `custom.\\\\*`.\n        \n    3. **Rejected** — if the column name matches neither, the row is rejected and an error is recorded on the segment.\n        \n- An ID-only file (no extra columns) is valid.\n    \n\n---\n\n#### Form Fields\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `file` | File | Yes | The CSV/XLSX/XLS/ZIP file to import. |\n| `title` | Text | Yes | A descriptive, friendly name for the segment. |\n| `tag` | Text | Yes | Unique alphanumeric identifier used as the primary key. No spaces allowed. |\n| `sourceType` | Text | No | Source of the user IDs. Defaults to `0` (Ticketing ID). |\n| `notes` | Text | No | Notes for import logs (e.g., batch ID). Visible in the portal. |\n| `dry_run` | Text | No | Set to `true` to validate the file without persisting. Accepts true/1/yes/on. |\n| `correlation_id` | Text | No | Override the auto-generated correlation id for tracing. |\n\n> Unknown form fields are ignored. To create a segment from an inline list of IDs instead of a file, use the **Create/Update Segment** request. \n  \n\n---\n\n#### Tracking Progress\n\nA successful (non-`dry_run`) response returns a `firebase_imported_segment_id` and a `lookup_key`. Use the **Get Segment Import Status** request to poll the import's progress with that id.\n\n> **Setting the file:** In the Body → form-data tab, click the Value cell of the `file` row and choose **Select File**. No file is shipped with this collection."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 200,\n    \"correlationId\": \"95e0bd4c-35e4-4cd4-9e4c-46e06f7b58a1\",\n    \"messages\": [\n        \"Segment User Group 1 file queued for import\"\n    ],\n    \"errors\": [],\n    \"firebase_imported_segment_id\": 1042,\n    \"lookup_key\": \"userGroup1\"\n}"},{"id":"08c907b1-0931-465c-8a8a-c11f2002b4a6","name":"Error: Missing Fields (400)","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"Required. The CSV/XLSX/XLS/ZIP file to import. Click this row's Value cell in the Body → form-data tab and select your file. No file is bundled with this collection."},{"key":"title","type":"text","value":"User Group 1","description":"Required. A descriptive, friendly name for the segment."},{"key":"tag","type":"text","value":"userGroup1","description":"Required. Unique alphanumeric identifier used as the primary key. No spaces allowed."},{"key":"sourceType","type":"text","value":"0","description":"Optional. Source of the user IDs. Defaults to 0 (Ticketing ID)."},{"key":"notes","type":"text","value":"CSV import of User Group 1","description":"Optional. Notes for import logs. Visible in the portal."},{"key":"dry_run","type":"text","value":"false","description":"Optional. Set to true to validate the file without persisting. Accepts true/1/yes/on."},{"key":"correlation_id","type":"text","value":"","description":"Optional. Override the auto-generated correlation id for tracing."}]},"url":"https://fanpass-api.fanreachdata.io/api/v1/segments","description":"### Endpoint: `POST /api/v1/segments` (multipart/form-data)\n\n## Create or update an Imported Segment by uploading a file (CSV, XLSX, XLS, or ZIP) instead of sending an inline userIds array.\n\nCreate or update an Imported Segment by uploading a file (CSV, XLSX, XLS, or ZIP) instead of sending an inline `userIds` array. This is the recommended method for large segments.\n\nThis is the same endpoint as Create/Update Segment — the API switches to file mode when the request is sent as `multipart/form-data` with a `file` part. The \"rinse and replace\" behavior for an existing `tag` is identical: if the `tag` exists, its user list is fully replaced.\n\n**File Requirements**\n\n- Allowed extensions: `.csv`, `.xlsx`, `.xls`, `.zip`. Maximum size: 10 MB.\n    \n- The **first column** must be the user ID column.\n    \n- Any additional columns are written to the user's record automatically. FanReach resolves each column header using the following order:\n    \n    1. **Platform User Property** — if the column name matches a non-reserved `user_properties.\\\\*` attribute (e.g. `sth`, `ticketing_plans`), it is written there directly. → [View full list of Platform User Properties](https://docs.google.com/document/d/1xSwhb64_uVrM37b2K8tcTA3pb_x_nC75PkPVdq8vTGw/edit?tab=t.0#heading=h.ybdyyjajmgj5)\n        \n    2. **Custom User Property** — if it doesn't match a Platform User Property, FanReach checks whether the attribute is registered in the FanReach Portal under FanPass. If registered, it is written to `custom.\\\\*`.\n        \n    3. **Rejected** — if the column name matches neither, the row is rejected and an error is recorded on the segment.\n        \n- An ID-only file (no extra columns) is valid.\n    \n\n---\n\n#### Form Fields\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `file` | File | Yes | The CSV/XLSX/XLS/ZIP file to import. |\n| `title` | Text | Yes | A descriptive, friendly name for the segment. |\n| `tag` | Text | Yes | Unique alphanumeric identifier used as the primary key. No spaces allowed. |\n| `sourceType` | Text | No | Source of the user IDs. Defaults to `0` (Ticketing ID). |\n| `notes` | Text | No | Notes for import logs (e.g., batch ID). Visible in the portal. |\n| `dry_run` | Text | No | Set to `true` to validate the file without persisting. Accepts true/1/yes/on. |\n| `correlation_id` | Text | No | Override the auto-generated correlation id for tracing. |\n\n> Unknown form fields are ignored. To create a segment from an inline list of IDs instead of a file, use the **Create/Update Segment** request. \n  \n\n---\n\n#### Tracking Progress\n\nA successful (non-`dry_run`) response returns a `firebase_imported_segment_id` and a `lookup_key`. Use the **Get Segment Import Status** request to poll the import's progress with that id.\n\n> **Setting the file:** In the Body → form-data tab, click the Value cell of the `file` row and choose **Select File**. No file is shipped with this collection."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 400,\n    \"correlationId\": \"b2c3d4e5-f6a7-8901-2345-67890abcdef1\",\n    \"messages\": [],\n    \"errors\": [\n        \"Missing required fields: title, tag, file\"\n    ]\n}"},{"id":"20ec5bcc-58da-4246-a75d-8a9235f4ea87","name":"Error: Unauthorized (401)","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"Required. The CSV/XLSX/XLS/ZIP file to import. Click this row's Value cell in the Body → form-data tab and select your file. No file is bundled with this collection."},{"key":"title","type":"text","value":"User Group 1","description":"Required. A descriptive, friendly name for the segment."},{"key":"tag","type":"text","value":"userGroup1","description":"Required. Unique alphanumeric identifier used as the primary key. No spaces allowed."},{"key":"sourceType","type":"text","value":"0","description":"Optional. Source of the user IDs. Defaults to 0 (Ticketing ID)."},{"key":"notes","type":"text","value":"CSV import of User Group 1","description":"Optional. Notes for import logs. Visible in the portal."},{"key":"dry_run","type":"text","value":"false","description":"Optional. Set to true to validate the file without persisting. Accepts true/1/yes/on."},{"key":"correlation_id","type":"text","value":"","description":"Optional. Override the auto-generated correlation id for tracing."}]},"url":"https://fanpass-api.fanreachdata.io/api/v1/segments","description":"### Endpoint: `POST /api/v1/segments` (multipart/form-data)\n\n## Create or update an Imported Segment by uploading a file (CSV, XLSX, XLS, or ZIP) instead of sending an inline userIds array.\n\nCreate or update an Imported Segment by uploading a file (CSV, XLSX, XLS, or ZIP) instead of sending an inline `userIds` array. This is the recommended method for large segments.\n\nThis is the same endpoint as Create/Update Segment — the API switches to file mode when the request is sent as `multipart/form-data` with a `file` part. The \"rinse and replace\" behavior for an existing `tag` is identical: if the `tag` exists, its user list is fully replaced.\n\n**File Requirements**\n\n- Allowed extensions: `.csv`, `.xlsx`, `.xls`, `.zip`. Maximum size: 10 MB.\n    \n- The **first column** must be the user ID column.\n    \n- Any additional columns are written to the user's record automatically. FanReach resolves each column header using the following order:\n    \n    1. **Platform User Property** — if the column name matches a non-reserved `user_properties.\\\\*` attribute (e.g. `sth`, `ticketing_plans`), it is written there directly. → [View full list of Platform User Properties](https://docs.google.com/document/d/1xSwhb64_uVrM37b2K8tcTA3pb_x_nC75PkPVdq8vTGw/edit?tab=t.0#heading=h.ybdyyjajmgj5)\n        \n    2. **Custom User Property** — if it doesn't match a Platform User Property, FanReach checks whether the attribute is registered in the FanReach Portal under FanPass. If registered, it is written to `custom.\\\\*`.\n        \n    3. **Rejected** — if the column name matches neither, the row is rejected and an error is recorded on the segment.\n        \n- An ID-only file (no extra columns) is valid.\n    \n\n---\n\n#### Form Fields\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `file` | File | Yes | The CSV/XLSX/XLS/ZIP file to import. |\n| `title` | Text | Yes | A descriptive, friendly name for the segment. |\n| `tag` | Text | Yes | Unique alphanumeric identifier used as the primary key. No spaces allowed. |\n| `sourceType` | Text | No | Source of the user IDs. Defaults to `0` (Ticketing ID). |\n| `notes` | Text | No | Notes for import logs (e.g., batch ID). Visible in the portal. |\n| `dry_run` | Text | No | Set to `true` to validate the file without persisting. Accepts true/1/yes/on. |\n| `correlation_id` | Text | No | Override the auto-generated correlation id for tracing. |\n\n> Unknown form fields are ignored. To create a segment from an inline list of IDs instead of a file, use the **Create/Update Segment** request. \n  \n\n---\n\n#### Tracking Progress\n\nA successful (non-`dry_run`) response returns a `firebase_imported_segment_id` and a `lookup_key`. Use the **Get Segment Import Status** request to poll the import's progress with that id.\n\n> **Setting the file:** In the Body → form-data tab, click the Value cell of the `file` row and choose **Select File**. No file is shipped with this collection."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 401,\n    \"correlationId\": \"d2e1f3a0-c4b5-6789-0123-456789abcdef\",\n    \"messages\": [],\n    \"errors\": [\n        \"The API access token is missing or invalid. Please verify that you are using the correct FanPass API token, which is available in the Fanreach Portal.\"\n    ]\n}"}],"_postman_id":"506c90ef-945e-4359-a4ce-3740fb79a108"},{"name":"Get Segment Import Status","id":"0600c259-a844-4e79-b5d0-48fa909cfadd","request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"firebase_imported_segment_id\": 12345\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/segment_import_status","description":"<h3 id=\"endpoint-post-apiv1segment_import_status\">Endpoint: <code>POST /api/v1/segment_import_status</code></h3>\n<p>Poll the progress of a previously submitted Imported Segment — typically one created via a file upload (see <strong>Import Segment via CSV upload</strong>). Large imports are processed asynchronously, so use this endpoint to check when an import has finished.</p>\n<hr />\n<h4 id=\"request-body-parameters\">Request Body Parameters</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>firebase_imported_segment_id</code></td>\n<td>Integer</td>\n<td>Yes</td>\n<td>The id returned by a successful segment create/upload. The alias <code>segment_id</code> is also accepted.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h4 id=\"response-import_status\">Response: <code>import_status</code></h4>\n<p>The <code>import_status</code> object reports progress:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>state</code></td>\n<td>String</td>\n<td>One of <code>pending</code>, <code>processing</code>, <code>completed</code>, or <code>failed</code>.</td>\n</tr>\n<tr>\n<td><code>total_users</code></td>\n<td>Integer</td>\n<td>Total user IDs in the import.</td>\n</tr>\n<tr>\n<td><code>done</code></td>\n<td>Integer</td>\n<td>Number processed so far.</td>\n</tr>\n<tr>\n<td><code>remaining</code></td>\n<td>Integer</td>\n<td>Number still pending. <code>done + remaining = total_users</code>.</td>\n</tr>\n<tr>\n<td><code>percent</code></td>\n<td>Number | null</td>\n<td>Completion percentage (0–100), when available.</td>\n</tr>\n<tr>\n<td><code>firestore_status</code></td>\n<td>String | null</td>\n<td>Underlying Firestore write status, when available.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"eae8d08b-d3d0-453e-ac42-f225a542573d","id":"eae8d08b-d3d0-453e-ac42-f225a542573d","name":"FanPass API","type":"collection"}},"urlObject":{"protocol":"https","path":["api","v1","segment_import_status"],"host":["fanpass-api.fanreachdata.io"],"query":[],"variable":[]}},"response":[{"id":"9c4773e6-87b7-482f-84bf-f4bd75fe5efb","name":"Success Response (200)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"firebase_imported_segment_id\": 12345\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/segment_import_status","description":"### Endpoint: `POST /api/v1/segment_import_status`\n\nPoll the progress of a previously submitted Imported Segment — typically one created via a file upload (see **Import Segment via CSV upload**). Large imports are processed asynchronously, so use this endpoint to check when an import has finished.\n\n---\n\n#### Request Body Parameters\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `firebase_imported_segment_id` | Integer | Yes | The id returned by a successful segment create/upload. The alias `segment_id` is also accepted. |\n\n---\n\n#### Response: `import_status`\n\nThe `import_status` object reports progress:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| `state` | String | One of `pending`, `processing`, `completed`, or `failed`. |\n| `total_users` | Integer | Total user IDs in the import. |\n| `done` | Integer | Number processed so far. |\n| `remaining` | Integer | Number still pending. `done + remaining = total_users`. |\n| `percent` | Number \\| null | Completion percentage (0–100), when available. |\n| `firestore_status` | String \\| null | Underlying Firestore write status, when available. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 200,\n    \"correlationId\": \"7f3c2b1a-9d8e-4c6b-a1f2-3e4d5c6b7a89\",\n    \"messages\": [],\n    \"errors\": [],\n    \"import_status\": {\n        \"state\": \"processing\",\n        \"total_users\": 20,\n        \"done\": 12,\n        \"remaining\": 8,\n        \"percent\": 60,\n        \"firestore_status\": null\n    }\n}"},{"id":"af2bdc5a-463c-4232-96ef-6a092c75f450","name":"Error: Missing Field (400)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"firebase_imported_segment_id\": 12345\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/segment_import_status","description":"### Endpoint: `POST /api/v1/segment_import_status`\n\nPoll the progress of a previously submitted Imported Segment — typically one created via a file upload (see **Import Segment via CSV upload**). Large imports are processed asynchronously, so use this endpoint to check when an import has finished.\n\n---\n\n#### Request Body Parameters\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `firebase_imported_segment_id` | Integer | Yes | The id returned by a successful segment create/upload. The alias `segment_id` is also accepted. |\n\n---\n\n#### Response: `import_status`\n\nThe `import_status` object reports progress:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| `state` | String | One of `pending`, `processing`, `completed`, or `failed`. |\n| `total_users` | Integer | Total user IDs in the import. |\n| `done` | Integer | Number processed so far. |\n| `remaining` | Integer | Number still pending. `done + remaining = total_users`. |\n| `percent` | Number \\| null | Completion percentage (0–100), when available. |\n| `firestore_status` | String \\| null | Underlying Firestore write status, when available. |"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 400,\n    \"correlationId\": \"c7b3d9f1-2a0e-4c89-7b0d-1a2b3c4d5e6f\",\n    \"messages\": [],\n    \"errors\": [\n        \"Missing required field: firebase_imported_segment_id\"\n    ]\n}"},{"id":"09345e4c-7479-47af-8057-543e09dd4e67","name":"Error: Unauthorized (401)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"firebase_imported_segment_id\": 12345\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/segment_import_status","description":"### Endpoint: `POST /api/v1/segment_import_status`\n\nPoll the progress of a previously submitted Imported Segment — typically one created via a file upload (see **Import Segment via CSV upload**). Large imports are processed asynchronously, so use this endpoint to check when an import has finished.\n\n---\n\n#### Request Body Parameters\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `firebase_imported_segment_id` | Integer | Yes | The id returned by a successful segment create/upload. The alias `segment_id` is also accepted. |\n\n---\n\n#### Response: `import_status`\n\nThe `import_status` object reports progress:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| `state` | String | One of `pending`, `processing`, `completed`, or `failed`. |\n| `total_users` | Integer | Total user IDs in the import. |\n| `done` | Integer | Number processed so far. |\n| `remaining` | Integer | Number still pending. `done + remaining = total_users`. |\n| `percent` | Number \\| null | Completion percentage (0–100), when available. |\n| `firestore_status` | String \\| null | Underlying Firestore write status, when available. |"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 401,\n    \"correlationId\": \"d2e1f3a0-c4b5-6789-0123-456789abcdef\",\n    \"messages\": [],\n    \"errors\": [\n        \"The API access token is missing or invalid. Please verify that you are using the correct FanPass API token, which is available in the Fanreach Portal.\"\n    ]\n}"}],"_postman_id":"0600c259-a844-4e79-b5d0-48fa909cfadd"},{"name":"Update User Properties","id":"6888ce1a-4f97-4a28-8026-e36f2d610b0e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userIds\": [\"12345\"],\n    \"userProperties\": {\n        \"example_property_1\": \"example_value_1\",\n        \"example_property_2\": \"example_value_2\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/update_user","description":"<h3 id=\"endpoint-post-apiv1update_user\">Endpoint: <code>POST /api/v1/update_user</code></h3>\n<p>This endpoint allows for real-time enrichment of user records through individual or batch updates of User Model Attributes. These updates enable fine-tuned personalization and audience targeting.</p>\n<p><strong>Update Rules</strong></p>\n<ul>\n<li><p>Users are identified by their unique string-based ID.</p>\n</li>\n<li><p>Attributes are resolved using the following order:</p>\n<ol>\n<li><p><strong>Platform User Property</strong> — if the key matches a non-reserved <code>user_properties.\\\\*</code> attribute (e.g. <code>sth</code>, <code>ticketing_plans</code>), it is written there directly. → <a href=\"https://docs.google.com/document/d/1xSwhb64_uVrM37b2K8tcTA3pb_x_nC75PkPVdq8vTGw/edit?tab=t.0#heading=h.ybdyyjajmgj5\">View full list of Platform User Properties</a></p>\n</li>\n<li><p><strong>Custom Attribute</strong> — if the key is registered in the FanReach Portal under FanPass, it is written to <code>custom.\\\\*</code>.</p>\n</li>\n<li><p><strong>Rejected</strong> — reserved system properties (e.g. <code>user_id</code>) and unregistered keys are ignored. A warning is returned in the response.</p>\n</li>\n</ol>\n</li>\n<li><p>Platform User Properties (<code>user_properties.\\\\*</code>) are synced to GA4 on app open and attached to every subsequent analytics event.</p>\n</li>\n<li><p>Tags are pushed to the <code>fr_user_tags</code> event stream for audience creation.</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"request-body-fields\">Request Body Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>userIds</code></td>\n<td><code>Array</code></td>\n<td>Yes</td>\n<td>An array of user IDs to update.</td>\n</tr>\n<tr>\n<td><code>userProperties</code></td>\n<td><code>Object</code></td>\n<td>Yes</td>\n<td>A key-value object of properties to update for the specified users. See notes for constraints.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"userproperties-constraints\"><strong><code>userProperties</code></strong> <strong>Constraints</strong></h4>\n<ul>\n<li><p><strong>Platform User Property keys</strong> — must match a non-reserved <code>user_properties.\\*</code> attribute. <a href=\"https://docs.google.com/document/d/1xSwhb64_uVrM37b2K8tcTA3pb_x_nC75PkPVdq8vTGw/edit?tab=t.0#heading=h.ybdyyjajmgj5\">View full list</a></p>\n</li>\n<li><p><strong>Custom Attribute keys</strong> — must be registered in the FanPass section of the FanReach Portal before use. Unregistered keys will be rejected.</p>\n</li>\n<li><p><strong>Key length</strong> — maximum 24 characters (required for GA4 compatibility). Keys exceeding this limit will be ignored.</p>\n</li>\n<li><p><strong>Value length</strong> — maximum 36 characters. Values exceeding this limit will be automatically truncated.</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"eae8d08b-d3d0-453e-ac42-f225a542573d","id":"eae8d08b-d3d0-453e-ac42-f225a542573d","name":"FanPass API","type":"collection"}},"urlObject":{"protocol":"https","path":["api","v1","update_user"],"host":["fanpass-api.fanreachdata.io"],"query":[],"variable":[]}},"response":[{"id":"4bfd8f67-119a-45e3-899c-941fda5ed52f","name":"Success Response (200)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userIds\": [\"12345\"],\n    \"userProperties\": {\n        \"example_property_1\": \"example_value_1\",\n        \"example_property_2\": \"example_value_2\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/update_user"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 200,\n    \"correlationId\": \"d8c4e0a2-3b1f-4d9a-8c1e-2a3b4c5d6e7f\",\n    \"messages\": [\n        \"Successfully updated user properties for 1 users\"\n    ],\n    \"errors\": []\n}"},{"id":"8098543f-1af9-40d1-88f9-59d5ea021897","name":"Error: Missing Fields (400)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userProperties\": {}\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/update_user"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 400,\n    \"correlationId\": \"c7b3d9f1-2a0e-4c89-7b0d-1a2b3c4d5e6f\",\n    \"messages\": [],\n    \"errors\": [\n        \"Missing required fields: userIds, userProperties\"\n    ]\n}"},{"id":"7dcdf6e6-5a28-4aa4-b577-5f6f6ce82c1b","name":"Error: Unauthorized (401)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer an-invalid-token"}],"body":{"mode":"raw","raw":"{\n    \"userIds\": [\"12345\"],\n    \"userProperties\": {\n        \"example_property_1\": \"example_value_1\",\n        \"example_property_2\": \"example_value_2\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://fanpass-api.fanreachdata.io/api/v1/update_user"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": 401,\n    \"correlationId\": \"e3f2g4b1-d5c6-7890-1234-567890abcdef\",\n    \"messages\": [],\n    \"errors\": [\n        \"The API access token is missing or invalid. Please verify that you are using the correct FanPass API token, which is available in the Fanreach Portal.\"\n    ]\n}"}],"_postman_id":"6888ce1a-4f97-4a28-8026-e36f2d610b0e"}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]}},"event":[{"listen":"prerequest","script":{"id":"f7c1081a-c8c5-4022-afb5-bde4b77fb6d7","type":"text/javascript","requests":{},"exec":[""]}},{"listen":"test","script":{"id":"e2a12c35-ae83-4e76-84c8-4023e8bd1d34","type":"text/javascript","requests":{},"exec":[""]}}],"variable":[{"key":"domain","value":"fanpass-api.fanreachdata.io"},{"key":"api_access_token","value":""}]}