{
    "item": [
        {
            "name": "authentication",
            "description": "Exchange your partner credentials for a session token. Tokens live 8 hours; send them raw in the `Authorization` header (no `Bearer ` prefix). Re-authenticate automatically whenever you receive a `401`.",
            "item": [
                {
                    "id": "71644d79-2288-4600-a35f-a91740450ff5",
                    "name": "Create a session token",
                    "request": {
                        "name": "Create a session token",
                        "description": {
                            "content": "Exchanges your `client_id` + `client_signature` for an 8-hour JWT session token.\n\nDuring normal service the token is at `session.token.token` (note the nesting — this differs from `/partners/session/with-user`, where `session.token` is the string itself). Send it raw in the `Authorization` header on all other endpoints.\n\n**During standby mode the shape differs**: the endpoint returns a short-lived (~15 min) token *without verifying credentials*, and `session.token` is the JWT **string directly** (no inner object). Handle both: `typeof session.token === 'string' ? session.token : session.token.token`. Standby-minted tokens stop working (401) as soon as normal service resumes.",
                            "type": "text/plain"
                        },
                        "url": {
                            "path": [
                                "partners",
                                "session"
                            ],
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "query": [],
                            "variable": []
                        },
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "method": "POST",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"client_id\": \"a1b2c3d4e5\",\n  \"client_signature\": \"f6e5d4c3b2a1098765432109876543210fedcba9\"\n}",
                            "options": {
                                "raw": {
                                    "headerFamily": "json",
                                    "language": "json"
                                }
                            }
                        },
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "id": "4d01edb7-002a-4e6a-a451-febaa2eb4d8a",
                            "name": "Session created. `session.token` is an object during normal service and a plain JWT string during standby mode (see examples).",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "session"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"client_id\": \"a1b2c3d4e5\",\n  \"client_signature\": \"f6e5d4c3b2a1098765432109876543210fedcba9\"\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                },
                                {
                                    "disabled": false,
                                    "description": {
                                        "content": "",
                                        "type": "text/plain"
                                    },
                                    "key": "x-fitradio-served-by",
                                    "value": ""
                                }
                            ],
                            "body": "{\n  \"session\": {\n    \"token\": {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaWQiOiJhMWIyYzNkNGU1IiwidWlkIjoxMjUwOTQ3NiwiaWF0IjoxNzU0MzgwODAwLCJleHAiOjE3NTQ0MDk2MDB9.signature\",\n      \"error\": null\n    }\n  }\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "40a58537-7da8-4cab-8087-d671ec6b96ce",
                            "name": "Credentials invalid.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "session"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"client_id\": \"a1b2c3d4e5\",\n  \"client_signature\": \"f6e5d4c3b2a1098765432109876543210fedcba9\"\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"credentials invalid\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "90a6e73a-b85a-42ed-95ba-aadd2a780512",
                            "name": "`client_id` or `client_signature` missing from the request body.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "session"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"client_id\": \"a1b2c3d4e5\",\n  \"client_signature\": \"f6e5d4c3b2a1098765432109876543210fedcba9\"\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"please provide user information to create session: email, salt\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "9be9cf2e-bc83-4d7c-827c-944295fdd964",
                            "name": "Internal error. Retry with backoff; contact FitRadio if it persists.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "session"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"client_id\": \"a1b2c3d4e5\",\n  \"client_signature\": \"f6e5d4c3b2a1098765432109876543210fedcba9\"\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Internal Server Error",
                            "code": 500,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"internal service error\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        }
                    ],
                    "event": [],
                    "protocolProfileBehavior": {
                        "disableBodyPruning": true
                    }
                },
                {
                    "id": "ab045a6f-63f1-47f6-8406-e7c427a4898e",
                    "name": "Create a session token bound to a partner account",
                    "request": {
                        "name": "Create a session token bound to a partner account",
                        "description": {
                            "content": "Like `POST /partners/session`, but additionally requires the partner account `email` registered with FitRadio and binds the token to that partner identity. Use this variant if your agreement uses the restricted catalog (`GET /partners/catalog/restricted`) — the restricted endpoint filters by the partner identity carried in this token.\n\n**Note the response shape difference:** here `session.token` is the JWT string directly, while `/partners/session` nests it one level deeper (`session.token.token`).",
                            "type": "text/plain"
                        },
                        "url": {
                            "path": [
                                "partners",
                                "session",
                                "with-user"
                            ],
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "query": [],
                            "variable": []
                        },
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "method": "POST",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"client_id\": \"a1b2c3d4e5\",\n  \"client_signature\": \"f6e5d4c3b2a1098765432109876543210fedcba9\",\n  \"email\": \"integration@yourcompany.com\"\n}",
                            "options": {
                                "raw": {
                                    "headerFamily": "json",
                                    "language": "json"
                                }
                            }
                        },
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "id": "2bcf40e6-175a-4a21-bcf5-5aec1856df1b",
                            "name": "Session created.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "session",
                                        "with-user"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"client_id\": \"a1b2c3d4e5\",\n  \"client_signature\": \"f6e5d4c3b2a1098765432109876543210fedcba9\",\n  \"email\": \"integration@yourcompany.com\"\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                },
                                {
                                    "disabled": false,
                                    "description": {
                                        "content": "",
                                        "type": "text/plain"
                                    },
                                    "key": "x-fitradio-served-by",
                                    "value": ""
                                }
                            ],
                            "body": "{\n  \"session\": {\n    \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaWQiOiJhMWIyYzNkNGU1IiwidWlkIjo0MiwiaWF0IjoxNzU0MzgwODAwLCJleHAiOjE3NTQ0MDk2MDB9.signature\"\n  }\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "baeea42a-133e-4d80-b4e7-37f2c9499198",
                            "name": "Credentials invalid, partner not found for the given email, or session creation failed.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "session",
                                        "with-user"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"client_id\": \"a1b2c3d4e5\",\n  \"client_signature\": \"f6e5d4c3b2a1098765432109876543210fedcba9\",\n  \"email\": \"integration@yourcompany.com\"\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"credentials invalid\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "00df04eb-7523-434c-b61c-9aa90c0b0d10",
                            "name": "`client_id` or `client_signature` missing from the request body.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "session",
                                        "with-user"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"client_id\": \"a1b2c3d4e5\",\n  \"client_signature\": \"f6e5d4c3b2a1098765432109876543210fedcba9\",\n  \"email\": \"integration@yourcompany.com\"\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"please provide user information to create session: email, client_id, client_signature\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "e9c85aef-76a8-469e-8600-e927c3200630",
                            "name": "Internal error. Retry with backoff; contact FitRadio if it persists.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "session",
                                        "with-user"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"client_id\": \"a1b2c3d4e5\",\n  \"client_signature\": \"f6e5d4c3b2a1098765432109876543210fedcba9\",\n  \"email\": \"integration@yourcompany.com\"\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Internal Server Error",
                            "code": 500,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"internal service error\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        }
                    ],
                    "event": [],
                    "protocolProfileBehavior": {
                        "disableBodyPruning": true
                    }
                }
            ]
        },
        {
            "name": "catalog",
            "description": "The entry point for content discovery: the pages (music rows) of the partner catalog. Use `/partners/catalog/restricted` if your partner agreement scopes you to a subset of the catalog.",
            "item": [
                {
                    "id": "9240293f-e8bf-47e1-a4cf-07ec19c3e48b",
                    "name": "List catalog pages",
                    "request": {
                        "name": "List catalog pages",
                        "description": {
                            "content": "Returns the pages (music rows) of the partner catalog — the top level of the content hierarchy. Use each entry's `page_id` with `GET /partners/page/{page_id}`.",
                            "type": "text/plain"
                        },
                        "url": {
                            "path": [
                                "partners",
                                "catalog"
                            ],
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "query": [],
                            "variable": []
                        },
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "method": "GET",
                        "body": {},
                        "auth": null
                    },
                    "response": [
                        {
                            "id": "613270c4-d5a1-4cbd-99fc-2ec0884127f9",
                            "name": "Catalog pages.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "catalog"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "OK",
                            "code": 200,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                },
                                {
                                    "disabled": false,
                                    "description": {
                                        "content": "",
                                        "type": "text/plain"
                                    },
                                    "key": "x-fitradio-served-by",
                                    "value": ""
                                }
                            ],
                            "body": "{\n  \"catalogs\": [\n    {\n      \"page_id\": 71,\n      \"title\": \"Featured\",\n      \"type\": \"genre\",\n      \"ranking\": 1,\n      \"list_count\": 12\n    },\n    {\n      \"page_id\": 46,\n      \"title\": \"SWEATBASE\",\n      \"type\": \"genre\",\n      \"ranking\": 2,\n      \"list_count\": 8\n    }\n  ]\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "e5d30275-c073-411e-9704-f8b39c030879",
                            "name": "No catalog available.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "catalog"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"no catalogs available\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "73397fa7-14d6-4137-9a33-c5c8f55c13e2",
                            "name": "Session token missing, malformed, expired, or minted during standby. The body is plain text, not JSON. Create a new session via `POST /partners/session` and retry.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "catalog"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "text/plain"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "text/plain"
                                }
                            ],
                            "body": "Unauthorized",
                            "cookie": [],
                            "_postman_previewlanguage": "text"
                        },
                        {
                            "id": "1af4c567-9f94-425b-b03b-df9f34da42d0",
                            "name": "Internal error. Retry with backoff; contact FitRadio if it persists.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "catalog"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Internal Server Error",
                            "code": 500,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"internal service error\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "91797d1b-cfd7-4c8b-952d-44270f7af178",
                            "name": "The standby failover failed to serve the request. Retry with backoff.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "catalog"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Service Unavailable",
                            "code": 503,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"standby upstream error\"\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        }
                    ],
                    "event": [],
                    "protocolProfileBehavior": {
                        "disableBodyPruning": true
                    }
                },
                {
                    "id": "6ad3a92b-1a7d-4da5-bbb7-925344370d8b",
                    "name": "List catalog pages allowed for your partner account",
                    "request": {
                        "name": "List catalog pages allowed for your partner account",
                        "description": {
                            "content": "Same shape as `GET /partners/catalog`, additionally filtered by the content restrictions configured for your partner account.\n\nThe partner identity is read from the session token, so call this with a token from `POST /partners/session/with-user`. With a plain `/partners/session` token (no partner identity), the response falls back to the unrestricted country catalog.",
                            "type": "text/plain"
                        },
                        "url": {
                            "path": [
                                "partners",
                                "catalog",
                                "restricted"
                            ],
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "query": [],
                            "variable": []
                        },
                        "header": [
                            {
                                "disabled": false,
                                "description": {
                                    "content": "ISO 3166-1 alpha-2 country. On production Cloudflare sets it automatically from the caller's IP; server-to-server integrations may send it explicitly. Read only by this endpoint (the partner-restriction lookup is per country); values that are not exactly two letters are ignored.",
                                    "type": "text/plain"
                                },
                                "key": "CF-IPCountry",
                                "value": "US"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "method": "GET",
                        "body": {},
                        "auth": null
                    },
                    "response": [
                        {
                            "id": "0fb88335-93f3-4b2d-ba62-73bd2096e972",
                            "name": "Catalog pages allowed for this partner.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "catalog",
                                        "restricted"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "disabled": false,
                                        "description": {
                                            "content": "ISO 3166-1 alpha-2 country. On production Cloudflare sets it automatically from the caller's IP; server-to-server integrations may send it explicitly. Read only by this endpoint (the partner-restriction lookup is per country); values that are not exactly two letters are ignored.",
                                            "type": "text/plain"
                                        },
                                        "key": "CF-IPCountry",
                                        "value": "US"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "OK",
                            "code": 200,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                },
                                {
                                    "disabled": false,
                                    "description": {
                                        "content": "",
                                        "type": "text/plain"
                                    },
                                    "key": "x-fitradio-served-by",
                                    "value": ""
                                }
                            ],
                            "body": "{\n  \"catalogs\": [\n    {\n      \"page_id\": 46,\n      \"title\": \"SWEATBASE\",\n      \"type\": \"genre\",\n      \"ranking\": 1,\n      \"list_count\": 8\n    }\n  ]\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "94cf3446-d676-4e6c-9aca-255e2cc8706d",
                            "name": "No catalog available for this partner.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "catalog",
                                        "restricted"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "disabled": false,
                                        "description": {
                                            "content": "ISO 3166-1 alpha-2 country. On production Cloudflare sets it automatically from the caller's IP; server-to-server integrations may send it explicitly. Read only by this endpoint (the partner-restriction lookup is per country); values that are not exactly two letters are ignored.",
                                            "type": "text/plain"
                                        },
                                        "key": "CF-IPCountry",
                                        "value": "US"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"no catalogs available for this partner\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "c038ad9d-a23d-4a92-9719-04efcc9e6173",
                            "name": "Session token missing, malformed, expired, or minted during standby. The body is plain text, not JSON. Create a new session via `POST /partners/session` and retry.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "catalog",
                                        "restricted"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "disabled": false,
                                        "description": {
                                            "content": "ISO 3166-1 alpha-2 country. On production Cloudflare sets it automatically from the caller's IP; server-to-server integrations may send it explicitly. Read only by this endpoint (the partner-restriction lookup is per country); values that are not exactly two letters are ignored.",
                                            "type": "text/plain"
                                        },
                                        "key": "CF-IPCountry",
                                        "value": "US"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "text/plain"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "text/plain"
                                }
                            ],
                            "body": "Unauthorized",
                            "cookie": [],
                            "_postman_previewlanguage": "text"
                        },
                        {
                            "id": "cc5f58e5-0524-4bdc-ad56-1793aecd6695",
                            "name": "Internal error. Retry with backoff; contact FitRadio if it persists.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "catalog",
                                        "restricted"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "disabled": false,
                                        "description": {
                                            "content": "ISO 3166-1 alpha-2 country. On production Cloudflare sets it automatically from the caller's IP; server-to-server integrations may send it explicitly. Read only by this endpoint (the partner-restriction lookup is per country); values that are not exactly two letters are ignored.",
                                            "type": "text/plain"
                                        },
                                        "key": "CF-IPCountry",
                                        "value": "US"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Internal Server Error",
                            "code": 500,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"internal service error\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "0cd46674-d9a2-483e-ab46-d12fe3883cf0",
                            "name": "The standby failover failed to serve the request. Retry with backoff.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "catalog",
                                        "restricted"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "disabled": false,
                                        "description": {
                                            "content": "ISO 3166-1 alpha-2 country. On production Cloudflare sets it automatically from the caller's IP; server-to-server integrations may send it explicitly. Read only by this endpoint (the partner-restriction lookup is per country); values that are not exactly two letters are ignored.",
                                            "type": "text/plain"
                                        },
                                        "key": "CF-IPCountry",
                                        "value": "US"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Service Unavailable",
                            "code": 503,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"standby upstream error\"\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        }
                    ],
                    "event": [],
                    "protocolProfileBehavior": {
                        "disableBodyPruning": true
                    }
                }
            ]
        },
        {
            "name": "page",
            "description": "A page (music row) groups related lists — e.g. a genre or featured collection. Returns the lists on the page.",
            "item": [
                {
                    "id": "dcf1a9b2-0607-465b-84cd-f85c65058d5c",
                    "name": "Get the lists on a page",
                    "request": {
                        "name": "Get the lists on a page",
                        "description": {
                            "content": "Returns the lists on one catalog page. Use each list's `list_id` with `GET /partners/list/{list_id}`.",
                            "type": "text/plain"
                        },
                        "url": {
                            "path": [
                                "partners",
                                "page",
                                ":page_id"
                            ],
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "query": [],
                            "variable": [
                                {
                                    "type": "any",
                                    "value": "71",
                                    "key": "page_id",
                                    "disabled": false,
                                    "description": {
                                        "content": "(Required) Page id from `GET /partners/catalog` (`page_id`).",
                                        "type": "text/plain"
                                    }
                                }
                            ]
                        },
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "method": "GET",
                        "body": {},
                        "auth": null
                    },
                    "response": [
                        {
                            "id": "76aaacd6-c591-457e-9088-1f4e738c2e5a",
                            "name": "The page with its lists.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "page",
                                        ":page_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Page id from `GET /partners/catalog` (`page_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "71",
                                            "key": "page_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "OK",
                            "code": 200,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                },
                                {
                                    "disabled": false,
                                    "description": {
                                        "content": "",
                                        "type": "text/plain"
                                    },
                                    "key": "x-fitradio-served-by",
                                    "value": ""
                                }
                            ],
                            "body": "{\n  \"page\": {\n    \"id\": 71,\n    \"title\": \"Featured\",\n    \"lists\": [\n      {\n        \"list_id\": 529,\n        \"ranking\": 1,\n        \"title\": \"Straight Outta Hollywood\",\n        \"description\": \"Hip hop and Top 40 for lifting and HIIT workouts.\",\n        \"mix_count\": 14,\n        \"image\": {\n          \"thumbnail\": \"https://cdn.fitradio.com/resources/artwork/android_xxhdpi/0362102862_thumb.jpg\",\n          \"large\": \"https://cdn.fitradio.com/resources/artwork/0857061661_large.jpg\",\n          \"player\": \"https://cdn.fitradio.com/resources/artwork/1768199292_player.jpg\"\n        }\n      }\n    ]\n  }\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "92071b0b-7876-4d6a-99a1-35ac4df2e48f",
                            "name": "Missing/unknown page id, or the page has no content.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "page",
                                        ":page_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Page id from `GET /partners/catalog` (`page_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "71",
                                            "key": "page_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"no results for given type\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "8de83047-3c23-469f-bf42-9f61acae4b5c",
                            "name": "Session token missing, malformed, expired, or minted during standby. The body is plain text, not JSON. Create a new session via `POST /partners/session` and retry.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "page",
                                        ":page_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Page id from `GET /partners/catalog` (`page_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "71",
                                            "key": "page_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "text/plain"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "text/plain"
                                }
                            ],
                            "body": "Unauthorized",
                            "cookie": [],
                            "_postman_previewlanguage": "text"
                        },
                        {
                            "id": "190746d4-1f5f-4c34-89fd-41b5de565940",
                            "name": "Internal error. Retry with backoff; contact FitRadio if it persists.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "page",
                                        ":page_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Page id from `GET /partners/catalog` (`page_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "71",
                                            "key": "page_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Internal Server Error",
                            "code": 500,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"internal service error\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "3f899e3a-9a9d-4cbd-8237-b6de639f3d9e",
                            "name": "The standby failover failed to serve the request. Retry with backoff.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "page",
                                        ":page_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Page id from `GET /partners/catalog` (`page_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "71",
                                            "key": "page_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Service Unavailable",
                            "code": 503,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"standby upstream error\"\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        }
                    ],
                    "event": [],
                    "protocolProfileBehavior": {
                        "disableBodyPruning": true
                    }
                }
            ]
        },
        {
            "name": "list",
            "description": "A list is an ordered collection of mixes (a station or curated genre list). Returns list metadata plus lightweight mix summaries.",
            "item": [
                {
                    "id": "d233e6f1-53d5-4817-ab53-998ef497ba44",
                    "name": "Get the mixes in a list",
                    "request": {
                        "name": "Get the mixes in a list",
                        "description": {
                            "content": "Returns one list's metadata plus lightweight summaries of its mixes. Use each mix's `id` with `GET /partners/mix/{mix_id}` to get playable URLs and the track listing.",
                            "type": "text/plain"
                        },
                        "url": {
                            "path": [
                                "partners",
                                "list",
                                ":list_id"
                            ],
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "query": [],
                            "variable": [
                                {
                                    "type": "any",
                                    "value": "529",
                                    "key": "list_id",
                                    "disabled": false,
                                    "description": {
                                        "content": "(Required) List id from `GET /partners/page/{page_id}` (`list_id`).",
                                        "type": "text/plain"
                                    }
                                }
                            ]
                        },
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "method": "GET",
                        "body": {},
                        "auth": null
                    },
                    "response": [
                        {
                            "id": "276de6c9-2ebd-47f0-b922-10850d77686d",
                            "name": "The list with its mixes.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "list",
                                        ":list_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) List id from `GET /partners/page/{page_id}` (`list_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "529",
                                            "key": "list_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "OK",
                            "code": 200,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                },
                                {
                                    "disabled": false,
                                    "description": {
                                        "content": "",
                                        "type": "text/plain"
                                    },
                                    "key": "x-fitradio-served-by",
                                    "value": ""
                                }
                            ],
                            "body": "{\n  \"list\": {\n    \"id\": 529,\n    \"ranking\": 1,\n    \"title\": \"Straight Outta Hollywood\",\n    \"description\": \"Hip hop and Top 40 for lifting and HIIT workouts.\",\n    \"image\": {\n      \"thumbnail\": \"https://cdn.fitradio.com/resources/artwork/android_xxhdpi/0362102862_thumb.jpg\",\n      \"large\": \"https://cdn.fitradio.com/resources/artwork/0857061661_large.jpg\",\n      \"player\": \"https://cdn.fitradio.com/resources/artwork/1768199292_player.jpg\"\n    },\n    \"mixes\": [\n      {\n        \"id\": 9252,\n        \"title\": \"Straight Outta Hollywood 3\",\n        \"description\": \"General lifting mix of hip hop, top 40, and EDM.\",\n        \"length\": \"00:56:13\",\n        \"explicit\": 0,\n        \"bpm\": 80,\n        \"max_bpm\": 150,\n        \"list_id\": 529\n      }\n    ]\n  }\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "392c9c90-3255-4b0d-91e3-2c8aeaa23f9a",
                            "name": "Missing/unknown list id, or the list has no content.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "list",
                                        ":list_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) List id from `GET /partners/page/{page_id}` (`list_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "529",
                                            "key": "list_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"no results for given type\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "ab6b687c-a169-4d4a-a073-9dc4a86a6fcf",
                            "name": "Session token missing, malformed, expired, or minted during standby. The body is plain text, not JSON. Create a new session via `POST /partners/session` and retry.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "list",
                                        ":list_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) List id from `GET /partners/page/{page_id}` (`list_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "529",
                                            "key": "list_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "text/plain"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "text/plain"
                                }
                            ],
                            "body": "Unauthorized",
                            "cookie": [],
                            "_postman_previewlanguage": "text"
                        },
                        {
                            "id": "773dd187-8486-4b0d-bf93-027fa3899fdf",
                            "name": "Internal error. Retry with backoff; contact FitRadio if it persists.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "list",
                                        ":list_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) List id from `GET /partners/page/{page_id}` (`list_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "529",
                                            "key": "list_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Internal Server Error",
                            "code": 500,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"internal service error\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "a841808f-201c-421d-a9f4-a639dc9a6484",
                            "name": "The standby failover failed to serve the request. Retry with backoff.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "list",
                                        ":list_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) List id from `GET /partners/page/{page_id}` (`list_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "529",
                                            "key": "list_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Service Unavailable",
                            "code": 503,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"standby upstream error\"\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        }
                    ],
                    "event": [],
                    "protocolProfileBehavior": {
                        "disableBodyPruning": true
                    }
                }
            ]
        },
        {
            "name": "genres",
            "description": "Raw items of a single music row, with the full artwork set per item.",
            "item": [
                {
                    "id": "76bed020-5b36-4da1-9bce-8e10f1dd998d",
                    "name": "Get the items of a music row with full artwork",
                    "request": {
                        "name": "Get the items of a music row with full artwork",
                        "description": {
                            "content": "Returns the raw items of a single music row with the complete artwork set per item (wide, spotlight, player, thumbnail, basic). Useful for building richer browse UIs than the catalog/page endpoints allow. Not country-filtered.",
                            "type": "text/plain"
                        },
                        "url": {
                            "path": [
                                "partners",
                                "genres",
                                ":music_row_id"
                            ],
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "query": [],
                            "variable": [
                                {
                                    "type": "any",
                                    "value": "46",
                                    "key": "music_row_id",
                                    "disabled": false,
                                    "description": {
                                        "content": "(Required) Music row id (same id space as catalog `page_id`).",
                                        "type": "text/plain"
                                    }
                                }
                            ]
                        },
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "method": "GET",
                        "body": {},
                        "auth": null
                    },
                    "response": [
                        {
                            "id": "7fb0f35a-e0b9-493a-9257-fb6426791e6e",
                            "name": "Items of the music row. `items` is `null` when the row exists but has no items.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "genres",
                                        ":music_row_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Music row id (same id space as catalog `page_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "46",
                                            "key": "music_row_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "OK",
                            "code": 200,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                },
                                {
                                    "disabled": false,
                                    "description": {
                                        "content": "",
                                        "type": "text/plain"
                                    },
                                    "key": "x-fitradio-served-by",
                                    "value": ""
                                }
                            ],
                            "body": "{\n  \"rows\": {\n    \"items\": [\n      {\n        \"id\": 529,\n        \"title\": \"Straight Outta Hollywood\",\n        \"description\": \"Hip hop and Top 40 for lifting and HIIT workouts.\",\n        \"bpm\": 80,\n        \"image\": \"https://cdn.fitradio.com/resources/artwork/0857061661_large.jpg\",\n        \"image_wide_url\": \"https://cdn.fitradio.com/resources/artwork/0857061661_wide.jpg\",\n        \"player_image\": \"https://cdn.fitradio.com/resources/artwork/1768199292_player.jpg\",\n        \"thumbnail\": \"https://cdn.fitradio.com/resources/artwork/0362102862_thumb.jpg\",\n        \"basic_image\": \"https://cdn.fitradio.com/resources/artwork/0857061661_basic.jpg\",\n        \"wide_image\": \"https://cdn.fitradio.com/resources/artwork/0857061661_wide.jpg\",\n        \"spotlight_image\": \"https://cdn.fitradio.com/resources/artwork/0857061661_spot.jpg\",\n        \"ordering\": 1\n      }\n    ]\n  }\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "74cbf7ea-254e-47c0-b442-159424a250fc",
                            "name": "Music row id missing from the URL.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "genres",
                                        ":music_row_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Music row id (same id space as catalog `page_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "46",
                                            "key": "music_row_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"please provide a music row id as a URL parameter\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "a84f76f1-331e-43a7-9b2d-377a361b2010",
                            "name": "Session token missing, malformed, expired, or minted during standby. The body is plain text, not JSON. Create a new session via `POST /partners/session` and retry.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "genres",
                                        ":music_row_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Music row id (same id space as catalog `page_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "46",
                                            "key": "music_row_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "text/plain"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "text/plain"
                                }
                            ],
                            "body": "Unauthorized",
                            "cookie": [],
                            "_postman_previewlanguage": "text"
                        },
                        {
                            "id": "d1715afa-31dd-4382-99c6-3ec64149a58b",
                            "name": "Internal error. Retry with backoff; contact FitRadio if it persists.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "genres",
                                        ":music_row_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Music row id (same id space as catalog `page_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "46",
                                            "key": "music_row_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Internal Server Error",
                            "code": 500,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"internal service error\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "3db33e61-a047-4660-b92b-b068fd0e4720",
                            "name": "The standby failover failed to serve the request. Retry with backoff.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "genres",
                                        ":music_row_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Music row id (same id space as catalog `page_id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "46",
                                            "key": "music_row_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Service Unavailable",
                            "code": 503,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"standby upstream error\"\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        }
                    ],
                    "event": [],
                    "protocolProfileBehavior": {
                        "disableBodyPruning": true
                    }
                }
            ]
        },
        {
            "name": "mix",
            "description": "A mix is a continuous DJ mix. The detail endpoint returns everything needed for playback and compliance: HLS stream URLs (iOS/Android renditions), MP3 URL, artwork, DJ info, and the full track listing with ISRCs.",
            "item": [
                {
                    "id": "9aa77c15-f71b-493c-ba64-fd954c549f96",
                    "name": "Get a mix with playback URLs and track listing",
                    "request": {
                        "name": "Get a mix with playback URLs and track listing",
                        "description": {
                            "content": "Returns everything needed to play one mix and stay license-compliant:\n\n* `android_hls_url` / `ios_hls_url` — ready-to-play HLS manifests per platform. `hls_url` mirrors the Android rendition for backwards compatibility.\n* `url` — the raw MP3.\n* `tracks` — the full track listing with each track's `isrc` and start `time`, which you need for royalty reporting.\n\nThis endpoint is **not** geo-gated.\n\nDuring standby mode, all three HLS fields may point at the same rendition and some metadata may be degraded (equal `min_bpm`/`max_bpm`, empty `description`).",
                            "type": "text/plain"
                        },
                        "url": {
                            "path": [
                                "partners",
                                "mix",
                                ":mix_id"
                            ],
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "query": [],
                            "variable": [
                                {
                                    "type": "any",
                                    "value": "9252",
                                    "key": "mix_id",
                                    "disabled": false,
                                    "description": {
                                        "content": "(Required) Mix id from `GET /partners/list/{list_id}` (`mixes[].id`).",
                                        "type": "text/plain"
                                    }
                                }
                            ]
                        },
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "method": "GET",
                        "body": {},
                        "auth": null
                    },
                    "response": [
                        {
                            "id": "30a05c89-de70-4c80-bf0f-311c2e9a7539",
                            "name": "The mix.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "mix",
                                        ":mix_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Mix id from `GET /partners/list/{list_id}` (`mixes[].id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "9252",
                                            "key": "mix_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "OK",
                            "code": 200,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                },
                                {
                                    "disabled": false,
                                    "description": {
                                        "content": "",
                                        "type": "text/plain"
                                    },
                                    "key": "x-fitradio-served-by",
                                    "value": ""
                                }
                            ],
                            "body": "{\n  \"mix\": {\n    \"id\": 9252,\n    \"title\": \"Straight Outta Hollywood 3\",\n    \"description\": \"General lifting mix of hip hop, top 40, and EDM.\",\n    \"length\": \"00:56:13\",\n    \"min_bpm\": 80,\n    \"max_bpm\": 150,\n    \"explicit\": false,\n    \"url\": \"https://cdn.fitradio.com/resources/mixes/1703282564_straight_outta_hollywood_3.mp3\",\n    \"android_hls_url\": \"https://cdn.fitradio.com/hls_android/mix_9252_android.m3u8\",\n    \"ios_hls_url\": \"https://cdn.fitradio.com/hls_ios/9252/mix_9252.m3u8\",\n    \"hls_url\": \"https://cdn.fitradio.com/hls_android/mix_9252_android.m3u8\",\n    \"image_large\": \"https://cdn.fitradio.com/resources/artwork/0857061661_art.jpg\",\n    \"image_thumbnail\": \"https://cdn.fitradio.com/resources/artwork/ios_retina/0857061661_art.jpg\",\n    \"dj\": {\n      \"name\": \"Breis Gordan\",\n      \"image_large\": \"https://cdn.fitradio.com/resources/artwork/1768199292_dj.jpg\",\n      \"image_thumbnail\": \"https://cdn.fitradio.com/resources/artwork/ios_retina/1768199292_dj.jpg\"\n    },\n    \"tracks\": [\n      {\n        \"id\": 704991,\n        \"time\": \"00:00:00\",\n        \"isrc\": \"USUM71703861\",\n        \"artist\": \"Example Artist\",\n        \"title\": \"Example Track\"\n      },\n      {\n        \"id\": 704992,\n        \"time\": \"00:03:33\",\n        \"isrc\": \"GBUM71603392\",\n        \"artist\": \"Another Artist\",\n        \"title\": \"Another Track\"\n      }\n    ],\n    \"genres\": [\n      {\n        \"id\": 2,\n        \"title\": \"Hip Hop\",\n        \"description\": \"Hip hop and rap workout mixes.\"\n      }\n    ],\n    \"tags\": [\n      \"lifting\",\n      \"crossfit\"\n    ]\n  }\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "da8f5461-606f-4e69-9d97-34c142188d63",
                            "name": "Mix id missing from the URL.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "mix",
                                        ":mix_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Mix id from `GET /partners/list/{list_id}` (`mixes[].id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "9252",
                                            "key": "mix_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"Please provide a mix ID as a URL parameter\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "0c7e197d-dbab-4938-a967-d1643d383c0b",
                            "name": "Session token missing, malformed, expired, or minted during standby. The body is plain text, not JSON. Create a new session via `POST /partners/session` and retry.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "mix",
                                        ":mix_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Mix id from `GET /partners/list/{list_id}` (`mixes[].id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "9252",
                                            "key": "mix_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "text/plain"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "text/plain"
                                }
                            ],
                            "body": "Unauthorized",
                            "cookie": [],
                            "_postman_previewlanguage": "text"
                        },
                        {
                            "id": "dd56e5c7-17c9-4380-a2ff-2310b889eacd",
                            "name": "No mix with this id.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "mix",
                                        ":mix_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Mix id from `GET /partners/list/{list_id}` (`mixes[].id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "9252",
                                            "key": "mix_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Not Found",
                            "code": 404,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"Mix not found\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "46fed06e-db31-4a8f-9829-9586cac9e117",
                            "name": "Internal error. Retry with backoff; contact FitRadio if it persists.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "mix",
                                        ":mix_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Mix id from `GET /partners/list/{list_id}` (`mixes[].id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "9252",
                                            "key": "mix_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Internal Server Error",
                            "code": 500,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"internal service error\",\n  \"mix\": null\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "6e74d20f-b777-4656-8021-3c9a76b79b24",
                            "name": "The standby failover failed to serve the request. Retry with backoff.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "mix",
                                        ":mix_id"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": [
                                        {
                                            "disabled": false,
                                            "description": {
                                                "content": "(Required) Mix id from `GET /partners/list/{list_id}` (`mixes[].id`).",
                                                "type": "text/plain"
                                            },
                                            "type": "any",
                                            "value": "9252",
                                            "key": "mix_id"
                                        }
                                    ]
                                },
                                "header": [
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "GET",
                                "body": {}
                            },
                            "status": "Service Unavailable",
                            "code": 503,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"standby upstream error\"\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        }
                    ],
                    "event": [],
                    "protocolProfileBehavior": {
                        "disableBodyPruning": true
                    }
                }
            ]
        },
        {
            "name": "royalty",
            "description": "Report every track play. Required for licensing compliance — integrations are not approved for launch until reporting is verified end-to-end by FitRadio. Read the *Data types and formats* section above before implementing.",
            "item": [
                {
                    "id": "96162b02-0350-4f69-ac8c-863e075e505f",
                    "name": "Report a track play",
                    "request": {
                        "name": "Report a track play",
                        "description": {
                            "content": "Report every track play — one call per track, sent when the track finishes (or playback stops). Required for licensing compliance.\n\n**Read the *Data types and formats* section first.** The most common integration mistakes, all of which corrupt reporting silently or fail the request:\n\n* `playedat` sent in seconds instead of **milliseconds**\n* numeric fields serialized with a trailing `.0`\n* `playlength`, `userid`, or `isrc` omitted\n\n`isrc` should be echoed from the mix's track listing; if omitted, FitRadio falls back to looking it up from `trackid`, but sending it explicitly is strongly preferred. Send your real per-request values — do not hardcode example payloads from this page.",
                            "type": "text/plain"
                        },
                        "url": {
                            "path": [
                                "partners",
                                "royalty-tracking"
                            ],
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "query": [],
                            "variable": []
                        },
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "method": "POST",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"trackid\": 704991,\n  \"playedat\": 1754380800000,\n  \"playlength\": 213,\n  \"sourcestream\": \"mix\",\n  \"sourcedetail\": \"9252\",\n  \"os\": \"web\",\n  \"device\": \"chrome\",\n  \"country\": \"US\",\n  \"vendor\": 12,\n  \"userid\": \"partner-user-42\",\n  \"uuid\": \"3f6a1c2e-8f4b-4b7e-9d2a-5c8e1f0a9b3d\",\n  \"isrc\": \"USUM71703861\",\n  \"endreason\": 1,\n  \"cachedplay\": false,\n  \"jumpforward\": false\n}",
                            "options": {
                                "raw": {
                                    "headerFamily": "json",
                                    "language": "json"
                                }
                            }
                        },
                        "auth": null
                    },
                    "response": [
                        {
                            "id": "4efa8deb-5ca4-4907-a024-04b6d24c33de",
                            "name": "Play accepted.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "royalty-tracking"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"trackid\": 704991,\n  \"playedat\": 1754380800000,\n  \"playlength\": 213,\n  \"sourcestream\": \"mix\",\n  \"sourcedetail\": \"9252\",\n  \"os\": \"web\",\n  \"device\": \"chrome\",\n  \"country\": \"US\",\n  \"vendor\": 12,\n  \"userid\": \"partner-user-42\",\n  \"uuid\": \"3f6a1c2e-8f4b-4b7e-9d2a-5c8e1f0a9b3d\",\n  \"isrc\": \"USUM71703861\",\n  \"endreason\": 1,\n  \"cachedplay\": false,\n  \"jumpforward\": false\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                },
                                {
                                    "disabled": false,
                                    "description": {
                                        "content": "",
                                        "type": "text/plain"
                                    },
                                    "key": "x-fitradio-served-by",
                                    "value": ""
                                }
                            ],
                            "body": "{\n  \"error\": false,\n  \"message\": \"success\"\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "05109816-1104-4a15-9673-fd9d3d023bcc",
                            "name": "One or more required fields are missing or invalid. `message` lists the offending fields.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "royalty-tracking"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"trackid\": 704991,\n  \"playedat\": 1754380800000,\n  \"playlength\": 213,\n  \"sourcestream\": \"mix\",\n  \"sourcedetail\": \"9252\",\n  \"os\": \"web\",\n  \"device\": \"chrome\",\n  \"country\": \"US\",\n  \"vendor\": 12,\n  \"userid\": \"partner-user-42\",\n  \"uuid\": \"3f6a1c2e-8f4b-4b7e-9d2a-5c8e1f0a9b3d\",\n  \"isrc\": \"USUM71703861\",\n  \"endreason\": 1,\n  \"cachedplay\": false,\n  \"jumpforward\": false\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"message\": \"include the required fields: playedat,country\"\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "b41bb51e-fee6-4a9b-a3ce-65ba25028c7a",
                            "name": "Session token missing, malformed, expired, or minted during standby. The body is plain text, not JSON. Create a new session via `POST /partners/session` and retry.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "royalty-tracking"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "text/plain"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"trackid\": 704991,\n  \"playedat\": 1754380800000,\n  \"playlength\": 213,\n  \"sourcestream\": \"mix\",\n  \"sourcedetail\": \"9252\",\n  \"os\": \"web\",\n  \"device\": \"chrome\",\n  \"country\": \"US\",\n  \"vendor\": 12,\n  \"userid\": \"partner-user-42\",\n  \"uuid\": \"3f6a1c2e-8f4b-4b7e-9d2a-5c8e1f0a9b3d\",\n  \"isrc\": \"USUM71703861\",\n  \"endreason\": 1,\n  \"cachedplay\": false,\n  \"jumpforward\": false\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "text/plain"
                                }
                            ],
                            "body": "Unauthorized",
                            "cookie": [],
                            "_postman_previewlanguage": "text"
                        },
                        {
                            "id": "ffd46523-f5ec-414e-bca0-a85f27dba1d5",
                            "name": "Internal error. Queue the report and retry with backoff.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "royalty-tracking"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"trackid\": 704991,\n  \"playedat\": 1754380800000,\n  \"playlength\": 213,\n  \"sourcestream\": \"mix\",\n  \"sourcedetail\": \"9252\",\n  \"os\": \"web\",\n  \"device\": \"chrome\",\n  \"country\": \"US\",\n  \"vendor\": 12,\n  \"userid\": \"partner-user-42\",\n  \"uuid\": \"3f6a1c2e-8f4b-4b7e-9d2a-5c8e1f0a9b3d\",\n  \"isrc\": \"USUM71703861\",\n  \"endreason\": 1,\n  \"cachedplay\": false,\n  \"jumpforward\": false\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Internal Server Error",
                            "code": 500,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"message\": \"internal service error\"\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        },
                        {
                            "id": "b517c2ae-c1d7-4900-aad2-283061aa1f6c",
                            "name": "The standby failover failed to serve the request. Retry with backoff.",
                            "originalRequest": {
                                "url": {
                                    "path": [
                                        "partners",
                                        "royalty-tracking"
                                    ],
                                    "host": [
                                        "{{baseUrl}}"
                                    ],
                                    "query": [],
                                    "variable": []
                                },
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/json"
                                    },
                                    {
                                        "description": {
                                            "content": "Added as a part of security scheme: apikey",
                                            "type": "text/plain"
                                        },
                                        "key": "Authorization",
                                        "value": "<API Key>"
                                    }
                                ],
                                "method": "POST",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n  \"trackid\": 704991,\n  \"playedat\": 1754380800000,\n  \"playlength\": 213,\n  \"sourcestream\": \"mix\",\n  \"sourcedetail\": \"9252\",\n  \"os\": \"web\",\n  \"device\": \"chrome\",\n  \"country\": \"US\",\n  \"vendor\": 12,\n  \"userid\": \"partner-user-42\",\n  \"uuid\": \"3f6a1c2e-8f4b-4b7e-9d2a-5c8e1f0a9b3d\",\n  \"isrc\": \"USUM71703861\",\n  \"endreason\": 1,\n  \"cachedplay\": false,\n  \"jumpforward\": false\n}",
                                    "options": {
                                        "raw": {
                                            "headerFamily": "json",
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Service Unavailable",
                            "code": 503,
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n  \"error\": true,\n  \"reason\": \"standby upstream error\"\n}",
                            "cookie": [],
                            "_postman_previewlanguage": "json"
                        }
                    ],
                    "event": [],
                    "protocolProfileBehavior": {
                        "disableBodyPruning": true
                    }
                }
            ]
        }
    ],
    "auth": {
        "type": "apikey",
        "apikey": [
            {
                "type": "any",
                "value": "Authorization",
                "key": "key"
            },
            {
                "type": "any",
                "value": "{{apiKey}}",
                "key": "value"
            },
            {
                "type": "any",
                "value": "header",
                "key": "in"
            }
        ]
    },
    "event": [],
    "variable": [
        {
            "key": "baseUrl",
            "value": "https://p.fitradio.com"
        }
    ],
    "info": {
        "_postman_id": "4463a2de-583f-4248-b5f3-b799bd285f92",
        "name": "FitRadio Partner API",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
        "description": {
            "content": "# Overview\n\nThe FitRadio Partner API gives approved partners access to FitRadio's licensed workout-music catalog. The content model is a simple hierarchy:\n\n**Catalog → Page → List → Mix**\n\n1. `GET /partners/catalog` returns the *pages* (music rows) of the partner catalog.\n2. `GET /partners/page/{page_id}` returns the *lists* on one page.\n3. `GET /partners/list/{list_id}` returns the *mixes* in one list.\n4. `GET /partners/mix/{mix_id}` returns one mix with its playable HLS/MP3 URLs, artwork, DJ, and full track listing.\n5. `POST /partners/royalty-tracking` reports every track play back to FitRadio — required for licensing compliance.\n\n# Base URL\n\nAll endpoints are served from `https://p.fitradio.com`.\n\n# Authentication\n\nAll endpoints except the two `POST /partners/session*` endpoints require a session token.\n\n1. FitRadio issues you a `client_id` and `client_signature` out of band.\n2. Call `POST /partners/session` with them. The response contains a JWT session token.\n3. Send that token on every subsequent request in the `Authorization` header.\n\n**Important — send the raw token.** The `Authorization` header value must be the JWT *by itself*, with **no `Bearer ` prefix** and no other decoration:\n\n```\nAuthorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaWQiOi...\n```\n\nA value of `Bearer eyJ...` is rejected with `401`.\n\nThere is **no** `X-Client-Id` header anywhere in this API. Older documentation that mentioned one was wrong — the session token is the only credential sent on API calls.\n\nTokens expire **8 hours** after issue. Any `401` response means your token is missing, malformed, expired, or was minted during standby mode (see below) — create a new session and retry. Build automatic re-authentication on `401` into your client.\n\n# Quickstart\n\n```bash\n# 1. Create a session\ncurl -s -X POST https://p.fitradio.com/partners/session \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"client_id\": \"YOUR_CLIENT_ID\", \"client_signature\": \"YOUR_CLIENT_SIGNATURE\"}'\n# → {\"session\":{\"token\":{\"token\":\"eyJhbGciOi...\",\"error\":null}}}\n\nTOKEN='eyJhbGciOi...'   # the inner session.token.token value, used raw\n\n# 2. Discover content\ncurl -s https://p.fitradio.com/partners/catalog        -H \"Authorization: $TOKEN\"\ncurl -s https://p.fitradio.com/partners/page/71        -H \"Authorization: $TOKEN\"\ncurl -s https://p.fitradio.com/partners/list/529       -H \"Authorization: $TOKEN\"\ncurl -s https://p.fitradio.com/partners/mix/9252       -H \"Authorization: $TOKEN\"\n\n# 3. Report a play (required for every track you play)\ncurl -s -X POST https://p.fitradio.com/partners/royalty-tracking \\\n  -H \"Authorization: $TOKEN\" -H 'Content-Type: application/json' \\\n  -d '{\n    \"trackid\": 704991,\n    \"playedat\": 1754380800000,\n    \"playlength\": 213,\n    \"sourcestream\": \"mix\",\n    \"sourcedetail\": \"9252\",\n    \"os\": \"web\",\n    \"device\": \"chrome\",\n    \"country\": \"US\",\n    \"vendor\": 12,\n    \"userid\": \"partner-user-42\",\n    \"isrc\": \"USUM71703861\",\n    \"endreason\": 1\n  }'\n```\n\n# Data types and formats\n\nThese rules exist because getting them wrong silently corrupts royalty reporting. Please read them carefully.\n\n| Rule | Detail |\n|---|---|\n| **IDs are JSON integers** | Send `\"trackid\": 704991` — never `704991.0`, never `\"704991\"`. Serializers that add a trailing `.0` (e.g. Python floats, spreadsheet exports) break processing. |\n| **`playedat` is epoch milliseconds** | A 13-digit Unix timestamp, e.g. `1754380800000`. Sending *seconds* (10 digits) is not rejected but corrupts play-time reporting — always milliseconds. |\n| **`playlength` is seconds** | Integer number of seconds the track actually played, e.g. `213`. |\n| **Mix/track durations are strings** | `length` and `time` fields are `HH:MM:SS` strings, e.g. `\"00:56:13\"`. |\n| **ISRC** | Every track in `GET /partners/mix/{mix_id}` includes its `isrc` (International Standard Recording Code). Echo the value back in royalty reports **exactly as received** — do not reformat, trim, or reconstruct it. |\n| **Country codes** | ISO 3166-1 alpha-2, uppercase, e.g. `US`, `GB`, `DE`. |\n\n# Country\n\nCatalog, page, list and mix responses are **not** filtered by country: every partner sees the same catalog. The `country` field of a royalty report is **required** and must be the listener's country (ISO 3166-1 alpha-2); a report without it is rejected with `400`. It is never inferred from the request's IP or headers.\n\nRequesting a page or list id that has no content returns `400` with `reason: \"no results for given type\"`.\n\n# Standby mode\n\nWhen FitRadio's primary database is unavailable, the API automatically fails over to a read-only standby service so playback keeps working. What changes for you:\n\n* Responses include the header `x-fitradio-served-by: standby` (or `live-bypass`). Absence of the header means normal live service.\n* `POST /partners/session` succeeds **without verifying credentials** and returns a short-lived token (~15 minutes) — and the response shape flattens: `session.token` is the JWT **string** directly instead of the live `{token, error}` object. Extract with `typeof session.token === 'string' ? session.token : session.token.token`.\n* Standby-minted tokens are **rejected with `401` the moment normal service resumes.** This is the main reason your client must re-authenticate automatically on any `401`.\n* Some catalog metadata is served from cache and may be degraded (e.g. a mix's `min_bpm`/`max_bpm` may be equal, `description` may be empty).\n* `POST /partners/royalty-tracking` accepts and acknowledges reports; queue and re-send your reports after standby ends if you require delivery guarantees.\n\n# Errors\n\nTwo error envelopes are in use:\n\n* Most endpoints: `{ \"error\": true, \"reason\": \"<human-readable message>\", \"mix\": null }` (the legacy `mix` field is always `null` and can be ignored).\n* `POST /partners/royalty-tracking`: `{ \"error\": true, \"message\": \"<human-readable message>\" }`.\n* `401` responses from the authentication layer have a plain-text body (`Unauthorized`), not JSON.\n\n| Status | Meaning |\n|---|---|\n| `400` | Missing/invalid parameter, or no content for the given id |\n| `401` | Missing, malformed, expired, or standby-minted token; invalid session credentials |\n| `404` | Mix not found |\n| `500` | Internal error — retry with backoff, then contact FitRadio |\n| `503` | Standby failover error — retry with backoff |\n\n# Downloads\n\n* [Raw OpenAPI spec](./openapi.json)\n* [Postman collection](./fitradio-partner-api.postman_collection.json)\n\n\nContact Support:\n Name: FitRadio Partner Support",
            "type": "text/plain"
        }
    }
}