Bizzy Stations API
The Stations API from Bizzy — 2 operation(s) for stations.
The Stations API from Bizzy — 2 operation(s) for stations.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/bizzy-fm:bizzy-fm-stations-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Bizzy Public Station Stations API
version: 1.2.0
description: 'Read-only access to Bizzy''s full station catalog and public author information. URL versioning uses /v1/; breaking changes require a new major path. Original JSON URLs remain supported aliases. Deprecation policy: https://bizzy.fm/docs/api-policy; no endpoints are currently deprecated. Future deprecation/removal dates use Deprecation (RFC 9745) and Sunset (RFC 8594). No authentication, administrative methods, raw streams or playback actions. Data may be cached for five minutes; availability is not a live playback guarantee. REST responses expose a real per-instance quota with RateLimit fields, and Retry-After on 429.'
contact:
name: Misha Naer
email: hi@mishanaer.com
url: https://bizzy.fm/contact
servers:
- url: https://bizzy.fm
security: []
tags:
- name: Stations
paths:
/v1/stations:
get:
security: []
operationId: findStations
summary: Find Bizzy stations by name or location
description: Search the full backend catalog, including unavailable stations. Empty query lists all stations. Results are sorted by ID, use next_offset for pagination. Query and pagination are bounded; duplicate parameters are rejected. Unknown query parameters are ignored. No API key required. HEAD returns the same headers without a body.
parameters:
- name: query
in: query
required: false
description: Case-insensitive substring of station name or location. Empty lists all stations.
schema:
default: ''
description: Case-insensitive substring of station name or location. Empty lists all stations.
type: string
maxLength: 120
- name: limit
in: query
required: false
description: Maximum number of results, from 1 to 50.
schema:
default: 20
description: Maximum number of results, from 1 to 50.
type: integer
minimum: 1
maximum: 50
- name: offset
in: query
required: false
description: Number of matching stations to skip; results are sorted by ID.
schema:
default: 0
description: Number of matching stations to skip; results are sorted by ID.
type: integer
minimum: 0
maximum: 100000
responses:
'200':
description: A page of matching stations.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
content:
application/json:
schema:
$ref: '#/components/schemas/StationSearch'
'400':
description: Invalid search parameters.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: Only GET and HEAD are supported.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'406':
description: Request application/json or */*.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: This instance's REST quota is exhausted. Wait for Retry-After before retrying.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
Retry-After:
description: Seconds before retrying.
schema:
type: integer
minimum: 1
example: 60
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
description: Backend catalog temporarily unavailable; retry after 60 seconds.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
Retry-After:
description: Seconds before retrying.
schema:
type: integer
minimum: 1
example: 60
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Stations
/v1/stations/{id}:
get:
security: []
operationId: getStation
summary: Read one Bizzy station
description: Get a station by its real catalog UUID, including stations marked unavailable. Share listen_url with people. No API key required. HEAD is supported.
parameters:
- name: id
in: path
required: true
description: UUID from findStations; names are not unique.
schema:
type: string
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
description: Station UUID from the Bizzy catalog. Never invent an ID.
responses:
'200':
description: Public station card.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
content:
application/json:
schema:
$ref: '#/components/schemas/Station'
'404':
description: Station UUID is invalid or the station does not exist.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: Only GET and HEAD are supported.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'406':
description: Request application/json or */*.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: This instance's REST quota is exhausted. Wait for Retry-After before retrying.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
Retry-After:
description: Seconds before retrying.
schema:
type: integer
minimum: 1
example: 60
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
description: Backend catalog temporarily unavailable; retry after 60 seconds.
headers:
Access-Control-Allow-Origin:
description: Public browser reads without credentials are allowed from any origin.
schema:
type: string
const: '*'
Access-Control-Expose-Headers:
description: Response fields browser clients can read, including current quota and Retry-After on errors.
schema:
type: string
example: Bizzy-API-Version, RateLimit, RateLimit-Policy, Retry-After, Link
Bizzy-API-Version:
description: The URL major version served by this response.
schema:
type: string
const: '1'
RateLimit-Policy:
description: Per-instance shared REST quota, Structured Fields per IETF draft-ietf-httpapi-ratelimit-headers-11 (not a finalized RFC).
schema:
type: string
example: '"bizzy-rest-instance";q=3600;w=60'
RateLimit:
description: 'Current instance quota: r is remaining requests, t is seconds to reset. This is not a distributed per-client allowance.'
schema:
type: string
example: '"bizzy-rest-instance";r=3599;t=60'
Retry-After:
description: Seconds before retrying.
schema:
type: integer
minimum: 1
example: 60
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Stations
components:
schemas:
Station:
type: object
properties:
id:
type: string
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
description: Station UUID from the Bizzy catalog. Never invent an ID.
name:
type: string
description: Station name as supplied by the backend.
location:
type: string
description: Backend location, or an empty string if unspecified.
listen_url:
type: string
format: uri
description: Canonical Bizzy listening page to share with a person; not a raw audio stream.
availability:
type: string
enum:
- available
- unavailable
- unknown
description: Backend health flag, not a live playback guarantee.
required:
- id
- name
- location
- listen_url
- availability
additionalProperties: false
StationSearch:
type: object
properties:
stations:
maxItems: 50
type: array
items:
type: object
properties:
id:
type: string
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
description: Station UUID from the Bizzy catalog. Never invent an ID.
name:
type: string
description: Station name as supplied by the backend.
location:
type: string
description: Backend location, or an empty string if unspecified.
listen_url:
type: string
format: uri
description: Canonical Bizzy listening page to share with a person; not a raw audio stream.
availability:
type: string
enum:
- available
- unavailable
- unknown
description: Backend health flag, not a live playback guarantee.
required:
- id
- name
- location
- listen_url
- availability
additionalProperties: false
total:
type: integer
minimum: 0
maximum: 9007199254740991
description: Number of matches in the full backend catalog, including unavailable stations.
limit:
type: integer
minimum: 1
maximum: 50
offset:
type: integer
minimum: 0
maximum: 100000
next_offset:
anyOf:
- type: integer
minimum: 0
maximum: 9007199254740991
- type: 'null'
description: Next page offset, or null at the end. Catalog changes can move results between pages.
required:
- stations
- total
- limit
- offset
- next_offset
additionalProperties: false
Error:
type: object
required:
- error
additionalProperties: false
properties:
error:
type: object
required:
- code
- message
additionalProperties: false
properties:
code:
type: string
message:
type: string
catalog_url:
type: string
format: uri
about_url:
type: string
format: uri
externalDocs:
description: Bizzy API and MCP documentation
url: https://bizzy.fm/docs
x-versioning:
strategy: url-path
currentMajor: 1
policy: https://bizzy.fm/docs/api-policy
deprecated: false