Corpus Browse API
Walk code bodies and read individual provisions.
Walk code bodies and read individual provisions.
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/corpuslaw-us:corpuslaw-us-browse-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: Corpuslaw Us Browse API
version: 1.0.0
contact:
name: Corpus
url: https://corpuslaw.us
license:
name: Proprietary
description: 'Operations tagged Browse across 2 of this provider''s published API definitions: corpuslaw-us-openapi.json, corpuslaw-us-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://corpuslaw.us
description: Production
security:
- bearerAuth: []
tags:
- name: Browse
description: Walk code bodies and read individual provisions.
paths:
/api/v1/node/{id}:
get:
operationId: getNode
summary: Fetch one provision by id
description: Full text, citation, and ancestor hierarchy for a single codex node. Get the id from a search result's `nodeId`. (Costs 1 credit.)
tags:
- Browse
responses:
'200':
description: Success
headers:
X-Credits-Remaining:
$ref: '#/components/headers/XCreditsRemaining'
X-RateLimit-Limit:
$ref: '#/components/headers/XRateLimitLimit'
content:
application/json:
schema:
type: object
example:
id: uuid
citation: Miss. Code § 67-1-5
heading: Definitions
text: …
breadcrumb:
- Title 67
- …
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/InsufficientCredits'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/RateLimited'
parameters:
- name: id
in: path
required: true
description: UUID of the codex node.
schema:
type: string
example: 089a2104-d704-4e93-8072-5bbbabc7ace6
security:
- bearerAuth:
- node
servers:
- url: https://corpuslaw.us
description: Production
/api/v1/code-bodies:
get:
operationId: listCodeBodies
summary: List code bodies
description: Every code body (e.g. 'Mississippi Code', 'US Code'). Use a returned id with /api/v1/browse to walk its hierarchy. (Costs 1 credit.)
tags:
- Browse
responses:
'200':
description: Success
headers:
X-Credits-Remaining:
$ref: '#/components/headers/XCreditsRemaining'
X-RateLimit-Limit:
$ref: '#/components/headers/XRateLimitLimit'
content:
application/json:
schema:
type: object
example:
codeBodies:
- id: uuid
name: Mississippi Code
jurisdiction: MS
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/InsufficientCredits'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/RateLimited'
security:
- bearerAuth:
- browse
servers:
- url: https://corpuslaw.us
description: Production
/api/v1/browse:
get:
operationId: browse
summary: Walk a code body's hierarchy
description: List the immediate children of a code body (or of a parent node within it) — titles, chapters, sections. (Costs 1 credit.)
tags:
- Browse
responses:
'200':
description: Success
headers:
X-Credits-Remaining:
$ref: '#/components/headers/XCreditsRemaining'
X-RateLimit-Limit:
$ref: '#/components/headers/XRateLimitLimit'
content:
application/json:
schema:
type: object
example:
nodes:
- id: uuid
heading: Chapter 1
citation: § 1
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/InsufficientCredits'
'403':
$ref: '#/components/responses/Forbidden'
'422':
$ref: '#/components/responses/ValidationError'
'429':
$ref: '#/components/responses/RateLimited'
parameters:
- name: codeBodyId
in: query
required: true
description: UUID of the code body (from /api/v1/code-bodies).
schema:
type: string
- name: parent
in: query
required: false
description: Optional parent node UUID; omit for top-level.
schema:
type: string
security:
- bearerAuth:
- browse
servers:
- url: https://corpuslaw.us
description: Production
components:
schemas:
Error:
type: object
required:
- error
- message
properties:
error:
type: string
description: Machine-readable error code.
example: insufficient_credits
message:
type: string
description: Human-readable explanation with a recovery hint.
upgradeUrl:
type: string
description: Where to buy more credits (present on 402).
retryAfterSec:
type: integer
description: Seconds to wait before retrying (present on 429).
headers:
XRateLimitLimit:
description: Requests-per-minute ceiling for this key's tier.
schema:
type: integer
XCreditsRemaining:
description: Credits left on this key after the call.
schema:
type: integer
responses:
InsufficientCredits:
description: No credits remaining.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: insufficient_credits
message: You have no credits remaining. Buy credits to continue.
upgradeUrl: https://corpuslaw.us/api/v1/billing/checkout
RateLimited:
description: Rate limit exceeded. Respect `Retry-After`.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: rate_limited
message: Rate limit exceeded. Try again in 60 seconds.
retryAfterSec: 60
ValidationError:
description: A required parameter is missing or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: validation_error
message: The 'q' parameter is required.
Unauthorized:
description: Missing or invalid API key.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: invalid_api_key
message: 'A valid API key is required. Pass it via the Authorization: Bearer <key> header.'
Forbidden:
description: Key lacks the required scope.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: insufficient_scope
message: This key does not have any of the required scopes.
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'Pass your key as `Authorization: Bearer <api_key>`. Header only — query-param auth is disabled in production.'
x-refined-from:
- corpuslaw-us-openapi.json
- corpuslaw-us-openapi.yml