BioFlow Files API
The Files API from BioFlow — 1 operation(s) for files.
The Files API from BioFlow — 1 operation(s) for files.
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/getbioflow-com:getbioflow-com-files-api"
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.
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: BioFlow Files API
version: 1.0.0
description: 'The BioFlow public REST API. Authenticate with a bf_live_/bf_test_ API key — as `Authorization: Bearer ` or `x-api-key: `. Errors are RFC 9457 problem+json with a stable `code`.'
contact:
email: support@getbioflow.com
servers:
- url: https://app.getbioflow.com
security:
- apiKeyBearer: []
- apiKeyHeader: []
tags:
- name: Files
paths:
/v1/files:
get:
operationId: listFiles
summary: List files
description: 'The workspace''s uploaded files (name, MIME type, size, public path), newest first. Pass a file''s public_path as file_url to Add block to wire it into IMAGE/FILE/CAROUSEL/PRODUCT blocks.
Requires scope: files:read. Plan entitlement: public_api (Creator and Pro).'
security:
- apiKeyBearer: []
- apiKeyHeader: []
x-scopes:
- files:read
x-entitlement: public_api
x-meter-cost: 1
x-idempotent: false
parameters:
- in: query
name: limit
schema:
default: 25
type: integer
minimum: 1
maximum: 100
- in: query
name: after
schema:
description: Opaque cursor from a previous response
type: string
description: Opaque cursor from a previous response
responses:
'200':
description: A page of files
headers:
X-Request-Id:
description: Unique request identifier — quote it in support requests.
schema:
type: string
example: req_01abc
RateLimit-Policy:
description: IETF draft-11 rate-limit policy (structured field).
schema:
type: string
RateLimit:
description: IETF draft-11 rate-limit state (structured field).
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/FileList'
'400':
description: Validation failed (invalid_request)
headers:
X-Request-Id:
description: Unique request identifier — quote it in support requests.
schema:
type: string
example: req_01abc
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
'401':
description: Missing or invalid API key (invalid_api_key)
headers:
X-Request-Id:
description: Unique request identifier — quote it in support requests.
schema:
type: string
example: req_01abc
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
'403':
description: 'Denied: insufficient_scope, feature_not_enabled, or test_key_read_only'
headers:
X-Request-Id:
description: Unique request identifier — quote it in support requests.
schema:
type: string
example: req_01abc
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
'429':
description: 'Rate limited: rate_limited (per-key burst) or quota_exhausted (monthly)'
headers:
X-Request-Id:
description: Unique request identifier — quote it in support requests.
schema:
type: string
example: req_01abc
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
'500':
description: Unexpected failure (internal_error)
headers:
X-Request-Id:
description: Unique request identifier — quote it in support requests.
schema:
type: string
example: req_01abc
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
tags:
- Files
components:
schemas:
File:
type: object
properties:
id:
type: string
name:
type: string
mime_type:
type: string
public_path:
type: string
download_path:
type: string
size_bytes:
type: integer
minimum: 0
maximum: 9007199254740991
created_at:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
example: '2026-07-20T12:00:00.000Z'
required:
- id
- name
- mime_type
- public_path
- download_path
- size_bytes
- created_at
additionalProperties: false
Problem:
type: object
properties:
type:
type: string
description: Docs URL, https://getbioflow.com/docs/api/errors/<code>
title:
type: string
description: Human summary — never parse
status:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
description: HTTP status, mirrored in the body
detail:
description: Human detail — never parse
type: string
instance:
type: string
example: urn:request:req_01abc
code:
type: string
enum:
- invalid_request
- invalid_api_key
- insufficient_scope
- feature_not_enabled
- test_key_read_only
- resource_not_found
- stale_snapshot
- idempotency_in_progress
- idempotency_key_reused
- endpoint_verification_failed
- endpoint_limit_reached
- rate_limited
- quota_exhausted
- internal_error
description: The stable machine-readable code — branch on this
request_id:
type: string
example: req_01abc
errors:
description: Field-level validation errors (400 only)
type: array
items:
type: object
properties:
pointer:
type: string
example: /title
code:
type: string
message:
type: string
required:
- pointer
- code
- message
additionalProperties: false
required:
- type
- title
- status
- instance
- code
- request_id
additionalProperties: false
description: RFC 9457 problem details
FileList:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/File'
has_more:
type: boolean
next_cursor:
type:
- string
- 'null'
required:
- data
- has_more
- next_cursor
additionalProperties: false
securitySchemes:
apiKeyBearer:
type: http
scheme: bearer
description: API key (bf_live_… / bf_test_…) as a Bearer token.
apiKeyHeader:
type: apiKey
in: header
name: x-api-key
description: API key (bf_live_… / bf_test_…) in the x-api-key header.
x-bioflow-problems:
- code: invalid_request
status: 400
title: The request body or parameters failed validation
type: https://getbioflow.com/docs/api/errors/invalid-request
- code: invalid_api_key
status: 401
title: Missing, malformed, unknown, disabled, or expired API key
type: https://getbioflow.com/docs/api/errors/invalid-api-key
- code: insufficient_scope
status: 403
title: The API key was not granted the required scope
type: https://getbioflow.com/docs/api/errors/insufficient-scope
- code: feature_not_enabled
status: 403
title: The workspace plan does not include public API access
type: https://getbioflow.com/docs/api/errors/feature-not-enabled
- code: test_key_read_only
status: 403
title: Test-mode keys are restricted to read operations
type: https://getbioflow.com/docs/api/errors/test-key-read-only
- code: resource_not_found
status: 404
title: No resource with that ID exists in this workspace
type: https://getbioflow.com/docs/api/errors/resource-not-found
- code: stale_snapshot
status: 409
title: The draft changed since it was last read
type: https://getbioflow.com/docs/api/errors/stale-snapshot
- code: idempotency_in_progress
status: 409
title: A request with this Idempotency-Key is still executing
type: https://getbioflow.com/docs/api/errors/idempotency-in-progress
- code: idempotency_key_reused
status: 422
title: This Idempotency-Key was already used with a different request
type: https://getbioflow.com/docs/api/errors/idempotency-key-reused
- code: endpoint_verification_failed
status: 422
title: The webhook endpoint did not accept the signed test event
type: https://getbioflow.com/docs/api/errors/endpoint-verification-failed
- code: endpoint_limit_reached
status: 422
title: The workspace webhook endpoint limit was reached
type: https://getbioflow.com/docs/api/errors/endpoint-limit-reached
- code: rate_limited
status: 429
title: Per-key rate limit exceeded
type: https://getbioflow.com/docs/api/errors/rate-limited
- code: quota_exhausted
status: 429
title: Monthly API quota exhausted
type: https://getbioflow.com/docs/api/errors/quota-exhausted
- code: internal_error
status: 500
title: Something went wrong on our side
type: https://getbioflow.com/docs/api/errors/internal-error
x-provenance:
method: harvested
publisher: BioFlow
source: https://getbioflow.com/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)