Chia Health Settlements API
Synthetic settlement fixtures in sandbox. Production returns only immutable, append-only statement revisions explicitly released by Finance.
Synthetic settlement fixtures in sandbox. Production returns only immutable, append-only statement revisions explicitly released by Finance.
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/chia-health:chia-health-settlements-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: Chia Health Settlements API
version: 2.1.0
contact:
name: Named Chia integration support contact in the signed onboarding receipt
license:
name: Proprietary API contract
description: 'Operations tagged Settlements across 2 of this provider''s published API definitions: chia-health-openapi.yaml, chia-health-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.sandbox.invalid
description: Intentionally non-resolving sandbox contract placeholder — synthetic data only. Use the exact HTTPS origin in the signed onboarding package.
- url: https://api.production.invalid
description: Intentionally non-resolving gated-production contract placeholder. Use the exact HTTPS origin and separate chia_live_ runtime and chia_live_finance_ finance credentials from signed onboarding. Credentials alone do not activate catalog or handoff.
security:
- bearerAuth: []
tags:
- name: Settlements
description: Synthetic settlement fixtures in sandbox. Production returns only immutable, append-only statement revisions explicitly released by Finance.
paths:
/v2/settlement_summaries:
get:
operationId: listSettlementSummaries
tags:
- Settlements
summary: List environment-authorized settlement presentations
description: Requires the separate environment finance credential. Only opaque cursor pagination is supported; patient, order, payment-level, shipment, program, geography, event, date-row, status, time-range, expansion, and line-item filters do not exist. Sandbox returns documented synthetic fixtures. Production returns only closed, immutable statement revisions that Finance explicitly authored and released for this credential-bound partner and environment. Corrections append a new revision and point to the prior release with supersedes_id; a release is never mutated. Amounts, due/paid status, and timestamps come only from the Finance-authored release record. Aggregate activity is nullable and a count is exposed only after the internal threshold and composition approvals pass; those internal proofs are never projected. Production never reads live activity or synthesizes liability, due, paid, count, or statement state from configuration, runtime events, or the wall clock.
parameters:
- name: limit
in: query
required: false
description: Number of summaries, newest fixed reporting window first.
schema:
type: integer
minimum: 1
maximum: 25
default: 10
- name: starting_after
in: query
required: false
description: Authenticated opaque cursor from next_cursor. It expires 24 hours after issue and carries no client-readable business fields. On cursor_expired, restart without starting_after and reconcile immutable revisions by id, revision, and supersedes_id.
schema:
type: string
pattern: ^cur_[A-Za-z0-9_-]{16,252}$
responses:
'200':
description: Sandbox synthetic fixtures or Finance-released immutable production statement revisions.
headers:
Chia-Request-Id:
$ref: '#/components/headers/RequestId'
Chia-Version:
$ref: '#/components/headers/Version'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
Cache-Control:
schema:
type: string
const: private, max-age=60
Vary:
schema:
type: string
const: Authorization
content:
application/json:
schema:
$ref: '#/components/schemas/SettlementList'
examples:
sandbox:
value:
object: list
data:
- id: set_01K0M9A3D0R5F7H9K2N4Q6S8V0
object: settlement_summary
service_fee:
statement_id: fee_01K0M9B4E1S6G8J0L3P5R7T9W1
period:
start: '2026-06-01'
end: '2026-07-01'
timezone: UTC
status: finalized
payer:
name: Chia Sandbox Services, Inc. (synthetic fixture)
payee:
name: Example Partner
fixed_service_fee:
amount: 250000
currency: USD
amount_paid:
amount: 0
currency: USD
amount_due_to_partner:
amount: 250000
currency: USD
payable_on: '2026-07-31'
paid_at: null
terms_version: terms_01K0M9C5F2T7H9K1N4Q6S8V0X2
as_of: '2026-07-08T00:00:00Z'
aggregate_activity:
release_id: act_01K0M9D6G3V8J0L2P5R7T9W1Y3
period:
start: '2026-05-01'
end: '2026-07-01'
timezone: UTC
aggregate_initial_purchase_count: 42
as_of: '2026-07-08T00:00:00Z'
has_more: false
next_cursor: null
livemode: false
production_finance_released_revision:
value:
object: list
data:
- id: set_01K0R2A3B4C5D6E7F8G9H0J1K2
object: settlement_summary
revision: 1
supersedes_id: null
released_at: '2026-07-22T18:00:00Z'
service_fee:
statement_id: fee_01K0R2B4C5D6E7F8G9H0J1K2M3
period:
start: '2026-06-01'
end: '2026-07-01'
timezone: UTC
status: finalized
payer:
name: Chia Health, Inc.
payee:
name: Example Partner
fixed_service_fee:
amount: 250000
currency: USD
amount_paid:
amount: 0
currency: USD
amount_due_to_partner:
amount: 250000
currency: USD
payable_on: '2026-07-31'
paid_at: null
terms_version: terms_01K0R2C5D6E7F8G9H0J1K2M3N4
as_of: '2026-07-22T18:00:00Z'
aggregate_activity:
release_id: act_01K0R2D6E7F8G9H0J1K2M3N4P5
period:
start: '2026-06-01'
end: '2026-07-01'
timezone: UTC
aggregate_initial_purchase_count: null
suppression_reason: below_minimum_group_size
minimum_group_size: 10
as_of: '2026-07-22T18:00:00Z'
has_more: false
next_cursor: null
livemode: true
'400':
$ref: '#/components/responses/InvalidRequest'
'401':
$ref: '#/components/responses/AuthenticationError'
'403':
$ref: '#/components/responses/PermissionError'
'405':
$ref: '#/components/responses/MethodNotAllowedGet'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/Unavailable'
servers:
- url: https://api.sandbox.invalid
description: Intentionally non-resolving sandbox contract placeholder — synthetic data only. Use the exact HTTPS origin in the signed onboarding package.
- url: https://api.production.invalid
description: Intentionally non-resolving gated-production contract placeholder. Use the exact HTTPS origin and separate chia_live_ runtime and chia_live_finance_ finance credentials from signed onboarding. Credentials alone do not activate catalog or handoff.
components:
headers:
NoStore:
description: Partner API errors and mutation responses are never cacheable.
required: true
schema:
type: string
const: no-store
RateLimitReset:
description: Seconds until the current limit resets.
required: true
schema:
type: integer
minimum: 0
RequestId:
description: Authoritative server-generated request identifier.
required: true
schema:
type: string
pattern: ^req_[A-Za-z0-9]{8,64}$
AllowGet:
description: The only method accepted by this resource.
required: true
schema:
type: string
const: GET
RetryAfter:
description: Seconds before retrying.
required: true
schema:
type: integer
minimum: 1
RateLimitLimit:
description: Credential/partner request budget.
required: true
schema:
type: integer
minimum: 0
RateLimitRemaining:
description: Requests remaining in the current window.
required: true
schema:
type: integer
minimum: 0
Version:
description: Credential-pinned API behavior version.
required: true
schema:
type: string
const: '2026-07-22'
WWWAuthenticate:
description: Bearer authentication challenge for the Partner API.
required: true
schema:
type: string
const: Bearer realm="chia-partner-api"
responses:
Unavailable:
description: A safe dependency failed before the operation could commit.
headers:
Chia-Request-Id:
$ref: '#/components/headers/RequestId'
Chia-Version:
$ref: '#/components/headers/Version'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
Cache-Control:
$ref: '#/components/headers/NoStore'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
partner_program_unavailable:
value:
error:
type: api_error
code: partner_program_unavailable
message: The partner care program is not currently available.
param: null
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: true
settlement_summaries_unavailable:
value:
error:
type: api_error
code: settlement_summaries_unavailable
message: Settlement summaries are temporarily unavailable.
param: null
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: true
rate_limiter_unavailable:
value:
error:
type: api_error
code: rate_limiter_unavailable
message: The request cannot be accepted right now.
param: null
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: true
webhook_queue_unavailable:
value:
error:
type: api_error
code: webhook_queue_unavailable
message: The synthetic webhook could not be queued.
param: null
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: true
PermissionError:
description: The credential lacks the operation's exact environment or scope.
headers:
Chia-Request-Id:
$ref: '#/components/headers/RequestId'
Chia-Version:
$ref: '#/components/headers/Version'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
Cache-Control:
$ref: '#/components/headers/NoStore'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
insufficient_scope:
value:
error:
type: permission_error
code: insufficient_scope
message: The API key lacks the required scope.
param: null
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: false
MethodNotAllowedGet:
description: The resource accepts GET only.
headers:
Chia-Request-Id:
$ref: '#/components/headers/RequestId'
Chia-Version:
$ref: '#/components/headers/Version'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
Cache-Control:
$ref: '#/components/headers/NoStore'
Allow:
$ref: '#/components/headers/AllowGet'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
InvalidRequest:
description: Malformed JSON, unknown query/input field, invalid parameter, or unsupported media type.
headers:
Chia-Request-Id:
$ref: '#/components/headers/RequestId'
Chia-Version:
$ref: '#/components/headers/Version'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
Cache-Control:
$ref: '#/components/headers/NoStore'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalid_request:
value:
error:
type: invalid_request_error
code: invalid_request
message: The request could not be processed.
param: null
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: false
invalid_idempotency_key:
value:
error:
type: invalid_request_error
code: invalid_idempotency_key
message: Idempotency-Key must be a random UUIDv4.
param: Idempotency-Key
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: false
invalid_cursor:
value:
error:
type: invalid_request_error
code: invalid_cursor
message: starting_after is not a valid production cursor.
param: starting_after
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: false
cursor_expired:
value:
error:
type: invalid_request_error
code: cursor_expired
message: starting_after has expired; restart pagination without it.
param: starting_after
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: false
RateLimited:
description: Per-partner or per-credential limit exceeded.
headers:
Chia-Request-Id:
$ref: '#/components/headers/RequestId'
Chia-Version:
$ref: '#/components/headers/Version'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
Retry-After:
$ref: '#/components/headers/RetryAfter'
Cache-Control:
$ref: '#/components/headers/NoStore'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
rate_limit_exceeded:
value:
error:
type: rate_limit_error
code: rate_limit_exceeded
message: Too many requests were made. Retry after the indicated delay.
param: null
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: true
AuthenticationError:
description: Missing, invalid, expired, revoked, or wrong-environment credential.
headers:
Chia-Request-Id:
$ref: '#/components/headers/RequestId'
Chia-Version:
$ref: '#/components/headers/Version'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
Cache-Control:
$ref: '#/components/headers/NoStore'
WWW-Authenticate:
$ref: '#/components/headers/WWWAuthenticate'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalid_api_key:
value:
error:
type: authentication_error
code: invalid_api_key
message: The API key is missing or invalid.
param: null
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: false
InternalError:
description: Unexpected error with no internal details exposed.
headers:
Chia-Request-Id:
$ref: '#/components/headers/RequestId'
Chia-Version:
$ref: '#/components/headers/Version'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
Cache-Control:
$ref: '#/components/headers/NoStore'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
internal_error:
value:
error:
type: api_error
code: internal_error
message: The request could not be completed.
param: null
request_id: req_01K0N2A3B4C5D6E7F8G9H0J1K2
retryable: true
schemas:
LegacyAggregateActivity:
type: object
additionalProperties: false
required:
- release_id
- period
- aggregate_initial_purchase_count
- as_of
properties:
release_id:
type: string
pattern: ^act_[A-Za-z0-9]{8,64}$
period:
$ref: '#/components/schemas/Period'
aggregate_initial_purchase_count:
type: integer
minimum: 1
maximum: 9007199254740991
as_of:
type: string
format: date-time
Error:
type: object
additionalProperties: false
required:
- type
- code
- message
- param
- request_id
- retryable
properties:
type:
type: string
enum:
- invalid_request_error
- authentication_error
- permission_error
- conflict_error
- rate_limit_error
- api_error
code:
type: string
pattern: ^[a-z][a-z0-9_]{2,63}$
message:
type: string
minLength: 1
maxLength: 240
param:
type:
- string
- 'null'
maxLength: 80
request_id:
type: string
pattern: ^req_[A-Za-z0-9]{8,64}$
retryable:
type: boolean
SettlementSummary:
type: object
additionalProperties: false
description: 'One closed settlement projection. Sandbox rows are synthetic 2.0-compatible fixtures. Every production row is a distinct immutable Finance release: id identifies that release, revision is the Finance-authored statement revision, supersedes_id links a correction to the immediately prior release, and released_at records the release decision. The public object contains no patient, order, payment-level, shipment, program, geography, event, or date-row data.'
allOf:
- if:
required:
- revision
properties:
revision:
const: 1
then:
properties:
supersedes_id:
type: 'null'
else:
properties:
supersedes_id:
type: string
pattern: ^set_[A-Za-z0-9]{8,64}$
required:
- id
- object
- service_fee
- aggregate_activity
properties:
id:
type: string
pattern: ^set_[A-Za-z0-9]{8,64}$
object:
const: settlement_summary
revision:
type: integer
minimum: 1
maximum: 9007199254740991
description: Required in production. Finance-authored immutable revision number for this logical statement.
supersedes_id:
type:
- string
- 'null'
pattern: ^set_[A-Za-z0-9]{8,64}$
description: Required in production. Null for revision 1; otherwise the prior immutable release id corrected by this revision.
released_at:
type: string
format: date-time
description: Required in production. Finance-authored release timestamp; never inferred from request or processing time.
service_fee:
$ref: '#/components/schemas/ServiceFee'
aggregate_activity:
oneOf:
- $ref: '#/components/schemas/AggregateActivity'
- type: 'null'
PrivacyThresholdedAggregateActivity:
type: object
additionalProperties: false
description: Optional released aggregate only. An internal immutable privacy release must prove both the hard minimum group size of 10 and composition approval before a non-null count is projected; those proof fields remain private. Otherwise the count is null with below_minimum_group_size, or aggregate_activity is null.
allOf:
- if:
properties:
aggregate_initial_purchase_count:
type: 'null'
required:
- aggregate_initial_purchase_count
then:
properties:
suppression_reason:
const: below_minimum_group_size
else:
properties:
suppression_reason:
type: 'null'
required:
- release_id
- period
- aggregate_initial_purchase_count
- suppression_reason
- minimum_group_size
- as_of
properties:
release_id:
type: string
pattern: ^act_[A-Za-z0-9]{8,64}$
period:
$ref: '#/components/schemas/Period'
aggregate_initial_purchase_count:
type:
- integer
- 'null'
minimum: 1
maximum: 9007199254740991
suppression_reason:
type:
- string
- 'null'
enum:
- null
- below_minimum_group_size
minimum_group_size:
type: integer
minimum: 10
maximum: 100
description: Finance-released threshold for this aggregate. The Partner API hard floor is 10; a partner-specific approval may require a larger value.
as_of:
type: string
format: date-time
ErrorResponse:
type: object
additionalProperties: false
required:
- error
properties:
error:
$ref: '#/components/schemas/Error'
Period:
type: object
additionalProperties: false
required:
- start
- end
- timezone
properties:
start:
type: string
format: date
end:
type: string
format: date
timezone:
const: UTC
SettlementList:
type: object
additionalProperties: false
allOf:
- if:
properties:
livemode:
const: true
required:
- livemode
then:
properties:
data:
items:
required:
- revision
- supersedes_id
- released_at
properties:
aggregate_activity:
oneOf:
- $ref: '#/components/schemas/PrivacyThresholdedAggregateActivity'
- type: 'null'
oneOf:
- properties:
has_more:
const: true
next_cursor:
type: string
pattern: ^cur_[A-Za-z0-9_-]{16,252}$
- properties:
has_more:
const: false
next_cursor:
type: 'null'
required:
- object
- data
- has_more
- next_cursor
- livemode
properties:
object:
const: list
data:
type: array
maxItems: 25
items:
$ref: '#/components/schemas/SettlementSummary'
has_more:
type: boolean
next_cursor:
type:
- string
- 'null'
pattern: ^cur_[A-Za-z0-9_-]{16,252}$
livemode:
type: boolean
ServiceFee:
type: object
additionalProperties: false
description: Finance-authored statement values only. The API validates and projects this released record; it never calculates fee, due, paid, payable, or paid-at state from live data, configuration, events, or time.
required:
- statement_id
- period
- status
- payer
- payee
- fixed_service_fee
- amount_paid
- amount_due_to_partner
- payable_on
- paid_at
- terms_version
- as_of
properties:
statement_id:
type: string
pattern: ^fee_[A-Za-z0-9]{8,64}$
period:
$ref: '#/components/schemas/Period'
status:
enum:
- finalized
- paid
payer:
$ref: '#/components/schemas/NamedParty'
payee:
$ref: '#/components/schemas/NamedParty'
fixed_service_fee:
$ref: '#/components/schemas/Money'
amount_paid:
$ref: '#/components/schemas/Money'
amount_due_to_partner:
$ref: '#/components/schemas/Money'
payable_on:
type:
- string
- 'null'
format: date
paid_at:
type:
- string
- 'null'
format: date-time
terms_version:
type: string
pattern: ^terms_[A-Za-z0-9]{8,64}$
as_of:
type: string
format: date-time
NamedParty:
type: object
additionalProperties: false
required:
- name
properties:
name:
type: string
minLength: 1
maxLength: 180
AggregateActivity:
oneOf:
- $ref: '#/components/schemas/LegacyAggregateActivity'
- $ref: '#/components/schemas/PrivacyThresholdedAggregateActivity'
Money:
type: object
additionalProperties: false
required:
- amount
- currency
properties:
amount:
type: integer
minimum: 0
maximum: 9007199254740991
currency:
const: USD
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: chia_test_… / chia_test_finance_… / chia_live_… / chia_live_finance_…
description: Environment- and role-bound server credential. Each environment has one runtime key for catalog:read, handoffs:create, and webhooks:test, plus a separately stored finance key for settlements:read. Sandbox and production credentials are never interchangeable.
externalDocs:
description: Human and AI integration guide
url: https://partners.chia.health/
x-refined-from:
- chia-health-openapi.yaml
- chia-health-openapi.yml
x-chia-contract:
api_behavior_version: '2026-07-22'
exact_json_business_operations:
- GET /v2/catalog/items
- POST /v2/handoff-sessions
- GET /v2/settlement_summaries
- POST /v2/webhook_tests
forbidden_resource_classes:
- patient
- session
- order
- payment
- prescription
- fulfillment
- shipment
- support
- outcome
asset_contract: ../assets/v2.contract.yaml
webhook_contract: ../webhooks/v2.asyncapi.yaml
legal_role_boundary:
partner_only_role: paid_marketplace_publisher
partner_forbidden_roles:
- merchant_of_record
- disclosed_collection_agent
- service_seller
- clinical_provider
- pharmacy
- prescriber
- order_agent
billing_and_seller_entities_must_be_chia_controlled_and_legal_approved: true
chia_is_merchant_of_record: true
individual_data_boundary:
accepts_individual_identifiers: false
returns_patient_order_clinical_prescription_fulfillment_shipment_or_outcome_data: false
production_settlement_release_boundary:
source: separate_append_only_finance_authored_release_store
reads_live_activity: false
derives_amount_or_status: false
malformed_release_behavior: fail_closed
corrections: append_new_revision_with_supersedes_id
aggregate_count_requires_internal_threshold_and_composition_release: true
minimum_group_size_floor: 10
internal_privacy_proof_fields_are_public: false
forbidden_projection_dimensions:
- patient
- order
- payment_level
- shipment
- program
- geography
- event
- date_row