Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
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.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/buckybuild-com:buckybuild-com-citations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
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: Bucky Public Citations API
version: 1.2.0
description: 'Public, developer-facing subset of the Bucky API. Curated via the default-deny allowlist in scripts/generate-openapi.ts (BUC-1216).
## Versioning and deprecation
Versions live in the URL path. Every public operation sits under an explicit
version prefix (`/api/v1`, `/api/marketplace/v2`); there is no unversioned
public surface, and no version is selected by header or query parameter.
Within a version we only make additive changes: new endpoints, new optional
request fields, and new response fields. Removing a field, narrowing a type,
tightening validation, or changing an error `code` requires a new version
prefix.
Retirement is signalled on the response, not only in release notes. A
deprecated operation returns `Deprecation` (RFC 9745) with the date the
deprecation took effect, and `Sunset` (RFC 8594) with the date it stops
answering. `Link: ; rel="deprecation"` points at the migration note.
Removal dates are operation-specific. Read the Sunset header and migration note.
`X-Bucky-API-Version` on every response reports the deployed API version.'
servers:
- url: https://buckybuild.com
description: Production
- url: http://localhost:3000
description: Local development
security:
- bearerAuth: []
tags:
- name: Citations
description: Operations under `citations`.
paths:
/api/v1/citations/bylaw-sections:
get:
summary: Read stored bylaw section text
operationId: GetApiV1CitationsBylawSections
tags:
- Citations
description: Resolves bylaw section ids, or a zone plus section numbers, to the stored text and source URL behind a citation. Free. Requires a session, user JWT or `site:read` key. Inactive or superseded sections are hidden and reported in `missing`. Uses the `PUBLIC_READ` bucket.
security:
- apiKeyAuth: []
- bearerAuth: []
parameters:
- name: sectionIds
in: query
required: false
schema:
type: string
description: Comma-separated section UUIDs (max 20).
- name: geoDivisionId
in: query
required: false
schema:
type: string
format: uuid
description: With zoneCode and sectionNumbers.
- name: zoneCode
in: query
required: false
schema:
type: string
minLength: 1
maxLength: 40
description: Zone code, for example C-2.
- name: sectionNumbers
in: query
required: false
schema:
type: string
description: Comma-separated section numbers (max 20).
responses:
'200':
description: Stored bylaw text. Free. Ids that do not resolve are listed in missing; text over the cap sets truncated.
headers:
RateLimit:
description: Current quota state as structured fields, e.g. `"public_read";r=29;t=54` — `r` is requests remaining, `t` is seconds until the window resets.
schema:
type: string
RateLimit-Policy:
description: The quota and window for this bucket, e.g. `"public_read";q=30;w=60` — `q` requests per `w` seconds.
schema:
type: string
RateLimit-Limit:
description: Requests permitted in the current window.
schema:
type: integer
RateLimit-Remaining:
description: Requests left in the current window.
schema:
type: integer
RateLimit-Reset:
description: Seconds until the window resets. Delta-seconds, not a timestamp.
schema:
type: integer
X-Bucky-API-Version:
description: Deployed build version; the URL fixes the contract major.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/BylawSections'
'400':
description: Validation or client error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
headers:
RateLimit:
description: Current quota state as structured fields, e.g. `"public_read";r=29;t=54` — `r` is requests remaining, `t` is seconds until the window resets.
schema:
type: string
RateLimit-Policy:
description: The quota and window for this bucket, e.g. `"public_read";q=30;w=60` — `q` requests per `w` seconds.
schema:
type: string
RateLimit-Limit:
description: Requests permitted in the current window.
schema:
type: integer
RateLimit-Remaining:
description: Requests left in the current window.
schema:
type: integer
RateLimit-Reset:
description: Seconds until the window resets. Delta-seconds, not a timestamp.
schema:
type: integer
X-Bucky-API-Version:
description: Deployed build version; the URL fixes the contract major.
schema:
type: string
'401':
description: Authentication required.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
headers:
RateLimit:
description: Current quota state as structured fields, e.g. `"public_read";r=29;t=54` — `r` is requests remaining, `t` is seconds until the window resets.
schema:
type: string
RateLimit-Policy:
description: The quota and window for this bucket, e.g. `"public_read";q=30;w=60` — `q` requests per `w` seconds.
schema:
type: string
RateLimit-Limit:
description: Requests permitted in the current window.
schema:
type: integer
RateLimit-Remaining:
description: Requests left in the current window.
schema:
type: integer
RateLimit-Reset:
description: Seconds until the window resets. Delta-seconds, not a timestamp.
schema:
type: integer
X-Bucky-API-Version:
description: Deployed build version; the URL fixes the contract major.
schema:
type: string
'403':
description: Insufficient permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
headers:
RateLimit:
description: Current quota state as structured fields, e.g. `"public_read";r=29;t=54` — `r` is requests remaining, `t` is seconds until the window resets.
schema:
type: string
RateLimit-Policy:
description: The quota and window for this bucket, e.g. `"public_read";q=30;w=60` — `q` requests per `w` seconds.
schema:
type: string
RateLimit-Limit:
description: Requests permitted in the current window.
schema:
type: integer
RateLimit-Remaining:
description: Requests left in the current window.
schema:
type: integer
RateLimit-Reset:
description: Seconds until the window resets. Delta-seconds, not a timestamp.
schema:
type: integer
X-Bucky-API-Version:
description: Deployed build version; the URL fixes the contract major.
schema:
type: string
'404':
description: No such resource, or no such route under this version prefix.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
headers:
RateLimit:
description: Current quota state as structured fields, e.g. `"public_read";r=29;t=54` — `r` is requests remaining, `t` is seconds until the window resets.
schema:
type: string
RateLimit-Policy:
description: The quota and window for this bucket, e.g. `"public_read";q=30;w=60` — `q` requests per `w` seconds.
schema:
type: string
RateLimit-Limit:
description: Requests permitted in the current window.
schema:
type: integer
RateLimit-Remaining:
description: Requests left in the current window.
schema:
type: integer
RateLimit-Reset:
description: Seconds until the window resets. Delta-seconds, not a timestamp.
schema:
type: integer
X-Bucky-API-Version:
description: Deployed build version; the URL fixes the contract major.
schema:
type: string
'429':
description: 'Rate limit exceeded (`code: RATE_LIMIT_EXCEEDED`, `retryable: true`). Honour `Retry-After` (seconds). `details.retry_after_ms` is the retry delay in milliseconds; `details.bucket` identifies the bucket.'
headers:
RateLimit:
description: Current quota state as structured fields, e.g. `"public_read";r=29;t=54` — `r` is requests remaining, `t` is seconds until the window resets.
schema:
type: string
RateLimit-Policy:
description: The quota and window for this bucket, e.g. `"public_read";q=30;w=60` — `q` requests per `w` seconds.
schema:
type: string
RateLimit-Limit:
description: Requests permitted in the current window.
schema:
type: integer
RateLimit-Remaining:
description: Requests left in the current window.
schema:
type: integer
RateLimit-Reset:
description: Seconds until the window resets. Delta-seconds, not a timestamp.
schema:
type: integer
X-Bucky-API-Version:
description: Deployed build version; the URL fixes the contract major.
schema:
type: string
Retry-After:
description: Seconds to wait before retrying.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Unexpected server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
headers:
RateLimit:
description: Current quota state as structured fields, e.g. `"public_read";r=29;t=54` — `r` is requests remaining, `t` is seconds until the window resets.
schema:
type: string
RateLimit-Policy:
description: The quota and window for this bucket, e.g. `"public_read";q=30;w=60` — `q` requests per `w` seconds.
schema:
type: string
RateLimit-Limit:
description: Requests permitted in the current window.
schema:
type: integer
RateLimit-Remaining:
description: Requests left in the current window.
schema:
type: integer
RateLimit-Reset:
description: Seconds until the window resets. Delta-seconds, not a timestamp.
schema:
type: integer
X-Bucky-API-Version:
description: Deployed build version; the URL fixes the contract major.
schema:
type: string
components:
schemas:
BylawSections:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
sections:
type: array
items:
type: object
properties:
id:
type: string
sectionNumber:
type:
- string
- 'null'
sectionTitle:
type:
- string
- 'null'
sourceUrl:
type:
- string
- 'null'
contentMarkdown:
type: string
truncated:
type: boolean
required:
- id
- sectionNumber
- sectionTitle
- sourceUrl
- contentMarkdown
- truncated
additionalProperties: false
missing:
type: array
items:
type: object
properties:
kind:
type: string
enum:
- sectionId
- sectionNumber
value:
type: string
required:
- kind
- value
additionalProperties: false
required:
- sections
- missing
additionalProperties: false
ErrorResponse:
type: object
title: ErrorResponse
required:
- error
- code
- category
- status
- retryable
- requestId
- supportId
properties:
error:
type: string
description: Human readable error message.
code:
type: string
description: Stable machine readable error code. Match on this, never on the message text.
examples:
- AUTH_REQUIRED
- INVALID_REQUEST
- NOT_FOUND
- RATE_LIMIT_EXCEEDED
- ANALYSIS_FAILED
- INTERNAL_ERROR
category:
type: string
description: Coarse class of failure, for routing and metrics.
enum:
- AUTHENTICATION
- AUTHORIZATION
- VALIDATION
- NOT_FOUND
- RATE_LIMIT
- CONFLICT
- NETWORK
- SERVER
- UNKNOWN
status:
type: integer
description: HTTP status, repeated in the body for transport-agnostic clients.
retryable:
type: boolean
description: Whether retrying the identical request can succeed. `false` means fix the request; do not back off and retry.
userMessageKey:
type: string
description: i18n key for a message safe to show an end user.
supportId:
type: string
description: Short reference to quote to support, e.g. `SUP-B1F8ACF9`.
requestId:
type: string
minLength: 1
description: Correlates this response with our server logs.
details:
description: Optional structured error details.
oneOf:
- type: string
- type: object
additionalProperties: true
- type: array
items: {}
- type: 'null'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Supabase-issued user JWT: a signed-in session, or one an agent with no browser gets from https://buckybuild.com/auth.md (exchange without `resource`).'
apiKeyAuth:
type: http
scheme: bearer
bearerFormat: API key
description: Developer API key (`bk_live_…` / `bk_test_…`) minted at `/settings/developer`. Scoped; ignored on any path that is not allowlisted. See https://buckybuild.com/auth.md.