Overview
The Axiom API is the rule-native HTTP interface for searching, retrieving, explaining, and executing Axiom RuleSpecs — machine-readable encodings of statutes, regulations, and agency policy, with provenance back to the legal source.
| Environment | Base URL |
|---|---|
| Production | https://api.axiom-foundation.org |
| Staging | https://axiom-api-pavelmakarchuk-policy-engine.vercel.app (behind deployment protection) |
https://axiom-api-eta.vercel.app remains a legacy alias of the same production deployment.
- All endpoints live under
/v1; breaking changes require a new version namespace. - Request and response bodies are JSON. The OpenAPI 3.1 contract is served at
/v1/openapi.jsonwithout a key. - Every response carries an
x-request-idheader; send your own to have it echoed and stamped intometa.request_id. Quote it when reporting issues. - Responses are
cache-control: no-store— do not cache beyond immediate use.
Quickstart
1 — Get an API key. Issue yourself a trial key — no signup, expires in 14 days, scoped to reads and calculation. Durable keys are issued by Axiom administrators. Store it in a secret manager; the server keeps only a hash.
curl -s -X POST https://api.axiom-foundation.org/v1/keys/trial
export AXIOM_API_KEY="axiom_..." # from the response's data.keyexport AXIOM_API_KEY="axiom_..."2 — Discover what is executable. Never hardcode program ids; list the runtime packages and read each package’s inputs, outputs, and ready-to-run sample_request:
curl -s https://api.axiom-foundation.org/v1/runtime/packages \
-H "x-api-key: $AXIOM_API_KEY"3 — Calculate. Post a household to /v1/calculate. The response returns outputs for the variables you requested plus a trace attributing every value to the RuleSpec rule that produced it. You can also paste a key into the field in the header above and run every example on this page live with the Try it tab.
Authentication & scopes
All /v1 endpoints except /v1/health, /v1/ready, /v1/version, /v1/openapi.json, and /v1/keys/trial require an API key, in either header (if both are present, x-api-key wins):
x-api-key: <key>
Authorization: Bearer <key>Every key carries scopes; * passes every check. A key that authenticates but lacks the required scope receives 403 insufficient_scope. A missing, unknown, expired, or revoked key receives 401 unauthorized — the response deliberately does not distinguish those cases.
| Scope | Grants |
|---|---|
rules:read | capabilities, programs, runtime packages, search, rule detail |
sources:read | rule source references |
graphs:read | rule dependency graphs |
calculate:run | household calculation |
admin:parity | parity cases and runs |
admin:analytics | usage analytics |
admin:keys | key listing and runtime revocation |
Any /v1 route not listed defaults to requiring rules:read.
No key yet? Issue yourself a trial key — no signup, 14-day expiry, rules:read + sources:read + graphs:read + calculate:run, 30 requests/minute. Durable keys and the admin:* scopes are issued by administrators.
Response envelope
Every JSON response uses one envelope. meta.request_id echoes your x-request-id header when provided, otherwise it is a server-generated UUID. meta.environment is one of local, dev, staging, production.
{
"status": "ok",
"data": {
"\u2026": "\u2026"
},
"meta": {
"request_id": "0f1a6c89-be3c-48e5-81ed-b9df5b166d71",
"api_version": "0.1.0",
"environment": "production"
}
}{
"status": "error",
"error": {
"code": "unauthorized",
"message": "A valid API key is required."
},
"meta": {
"request_id": "c99be9cf-a85b-4590-8045-22232efb79fe",
"api_version": "0.1.0",
"environment": "staging"
}
}An optional data object carries machine-readable detail, e.g. retry_after_seconds on 429s.
Errors
| HTTP | error.code | Meaning |
|---|---|---|
| 400 | invalid_request | Malformed JSON, missing/invalid field, or an input over its cap; the message states the exact constraint. |
| 400 | invalid_household | Calculate household failed runtime validation (e.g. missing household size, negative income). |
| 401 | unauthorized | Missing, unknown, expired, or revoked API key. |
| 403 | insufficient_scope | Key lacks the required scope; the message names it. |
| 404 | not_found | Unknown rule id, runtime package, key id, or route. |
| 413 | payload_too_large | Body exceeds the byte limit (default 262,144 bytes). |
| 400 | unsupported_parameter | A reserved query parameter (currently as_of, for point-in-time retrieval) was supplied but is not yet supported. |
| 422 | unsupported_program | No configured runtime package matches program_id/jurisdiction. |
| 429 | rate_limited | Per-key rate limit exceeded. |
| 429 | auth_throttled | Too many failed authentication attempts from your client. |
| 500 | internal_error | Unexpected server error; message is always generic — quote meta.request_id. |
| 502 | runtime_error | The calculation engine failed or timed out. |
| 503 | not_ready | /v1/ready only: a dependency is degraded or unavailable. |
| 503 | auth_not_configured | API-key auth required but no keys configured server-side. |
| 503 | store_unavailable | Admin operation needed the shared store and it was unreachable. |
{
"status": "error",
"error": {
"code": "invalid_request",
"message": "`query` must be at least 2 characters."
},
"meta": {
"request_id": "73106aa7-cd86-4f0f-a18c-6a1a63d98f93",
"api_version": "0.1.0",
"environment": "staging"
}
}From POST /v1/search with {{"query":"x"}}: one character violates the two-character minimum.
Rate limits & throttling
Per-key rate limits. Each key has a fixed-window limit (default 120 requests / 60 s; per-key overrides set at issuance), shared across all API instances. Every authenticated response includes:
x-ratelimit-limit: 120
x-ratelimit-remaining: 118
x-ratelimit-reset: 1782941434x-ratelimit-reset is a Unix timestamp (seconds) for the end of the current window. Exceeding the limit returns 429 rate_limited with a retry-after header and data.retry_after_seconds. Back off until the window resets.
Failed-auth throttling. After 20 failed authentication attempts within 300 seconds from one client (first x-forwarded-for hop), all further requests from that client — including ones with a valid key — receive 429 auth_throttled until the window expires. Successful authentication never counts toward the throttle.
Request limits & CORS
| Limit | Value | On violation |
|---|---|---|
| Request body size | 262,144 bytes (256 KiB) | 413 payload_too_large |
query length | 2–500 characters | 400 invalid_request |
program_id, jurisdiction | ≤ 120 characters | 400 invalid_request |
variables | ≤ 100 strings, each ≤ 200 chars | 400 invalid_request |
limit (search) | clamped to 1–50, default 20; must be finite | clamped; non-finite → 400 |
CORS is disabled by default: no access-control-* headers are emitted, so third-party browser origins cannot call the API (this page can — it is served from the same origin). Server-to-server clients are unaffected. Browser use cases require the operators to allowlist your origin; preflights then permit GET/POST with content-type, authorization, x-api-key, and x-request-id, and expose the request-id and rate-limit headers.
Endpoints
Every response example below is a real recorded exchange (values reflect the environment’s configured rule index and runtime; response shapes are stable). With an API key in the header field above, the Try it tab runs each request live against api.axiom-foundation.org from this page — same origin, no CORS involved. Keys are kept in session storage only.
GET/v1/healthpublic
Liveness probe: 200 whenever the process serves requests. No dependency checks.
curl -s https://api.axiom-foundation.org/v1/healthconst res = await fetch("https://api.axiom-foundation.org/v1/health");
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/health",
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"service": "axiom-api",
"live": true
},
"meta": {
"request_id": "f85c3d38-4fe2-4966-8f61-69ccef138fb9",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/readypublic
Readiness probe checking every dependency: auth configuration, the shared counter store, the rule index, and the calculation runtime. Returns 200 with data.ready: true only when every dependency is ready; otherwise 503 not_ready with the same data shape so you can see exactly which dependency is degraded.
curl -s https://api.axiom-foundation.org/v1/readyconst res = await fetch("https://api.axiom-foundation.org/v1/ready");
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/ready",
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"ready": true,
"status": "ready",
"source": "static-rulespec-index",
"dependencies": [
{
"name": "auth",
"status": "ready",
"detail": "2 configured API keys"
},
{
"name": "counter-store",
"status": "ready",
"detail": "in-memory (per-instance rate limits and analytics)"
},
{
"name": "static-rulespec-index",
"status": "ready",
"detail": "3179 indexed RuleSpec files"
},
{
"name": "fixture-snap-runtime",
"status": "ready",
"detail": "experimental SNAP calculation fixture"
}
]
},
"meta": {
"request_id": "63c8c9a8-85a8-44e8-b96c-53ebf8439fbc",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/versionpublic
Deployed API version and environment.
curl -s https://api.axiom-foundation.org/v1/versionconst res = await fetch("https://api.axiom-foundation.org/v1/version");
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/version",
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"api_version": "0.1.0",
"environment": "staging"
},
"meta": {
"request_id": "fb9614f6-c76f-426f-b380-9012b55d24da",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/openapi.jsonpublic
The complete OpenAPI 3.1 document — the canonical machine-readable contract, suitable for client generation. Served without the response envelope.
curl -s https://api.axiom-foundation.org/v1/openapi.jsonconst res = await fetch("https://api.axiom-foundation.org/v1/openapi.json");
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/openapi.json",
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"])GET/v1/capabilitiesrules:read
Machine-readable manifest for portals and agents: API version, environment, endpoint map, repository source and program count, runtime status, the full package list, and one sample_request per executable package. Poll this instead of hardcoding capabilities.
curl -s https://api.axiom-foundation.org/v1/capabilities \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/capabilities", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/capabilities",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"api_version": "0.1.0",
"environment": "local",
"openapi_url": "/v1/openapi.json",
"endpoints": {
"programs": "/v1/programs",
"search": "/v1/search",
"rules": "/v1/rules/{rule_id}",
"calculate": "/v1/calculate",
"runtime_packages": "/v1/runtime/packages",
"parity_cases": "/v1/parity/cases",
"parity_run": "/v1/parity/run"
},
"repository": {
"source": "static-rulespec-index",
"status": "ready",
"program_count": 41
},
"runtime": {
"name": "compiled-package-runtime",
"status": "ready",
"detail": "9 compiled packages configured",
"package_count": 9,
"packages": [
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"runtime_id": "axiom-rules-engine:co-snap",
"mode": "compiled",
"status": "ready",
"default_outputs": [
"snap_benefit_amount",
"snap_net_income",
"gross_income",
"snap_eligible"
],
"output_count": 168,
"entity_count": 2,
"input_count": 256
},
{
"program_id": "universal-credit",
"jurisdiction": "uk",
"runtime_id": "axiom-rules-engine:uk-universal-credit-fy-2026-27",
"mode": "compiled",
"status": "ready",
"default_outputs": [
"universal_credit_award_amount",
"universal_credit_maximum_amount",
"standard_allowance_amount",
"earned_income_deduction_from_maximum_amount"
],
"output_count": 51,
"entity_count": 3,
"input_count": 88
},
{
"program_id": "snap",
"jurisdiction": "us-al",
"runtime_id": "axiom-rules-engine:us-al-snap",
"mode": "compiled",
"status": "ready",
"default_outputs": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
],
"output_count": 242,
"entity_count": 4,
"input_count": 481
},
{
"program_id": "snap",
"jurisdiction": "us-ca",
"runtime_id": "axiom-rules-engine:us-ca-snap",
"mode": "compiled",
"status": "ready",
"default_outputs": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
],
"output_count": 164,
"entity_count": 4,
"input_count": 295
},
{
"program_id": "snap",
"jurisdiction": "us-nc",
"runtime_id": "axiom-rules-engine:us-nc-snap",
"mode": "compiled",
"status": "ready",
"default_outputs": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
],
"output_count": 1095,
"entity_count": 7,
"input_count": 2467
},
{
"program_id": "snap",
"jurisdiction": "us-ny",
"runtime_id": "axiom-rules-engine:us-ny-snap",
"mode": "compiled",
"status": "ready",
"default_outputs": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
],
"output_count": 125,
"entity_count": 4,
"input_count": 176
},
{
"program_id": "snap",
"jurisdiction": "us-sc",
"runtime_id": "axiom-rules-engine:us-sc-snap",
"mode": "compiled",
"status": "ready",
"default_outputs": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
],
"output_count": 1327,
"entity_count": 6,
"input_count": 2913
},
{
"program_id": "snap",
"jurisdiction": "us-tn",
"runtime_id": "axiom-rules-engine:us-tn-snap",
"mode": "compiled",
"status": "ready",
"default_outputs": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
],
"output_count": 514,
"entity_count": 5,
"input_count": 1151
},
{
"program_id": "snap",
"jurisdiction": "us-az",
"runtime_id": "axiom-rules-engine:us-az-snap",
"mode": "compiled",
"status": "ready",
"default_outputs": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
],
"output_count": 11,
"entity_count": 1,
"input_count": 10
}
],
"sample_requests": [
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"sample_request": {
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"entities": {
"Household": {
"household:1": {
"actual_documented_boarder_room_and_meal_costs": 0,
"all_household_members_experiencing_homelessness": false,
"allowable_self_employment_business_costs_for_period": 0,
"anticipated_capital_gains_next_12_months": 0,
"anticipated_monthly_allowable_self_employment_business_costs": 0,
"anticipated_monthly_self_employment_income": 0,
"application_date": "2026-01-01",
"assistance_payments": 0,
"available_trust_dividends": 0,
"average_monthly_child_support_paid": 0,
"average_rental_property_management_hours_per_week": 0,
"battered_shelter_resident": false,
"boarder_income_is_foster_care_payment": false,
"boarder_payments_for_room_meals_and_shelter_contributions": 0,
"bona_fide_prepaid_funeral_agreement": false,
"break_in_participation_days": 0,
"capital_goods_services_or_property_sale_proceeds_connected_to_self_employment": 0,
"child_support_payment_history_months": 0,
"child_support_payment_verified": false,
"current_household_income": false,
"dependent_care_expense_necessary_for_work_or_training": false,
"dependent_care_expenses_paid": 0,
"dependent_care_reimbursed_or_paid_by_other_program": 0,
"direct_support_and_alimony_payments": 0,
"earned_income_excluding_boarder_net_income": 0
}
},
"Person": {
"person:1:1": {
"adequate_child_care_unavailable_to_attend_class_and_meet_student_work_requirement": false,
"alaska_subsistence_hunts_or_fishes_30_hours_weekly": false,
"alien_status_documentation_missing_or_unwilling": false,
"assigned_or_placed_in_higher_education_through_qualifying_employment_training_program": false,
"co_resident_gross_income": 0,
"elderly_disabled_person_unable_to_purchase_and_prepare_meals": false,
"enrolled_at_least_half_time": false,
"enrolled_in_business_technical_trade_or_vocational_school_requiring_high_school_diploma": false,
"enrolled_in_college_or_university_degree_program": false,
"enrolled_through_jobs_or_successor_program": false,
"federal_minimum_wage": 0,
"federal_or_state_minimum_wage": 0,
"known_student_refused_work_study_assignment": false,
"llc_s_corporation_business_expenses": 0,
"llc_s_corporation_business_income": 0,
"llc_s_corporation_owner_receives_draw": false,
"llc_s_corporation_owner_salary": 0,
"member_abawd_monthly_work_hours": 0,
"member_abawd_weekly_work_hours": 0,
"member_accepted_bona_fide_suitable_employment_offer_if_offered": false,
"member_age": 0,
"member_age_16_or_17_is_not_household_head_or_attends_school_or_training_half_time": false,
"member_age_24_or_younger_and_was_in_foster_care_on_attaining_age_18": false,
"member_combines_work_and_work_program_20_hours_weekly": false,
"member_covered_by_abawd_time_limit_waiver": false
}
}
},
"period": "2026-01"
},
"variables": [
"snap_benefit_amount",
"snap_net_income",
"gross_income",
"snap_eligible"
]
}
},
{
"program_id": "universal-credit",
"jurisdiction": "uk",
"sample_request": {
"program_id": "universal-credit",
"jurisdiction": "uk",
"household": {
"entities": {
"Family": {
"family:1": {
"amount_considered_excessive_having_regard_to_paid_work_extent": 0,
"amount_from_funds_provided_by_secretary_of_state_or_scottish_or_welsh_ministers_for_work_related_activity_or_training": 0,
"amount_met_or_reimbursed_by_employer_or_some_other_person": 0,
"amount_resulting_from_all_other_steps_in_parts_4_and_5_calculation": 0,
"award_contains_housing_costs_element": false,
"award_is_for_joint_claimants": false,
"both_joint_claimants_qualify_for_carer_element": false,
"carer_element_amount": 0,
"charges_paid_for_relevant_childcare_attributable_to_assessment_period": 0,
"childcare_costs_element_child_count": 0,
"claim_is_for_joint_claimants": false,
"claimant_earned_income_in_assessment_period": 0,
"claimant_is_member_of_couple": false,
"claimant_makes_claim_as_single_person": false,
"claimant_responsible_for_child_or_qualifying_young_person": false,
"claimant_unearned_income_in_assessment_period": 0,
"either_joint_claimant_is_aged_25_or_over": false,
"first_joint_claimant_has_limited_capability_for_work_and_work_related_activity": false,
"housing_cost_contribution_count_required_under_paragraph_13_in_renters_case": 0,
"joint_claimants_are_caring_for_the_same_severely_disabled_person": false,
"joint_claimants_combined_earned_income_in_assessment_period": 0,
"joint_claimants_combined_unearned_income_in_assessment_period": 0,
"joint_claimants_responsible_for_child_or_qualifying_young_person": false,
"lcwra_element_amount_given_in_regulation_36_for_first_joint_claimant": 0,
"lcwra_element_amount_given_in_regulation_36_for_second_joint_claimant": 0
}
},
"Person": {
"person:1": {
"calculation_is_under_part_4_or_5_of_schedule": false,
"carer_element_applies": false,
"child_is_first_child_or_qualifying_young_person": false,
"child_is_second_or_subsequent_child_or_qualifying_young_person": false,
"child_or_qualifying_young_person_entitled_to_adult_disability_payment": false,
"child_or_qualifying_young_person_entitled_to_care_component_of_child_disability_payment_at_highest_rate": false,
"child_or_qualifying_young_person_entitled_to_care_component_of_disability_living_allowance_at_highest_rate": false,
"child_or_qualifying_young_person_entitled_to_care_component_of_scottish_adult_disability_living_allowance_at_highest_rate": false,
"child_or_qualifying_young_person_entitled_to_child_disability_payment": false,
"child_or_qualifying_young_person_entitled_to_daily_living_component_of_adult_disability_payment_at_enhanced_rate": false,
"child_or_qualifying_young_person_entitled_to_daily_living_component_of_personal_independence_payment_at_enhanced_rate": false,
"child_or_qualifying_young_person_entitled_to_disability_living_allowance": false,
"child_or_qualifying_young_person_entitled_to_personal_independence_payment": false,
"child_or_qualifying_young_person_entitled_to_scottish_adult_disability_living_allowance": false,
"child_or_qualifying_young_person_is_blind": false,
"claim_is_for_joint_claimants": false,
"claimant_and_other_person_jointly_elect_claimant_has_carer_element_and_other_person_has_no_scottish_carer_benefit_entitlement": false,
"claimant_has_limited_capability_for_work_and_work_related_activity": false,
"claimant_has_regular_and_substantial_caring_responsibilities_for_severely_disabled_person": false,
"claimant_has_shared_ownership_tenancy_in_england_or_wales": false,
"claimant_has_shared_ownership_tenancy_in_scotland": false,
"claimant_is_liable_for_rent_payments": false,
"claimant_is_liable_for_service_charge_payments": false,
"claimant_is_pre_commencement_lcwra_claimant": false,
"claimant_is_severe_conditions_criteria_claimant": false
}
},
"Payment": {
"payment:1": {
"payment_is_relevant_service_charge_payment_taken_into_account_under_paragraph_8": false,
"service_charge_free_period_arrangements_apply_to_payment": false,
"service_charge_free_periods_in_12_month_period": 0,
"service_charge_payment_amount": 0,
"service_charge_payment_period_is_annual": false,
"service_charge_payment_period_is_four_weeks": false,
"service_charge_payment_period_is_month": false,
"service_charge_payment_period_is_three_months": false,
"service_charge_payment_period_is_two_weeks": false,
"service_charge_payment_period_is_week": false,
"total_service_charge_payments_liable_in_12_month_period": 0
}
}
},
"period": "2026-04"
},
"variables": [
"universal_credit_award_amount",
"universal_credit_maximum_amount",
"standard_allowance_amount",
"earned_income_deduction_from_maximum_amount"
]
}
},
{
"program_id": "snap",
"jurisdiction": "us-al",
"sample_request": {
"program_id": "snap",
"jurisdiction": "us-al",
"household": {
"entities": {
"Household": {
"household:1": {
"action_occurs_within_certification_period": false,
"action_reduces_or_terminates_benefits": false,
"actual_allotment_received_for_month": 0,
"all_adult_household_members_are_elderly_or_disabled": false,
"all_household_members_are_homeless": false,
"all_household_members_have_died": false,
"allotment_household_received": 0,
"allotment_household_would_have_received_with_disqualified_member": 0,
"allotment_varies_within_certification_period_with_prior_notice": false,
"allowable_resource_limit": 0,
"amount_of_benefits_lost": 0,
"anticipated_future_resource_amount": 0,
"application_filed_between_first_and_fifteenth_of_last_month": false,
"application_filed_within_15_days_of_notice_of_expiration": false,
"application_is_identifiable_with_signature_and_date": false,
"arrearage_child_support_paid": 0,
"available_resources_at_interview": 0,
"average_biweekly_expense_amount": 0,
"average_weekly_expense_amount": 0,
"benefits_wrongfully_withheld_by_judicial_action": false,
"biweekly_income_amount": 0,
"boarder_contributions_to_household_shelter_expenses": 0,
"boarder_direct_payments_for_room_and_meals": 0,
"both_terminated_and_delayed_new_source": false,
"child_support_collected_through_income_tax_intercept": 0
}
},
"Person": {
"person:1:1": {
"adequate_child_care_unavailable_to_attend_class_and_meet_student_work_requirement": false,
"adult_applying_strictly_for_children": false,
"alaska_subsistence_hunts_or_fishes_30_hours_weekly": false,
"alien_status_documentation_missing_or_unwilling": false,
"another_household_member_is_ill_requiring_individuals_presence": false,
"applicable_state_minimum_wage_applies": false,
"applicable_state_minimum_wage_rate": 0,
"assigned_or_placed_in_higher_education_through_qualifying_employment_training_program": false,
"battered_individual_no_longer_lives_in_same_household_with_batterer": false,
"child_earned_income_amount": 0,
"circumstance_is_beyond_individuals_control": false,
"county_department_determined_member_refused_or_failed_to_provide_or_apply_for_ssn": false,
"county_department_determines_person_is_responsible_household_member": false,
"daily_commuting_hours_excluding_child_care_transport": 0,
"days_since_work_registration": 0,
"delay_is_due_to_illness": false,
"delay_is_due_to_lack_of_transportation": false,
"delay_is_due_to_temporary_absence": false,
"distance_prohibits_walking_to_job_site": false,
"distance_to_employment_is_unreasonable_given_wage_and_cost": false,
"each_household_member_receives_aid_to_aged_blind_or_disabled_under_title_i_x_xiv_or_xvi_social_security_act": false,
"each_household_member_receives_benefits_under_state_or_local_general_assistance_program": false,
"each_household_member_receives_benefits_under_state_program_funded_under_part_a_title_iv_social_security_act": false,
"each_household_member_receives_supplemental_security_income_benefits_under_title_xvi_social_security_act": false,
"employment_interferes_with_religious_observances": false
}
},
"Asset": {
"asset:1:1": {
"asset_fair_market_value": 0,
"asset_is_licensed_vehicle": false,
"asset_is_used_for_household_transportation_or_to_obtain_or_continue_employment": false,
"state_vehicle_allowance_standards_apply_in_lieu_of_default_vehicle_rule": false,
"vehicle_depended_on_to_carry_household_fuel_or_water": false,
"vehicle_necessary_for_transport_of_physically_disabled_household_member": false,
"vehicle_provides_household_primary_source_of_fuel_or_water": false,
"vehicle_used_to_produce_earned_income": false
}
},
"Scalar": {
"scalar:1": {
"bona_fide_funeral_agreement_equity_value": 0,
"household_nonliquid_resources_value": 0,
"household_vehicles_value": 0,
"jointly_owned_resources_with_categorically_eligible_member_value": 0,
"resources_determined_inaccessible_to_household_value": 0,
"resources_excluded_by_federal_statute_value": 0,
"resources_that_are_prorated_income_value": 0,
"tax_preferred_education_and_retirement_account_balances": false
}
}
},
"period": "2026-01"
},
"variables": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
]
}
},
{
"program_id": "snap",
"jurisdiction": "us-ca",
"sample_request": {
"program_id": "snap",
"jurisdiction": "us-ca",
"household": {
"entities": {
"Household": {
"household:1": {
"application_contains_handwritten_signature_transmitted_by_fax": false,
"application_contains_handwritten_signature_transmitted_by_other_electronic_transmission": false,
"application_signed_through_electronic_signature_techniques": false,
"application_submitted_by_fax_to_food_stamp_office": false,
"application_submitted_by_mail_to_food_stamp_office": false,
"application_submitted_in_person_to_food_stamp_office": false,
"application_submitted_through_authorized_representative_to_food_stamp_office": false,
"application_submitted_through_electronic_transmission_to_food_stamp_office": false,
"application_submitted_through_online_electronic_application_to_food_stamp_office": false,
"certification_cannot_be_completed_by_end_of_current_certification_period_due_to_verification_response_period": false,
"certification_period_change_information_requires_clarification": false,
"child_support_deduction": 0,
"consumer_price_index_change_for_12_month_period_ending_preceding_june": 0,
"days_allowed_to_provide_required_application_verification": 0,
"days_allowed_to_respond_to_rfi": 0,
"days_allowed_to_submit_acceptable_noncitizen_documentation": 0,
"days_following_application_date": 0,
"days_since_application": 0,
"deductible_expense_claimed": false,
"dependent_care_deduction": 0,
"expense_could_not_be_verified_within_processing_standard_because_cwd_failed_to_allow_sufficient_time": false,
"expense_disallowed_due_to_missing_verification": false,
"expense_not_verified": false,
"expense_verification_would_delay_certification": false,
"federal_agency_verification_request_submitted_for_noncitizen_status": false
}
},
"Person": {
"person:1:1": {
"abawd_work_hours_per_month": 0,
"adequate_child_care_unavailable_for_child_age_six_to_under_twelve": false,
"adequate_child_care_unavailable_to_attend_class_and_meet_student_work_requirement": false,
"alaska_subsistence_hunts_or_fishes_30_hours_weekly": false,
"alien_status_documentation_missing_or_unwilling": false,
"all_counted_credits_before_1997_or_without_earner_federal_means_tested_public_benefits": false,
"another_household_member_illness_requires_members_presence": false,
"assigned_or_placed_in_higher_education_through_qualifying_employment_training_program": false,
"assigned_to_fset_program_by_cwd": false,
"cfap_recipient": false,
"cfap_recipient_meets_other_deeming_exemption": false,
"child_earned_income_amount": 0,
"circumstances_beyond_members_control": false,
"complies_with_fset_program_requirements_under_section_63_407_8": false,
"cwd_determines_individual_in_compliance_with_food_stamp_work_registration_requirements_under_section_63_407_4": false,
"cwd_employee_is_not_persons_regularly_assigned_caseworker": false,
"disqualification_period_has_ended": false,
"documents_delivered_in_person_to_cwd_employee": false,
"documents_delivered_to_location_where_caseworker_conducts_business": false,
"each_household_member_receives_aid_to_aged_blind_or_disabled_under_title_i_x_xiv_or_xvi_social_security_act": false,
"each_household_member_receives_benefits_under_state_or_local_general_assistance_program": false,
"each_household_member_receives_benefits_under_state_program_funded_under_part_a_title_iv_social_security_act": false,
"each_household_member_receives_supplemental_security_income_benefits_under_title_xvi_social_security_act": false,
"english_inability_caused_work_registrant_problem": false,
"enrolled_at_least_half_time": false
}
},
"Asset": {
"asset:1:1": {
"asset_fair_market_value": 0,
"asset_is_licensed_vehicle": false,
"asset_is_used_for_household_transportation_or_to_obtain_or_continue_employment": false,
"state_vehicle_allowance_standards_apply_in_lieu_of_default_vehicle_rule": false,
"vehicle_depended_on_to_carry_household_fuel_or_water": false,
"vehicle_necessary_for_transport_of_physically_disabled_household_member": false,
"vehicle_provides_household_primary_source_of_fuel_or_water": false,
"vehicle_used_to_produce_earned_income": false
}
},
"SnapUnit": {
"snap_unit:1": {
"abawd_consecutive_months_completed_under_section_63_410_52": 0,
"abawd_countable_month_window_months": 0,
"abawd_countable_months_used_in_window": 0,
"abawd_has_regained_eligibility": false,
"abawd_subsequently_stops_meeting_work_requirement": false,
"applicant_or_recipient_household": false,
"application_filed_and_completed": false,
"categorically_eligible_household_under_sections_63_301_6_7_and_82": false,
"cwd_has_determined_children_able_to_participate_in_parent_household": false,
"duplicate_participation_occurs": false,
"federal_fsp_food_stamp_benefits_if_all_members_had_remained_eligible": 0,
"household_contains_cfap_participant": false,
"household_contains_federal_fsp_participant": false,
"household_determined_eligible": false,
"household_has_member_with_more_than_one_ssn": false,
"household_income_does_not_exceed_maximum_income_eligibility_standard": false,
"household_interviewed": false,
"household_provided_cwd_all_ssns_for_each_member_with_more_than_one_ssn": false,
"household_provided_cwd_ssn_of_each_household_member_prior_to_certification": false,
"household_provided_verification_of_application_for_ssn_for_each_household_member_prior_to_certification": false,
"household_qualifies_for_expedited_service_under_section_63_301_5": false,
"household_resources_do_not_exceed_maximum_resource_eligibility_standard": false,
"income_of_others_with_whom_individual_resides_excluding_spouse_included_under_section_63_502_1": 0,
"income_standard_for_elderly_and_disabled_separate_household_status_under_section_63_1001_10": 0,
"individual_age": 0
}
}
},
"period": "2026-01"
},
"variables": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
]
}
},
{
"program_id": "snap",
"jurisdiction": "us-nc",
"sample_request": {
"program_id": "snap",
"jurisdiction": "us-nc",
"household": {
"entities": {
"Household": {
"household:1": {
"abawd_stopped_working_average_hours_per_month": 0,
"absent_military_member_made_contribution_to_fns_unit": false,
"absent_military_pay_directly_deposited_to_joint_account": false,
"absent_military_period_days": 0,
"action_pending_in_active_county": false,
"action_regards_immigration_status_due_to_prior_ncfast_certification_status": false,
"action_would_be_mid_certification": false,
"additional_transportation_expenses_for_dependent_care": 0,
"adjusted_gross_self_employment_income_not_excluded": 0,
"agency_became_aware_of_wffa_work_first_employment_services_or_ssi_approval": false,
"all_fns_units_in_residence_contribute_to_heating_or_cooling_expenses": false,
"all_other_eligibility_criteria_met": false,
"amount_and_date_of_initial_wffa_or_ssi_benefits_can_be_reasonably_anticipated": false,
"anticipated_income_changes_during_certification_period_documented": false,
"applicable_minimum_wage": 0,
"applicant_available_income_statement_documented": false,
"applicant_checked_application_indicating_authorized_representative_needed": false,
"applicant_statement_provided": false,
"applicant_statement_questionable": false,
"application_date_is_date_received_by_first_county": false,
"application_filed_online_through_epass": false,
"application_is_in_person": false,
"application_processed_by_county_that_receives_application": false,
"application_processed_on_or_after_h_r_1_effective_date": false,
"application_received_before_h_r_1_effective_date": false
}
},
"Person": {
"person:1:1": {
"abawd_exemption_met_for_at_least_part_of_month": false,
"abawd_monthly_qualifying_work_program_hours": 0,
"abawd_monthly_work_hours": 0,
"accepted_offer_of_employment_meets_minimum_requirement": false,
"accepted_offer_weekly_earnings": 0,
"accepted_offer_weekly_hours": 0,
"action_is_initial_application_or_reapplication": false,
"action_is_recertification": false,
"active_duty_service_is_after_minimum_service_rule_date": false,
"actively_participates_in_community_college_program": false,
"actively_participates_in_wia_program": false,
"activity_is_more_than_a_job_nc_education_or_training_with_required_snap_e_t_plan_conditions": false,
"activity_is_section_236_trade_act_program": false,
"activity_is_wioa_program": false,
"actual_cash_support_from_sponsor": false,
"actual_income_received_for_month_of_application": 0,
"actual_income_received_in_month": 0,
"actual_monthly_converted_dependent_care_expense_paid_for_dependent": 0,
"actual_reimbursable_transportation_and_other_expenses_incurred": 0,
"actual_total_child_support_paid": false,
"additional_controlled_substance_felony_conviction_within_minimum_disqualification_period": false,
"additional_dependent_care_transportation_miles": 0,
"additional_save_verification_pending": false,
"adequate_child_care_unavailable_to_attend_class_and_meet_student_work_requirement": false,
"adjusted_status_to_lpr": false
}
},
"Asset": {
"asset:1:1": {
"access_depends_on_joint_owner_agreement": false,
"access_to_resource_value_depends_on_agreement_of_joint_owner": false,
"accessible_portion_value": 0,
"account_holder_age": 0,
"account_value": 0,
"actual_value_of_funds_accessible_to_household_at_interview": 0,
"applicable_resource_limit": 0,
"applicant_resides_in_battered_spouse_shelter": false,
"application_stage": false,
"asset_expected_life_months": 0,
"asset_fair_market_value": 0,
"asset_is_accessible_retirement": false,
"asset_is_accessible_trust_account": false,
"asset_is_educational_loan_combined_with_countable_funds_for_more_than_6_months": false,
"asset_is_eitc_payment": false,
"asset_is_energy_assistance": false,
"asset_is_energy_assistance_payment_or_allowance_under_federal_state_or_local_law": false,
"asset_is_equipment": false,
"asset_is_equity_line_of_credit": false,
"asset_is_excluded_by_law": false,
"asset_is_excluded_funds": false,
"asset_is_farm_equipment": false,
"asset_is_fema_payment_commingled_with_non_excluded_funds_for_6_months_prior": false,
"asset_is_financial_instrument": false,
"asset_is_funds_in_the_online_account": false
}
},
"Scalar": {
"scalar:1": {}
},
"Payment": {
"payment:1:1": {
"absent_parent_payment_can_be_reasonably_anticipated": false,
"actual_child_support_received": false,
"amount_and_date_of_receipt_can_be_reasonably_anticipated": false,
"amount_specified_person_is_responsible_for_paying_can_be_determined": false,
"amount_used_to_repay_overpayment_to_same_source": 0,
"anticipated_gross_bonus_vacation_pay_over_certification_period": 0,
"applicant_or_recipient_was_specified_person_when_bill_incurred": false,
"assistance_is_for_room_and_board": false,
"base_period_payment_is_representative": false,
"benefit_reduced_by_federal_offset_to_repay_federal_debt": false,
"bill_first_billed_in_current_certification_period": false,
"bill_incurred_and_billed_in_prior_certification_period": false,
"bill_is_unpaid_in_full_or_in_part": false,
"bill_paid_by_another_source": false,
"bill_previously_allowed_as_medical_deduction_for_fns": false,
"bill_reported_in_current_certification_period": false,
"bill_shows_personal_property_amounts_separate_from_dwelling_and_land_amounts": false,
"bill_under_repayment_plan": false,
"bill_written_off_by_medical_provider": false,
"budgeting_occurs_for_application_or_recertification": false,
"cafeteria_plan_or_flexible_benefit_is_countable_under_section_315_05": false,
"car_is_used_as_primary_residence": false,
"care_provided_to_dependent_fns_unit_member_by_non_fns_unit_member": false,
"care_provided_to_fns_unit_member": false,
"care_provided_to_non_fns_unit_member": false
}
},
"Employer": {
"employer:1:1": {
"contractual_agreement_assigns_responsibility_for_required_benefits": false,
"contractual_agreement_designates_job_slots_available": false,
"county_dss_has_contractual_agreement_with_job_provider": false,
"job_site_is_private_non_profit_agency": false,
"job_site_is_public_agency": false
}
},
"Business": {
"business:1:1": {
"allowable_reasonable_costs_of_producing_income": 0,
"annual_income_and_expenses_estimated_from_most_accurate_information_available": false,
"anticipated_averaged_monthly_income_entered_in_nc_fast": false,
"business_has_existed_at_least_one_year": false,
"business_has_not_operated_for_twelve_months": false,
"business_in_individuals_place_of_residence": false,
"business_incorporated_as_c_corporation": false,
"business_incorporated_as_llc": false,
"business_incorporated_as_s_corporation": false,
"business_is_unincorporated": false,
"business_owner_is_fns_unit_member": false,
"business_records_used_for_mileage_deduction": false,
"capital_assets_or_equipment_amount": 0,
"checks_made_out_for_cash_from_corporate_checking_accounts": 0,
"client_receives_shelter_or_utility_deduction_for_same_residence_costs": false,
"current_or_anticipated_losses_amount": 0,
"depreciation_claimed_for_tax_purposes_amount": 0,
"farm_cost_of_doing_business": 0,
"farm_income_received": 0,
"farmer_annual_gross_receipts_expected": 0,
"fns_unit_reports_business_increase_or_decrease_expected_to_continue_more_than_one_month": false,
"household_expenses_paid_from_corporate_checking_accounts": 0,
"household_states_records_are_representative": false,
"income_averaged_and_anticipated_based_on_most_accurate_information_available": false,
"income_averaged_and_anticipated_for_remainder_of_certification_period": false
}
}
},
"period": "2026-01"
},
"variables": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
]
}
},
{
"program_id": "snap",
"jurisdiction": "us-ny",
"sample_request": {
"program_id": "snap",
"jurisdiction": "us-ny",
"household": {
"entities": {
"Household": {
"household:1": {
"all_household_members_experiencing_homelessness": false,
"child_support_deduction": 0,
"consumer_price_index_change_for_12_month_period_ending_preceding_june": 0,
"dependent_care_deduction": 0,
"first_full_month_benefit_level": 0,
"homeless_household_free_shelter_all_month": false,
"homeless_household_has_shelter_costs": false,
"household_applies_following_more_than_30_days_not_certified": false,
"household_billed_separately_for_non_telephone_standard_utility": false,
"household_certified_for_participation_in_food_stamp_program": false,
"household_contains_individual_participating_in_more_than_one_household_or_project_area": false,
"household_entitled_to_excess_medical_deduction": false,
"household_entitled_to_heap_or_liheaa_payment": false,
"household_has_earned_income_budgeted_for_snap": false,
"household_has_out_of_pocket_dependent_care_expenses": false,
"household_in_central_meter_housing_charged_only_for_excess_heating_or_cooling": false,
"household_in_project_area_solely_for_vacation": false,
"household_in_public_housing_unit_with_central_utility_meters_charged_only_for_excess_heating_or_cooling_costs": false,
"household_in_rental_housing_billed_by_landlord_based_on_individual_usage_or_flat_rate_separately_from_rent": false,
"household_includes_elderly_or_disabled_member": false,
"household_incurred_or_anticipated_basic_service_cost_for_one_telephone": false,
"household_incurred_or_anticipated_heating_or_cooling_costs_separate_from_rent_or_mortgage": false,
"household_incurs_heating_or_cooling_expenses_separately_from_rent_or_mortgage": false,
"household_initial_month": false,
"household_is_migrant_or_seasonal_farmworker_household": false
}
},
"Person": {
"person:1:1": {
"adequate_child_care_unavailable_to_attend_class_and_meet_student_work_requirement": false,
"alaska_subsistence_hunts_or_fishes_30_hours_weekly": false,
"alien_status_documentation_missing_or_unwilling": false,
"assigned_or_placed_in_higher_education_through_qualifying_employment_training_program": false,
"child_earned_income_amount": 0,
"each_household_member_receives_aid_to_aged_blind_or_disabled_under_title_i_x_xiv_or_xvi_social_security_act": false,
"each_household_member_receives_benefits_under_state_or_local_general_assistance_program": false,
"each_household_member_receives_benefits_under_state_program_funded_under_part_a_title_iv_social_security_act": false,
"each_household_member_receives_supplemental_security_income_benefits_under_title_xvi_social_security_act": false,
"enrolled_at_least_half_time": false,
"enrolled_in_business_technical_trade_or_vocational_school_requiring_high_school_diploma": false,
"enrolled_in_college_or_university_degree_program": false,
"enrolled_through_jobs_or_successor_program": false,
"federal_minimum_wage": 7.25,
"federal_or_state_minimum_wage": 7.25,
"household_income_and_other_financial_resources_are_substantial_limiting_factor_in_permitting_more_nutritious_diet": false,
"known_student_refused_work_study_assignment": false,
"member_abawd_monthly_work_hours": 0,
"member_abawd_weekly_work_hours": 0,
"member_accepted_bona_fide_suitable_employment_offer_if_offered": false,
"member_age": 30,
"member_age_16_or_17_is_not_household_head_or_attends_school_or_training_half_time": false,
"member_age_24_or_younger_and_was_in_foster_care_on_attaining_age_18": false,
"member_authorized_to_receive_family_assistance_nonemergency_safety_net_or_ssi_benefits_but_not_yet_paid": false,
"member_combines_work_and_work_program_20_hours_weekly": false
}
},
"Asset": {
"asset:1:1": {
"asset_fair_market_value": 0,
"asset_is_licensed_vehicle": false,
"asset_is_used_for_household_transportation_or_to_obtain_or_continue_employment": false,
"state_vehicle_allowance_standards_apply_in_lieu_of_default_vehicle_rule": false,
"vehicle_depended_on_to_carry_household_fuel_or_water": false,
"vehicle_necessary_for_transport_of_physically_disabled_household_member": false,
"vehicle_provides_household_primary_source_of_fuel_or_water": false,
"vehicle_used_to_produce_earned_income": false
}
},
"SnapUnit": {
"snap_unit:1": {}
}
},
"period": "2026-01"
},
"variables": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
]
}
},
{
"program_id": "snap",
"jurisdiction": "us-sc",
"sample_request": {
"program_id": "snap",
"jurisdiction": "us-sc",
"household": {
"entities": {
"Household": {
"household:1": {
"a_form_registered_in_scwins_on_date_received": false,
"a_form_registered_on_date_of_receipt": false,
"abawd_member_weekly_work_hours": 0,
"abawd_weekly_work_hours": 0,
"absence_due_to_employment_or_training_away_from_home": false,
"absence_due_to_illness": false,
"actual_amount_of_loss": 0,
"actual_rent_mortgage_expense_change": 0,
"actual_rent_mortgage_expense_change_amount": 0,
"actual_shelter_utility_expenses": 0,
"actual_utility_expense_change": 0,
"actual_utility_expense_change_reported_during_certification_period": false,
"actual_utility_expenses": 0,
"actual_utility_expenses_for_unoccupied_home": 0,
"additional_information_questionable": false,
"additional_verification_needed": false,
"additional_verification_needed_after_interview": false,
"additional_verification_needed_as_result_of_interview": false,
"additional_verification_requested": false,
"administrative_law_court_appeal_initiated": false,
"adverse_action_notice_days_from_mail_to_effective": 0,
"adverse_notice_period_ends_on_weekend_or_holiday": false,
"agency_action_or_inaction_at_issue": false,
"agency_action_would_reduce_suspend_or_terminate_household_benefits": false,
"agency_assigned_longer_certification_period": false
}
},
"Person": {
"person:1:1": {
"abawd_fulfilling_work_requirement_at_application_or_add_request": false,
"abawd_is_otherwise_exempt_from_work_requirement": false,
"abawd_meets_exception_to_work_requirement": false,
"abawd_received_snap_benefits_erroneously": false,
"abawd_time_tracking_period_years_elapsed": 0,
"absence_from_united_states_months": 0,
"acceptable_immigration_status_documentation_provided": false,
"accepted_bona_fide_offer_of_employment_hours_per_week": 0,
"accepted_bona_fide_offer_weekly_earnings": 0,
"action_is_for_age_race_color_sex_disability_religious_creed_national_origin_or_political_beliefs": false,
"active_duty_in_us_armed_forces_other_than_training": false,
"additional_three_months_are_used_consecutively": false,
"adequate_child_care_unavailable_to_attend_class_and_meet_student_work_requirement": false,
"adjudication_supports_ebt_misuse_determination": false,
"adjusted_to_lawful_permanent_resident": false,
"administration_disqualification_hearing_determined_household_member_committed_ipv": false,
"administrative_disqualification_hearing_is_pending": false,
"administrative_disqualification_or_prosecution_case_exists": false,
"admitted_as_amerasian_under_public_law_100_202_as_amended": false,
"admitted_as_refugee_under_ina_207": false,
"adult_in_snap_household_with_dependent_child_age_14_to_17": false,
"adult_member_when_overpayment_occurred": false,
"adult_member_when_trafficking_occurred": false,
"adverse_action_pending_for_work_noncompliance": false,
"afghan_granted_parole_under_afghanistan_supplemental_appropriations_act_2022": false
}
},
"Asset": {
"asset:1:1": {
"asset_age_years": 0,
"asset_equity_value": 0,
"asset_fair_market_value": 0,
"asset_has_not_been_sold": false,
"asset_is_alcoholic_beverage": false,
"asset_is_antique_vehicle": false,
"asset_is_burial_plot": false,
"asset_is_classic_vehicle": false,
"asset_is_custom_made_vehicle": false,
"asset_is_deposit_fee_in_excess_of_state_fee_reimbursement_required_for_returnable_container": false,
"asset_is_energy_assistance_payment_or_allowance_excluded_as_income": false,
"asset_is_equipment_for_procuring_food_for_eligible_household_in_alaska_area_with_extremely_difficult_food_store_access_and_subsistence_hunting_or_fishing_reliance": false,
"asset_is_equipment_for_transportation_clothing_or_shelter": false,
"asset_is_firearm_ammunition_or_other_explosive": false,
"asset_is_food_or_food_product_intended_for_human_consumption": false,
"asset_is_fund_in_plan_contract_or_account_meeting_internal_revenue_code_requirements": false,
"asset_is_funds_in_or_transferred_to_trust_or_unavailable_trust_income": false,
"asset_is_governmental_payment_designated_for_restoration_of_home_damaged_in_disaster": false,
"asset_is_home_and_surrounding_property_not_separated_by_intervening_property_owned_by_others": false,
"asset_is_hot_food_or_hot_food_product_prepared_for_immediate_consumption": false,
"asset_is_household_goods_or_personal_effects": false,
"asset_is_indian_land_held_jointly_with_tribe_or_sale_requires_bia_approval": false,
"asset_is_licensed_vehicle": false,
"asset_is_licensed_vehicle_driven_by_member_under_age_18_to_work_school_training_or_look_for_work": false,
"asset_is_lifetime_rights_to_property": false
}
},
"Employer": {
"employer:1:1": {
"employer_is_in_violation_of_labor_laws": false,
"employer_is_involved_in_strike_lockout_or_unusual_labor_condition": false,
"employer_is_nonprofit_company_or_corporation": false,
"employer_is_or_employs_immediate_family_member_of_employee_trainee": false,
"employer_is_private_company_or_corporation": false,
"employer_is_private_employer": false,
"employer_is_public_agency": false,
"employer_is_public_employer": false,
"gross_wages_excluding_overtime": 0,
"payroll_records_or_paystubs_attached_to_dss_form_5003": false,
"reimbursement_invoice_and_timesheet_signed_by_employee_trainee": false,
"reimbursement_invoice_and_timesheet_signed_by_employer": false,
"reimbursement_supported_by_business_receipts": false,
"reimbursement_supported_by_other_records_normally_retained_by_employer": false,
"reimbursement_supported_by_time_and_payroll_records": false,
"wages_are_during_established_contracted_training_period": false
}
},
"Payment": {
"payment:1:1": {
"additional_care_and_supervision_due_to_child_physical_mental_or_emotional_difficulties": false,
"adoption_subsidy_payment_amount": 0,
"adoption_subsidy_portion_covers_medical_care": 0,
"alimony_fees_withheld": 0,
"alimony_payment_amount": 0,
"animal_is_specially_trained_to_serve_elderly_or_disabled_program_participant": false,
"annual_royalty_income": 0,
"annuity_average_amount_over_period_intended_to_cover": 0,
"assistance_payment_from_federal_or_federally_aided_public_assistance_program": false,
"assistance_payment_from_general_assistance_program": false,
"assistance_payment_from_other_need_based_assistance_program": false,
"assistance_payment_is_vendor_payment_to_third_party_on_behalf_of_household": false,
"assistance_payment_requires_work_without_compensation_other_than_assistance": false,
"assistance_provided_to_children": false,
"attendant_care_cost_amount": 0,
"attendant_care_cost_qualifies_under_both_dependent_care_and_medical_deduction": false,
"attendant_care_cost_treated_as_dependent_care_expense": false,
"attendant_care_cost_treated_as_medical_expense": false,
"awarded_to_household_member": false,
"benefit_has_no_monetary_payment_made_on_behalf_of_household": false,
"benefit_is_gain_or_benefit_not_in_form_of_money_payable_directly_to_household": false,
"cash_assistance_provided_to_refugee": false,
"cash_contribution_monetary_gift_from_non_household_member": false,
"cash_donation_monetary_gift_from_organization": false,
"child_attends_qualifying_home_school_program": false
}
},
"Business": {
"business:1:1": {
"anticipated_monthly_earnings_reflecting_increase_or_decrease": 0,
"best_estimated_monthly_self_employment_income": 0,
"business_enterprise_has_existed_at_least_a_year": false,
"business_income_substantially_increased_or_decreased": false,
"capital_gains": 0,
"client_ownership_percentage": 0,
"earnings_reflecting_increase_or_decrease_are_available": false,
"form_1065_line_1c_gross_receipts_or_sales": 0,
"form_1065_line_7_other_income": 0,
"form_1120_line_11_total_income": 0,
"gross_self_employment_income": 0,
"llc_only_member_is_an_individual": false,
"months_business_has_operated": 0,
"months_income_intended_to_cover": 0,
"schedule_c_line_1_gross_receipts_or_sales": 0,
"schedule_c_line_2_returns_and_allowances": 0,
"schedule_c_line_3_amount_is_listed": false,
"schedule_c_line_3_profit_or_loss_from_business": 0,
"schedule_c_line_6_other_income": 0,
"self_employment_income_for_period_business_has_operated": 0,
"self_employment_income_for_period_income_intended_to_cover": 0
}
}
},
"period": "2026-01"
},
"variables": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
]
}
},
{
"program_id": "snap",
"jurisdiction": "us-tn",
"sample_request": {
"program_id": "snap",
"jurisdiction": "us-tn",
"household": {
"entities": {
"Household": {
"household:1": {
"abawd_member_average_monthly_hours": 0,
"abawd_member_average_weekly_hours": 0,
"acquired_licensed_vehicle_not_fully_excludable": false,
"active_case_action_on_data_match_pending": false,
"actual_utility_costs_reasonably_anticipated_to_continue_for_certification_period": false,
"additional_loan_or_charge_account_charges_amount": 0,
"adh_official_or_court_determined_household_member_committed_ipv": false,
"administrative_disqualification_decision_for_ipv_subsequently_reversed": false,
"adverse_action_is_based_on_data_match_information": false,
"adverse_action_notice_days_before_effective_date": 0,
"adverse_action_occurs_within_certification_period": false,
"adverse_notification_received": false,
"all_adult_members_are_elderly_or_disabled": false,
"all_household_members_have_died": false,
"all_medical_expenses_verified": false,
"allotment_is_initial_allotment": false,
"alternative_verification_source_available": false,
"amount_due_on_claim": 0,
"annual_income_amount": 0,
"annual_like_income_received_in_shorter_period": false,
"annual_like_short_period_income_amount": 0,
"another_source_contradicts_household_statements": false,
"appealed_issue_is_benefits_reduced_because_of_mass_change": false,
"appealed_issue_is_snap_eligibility_or_benefits_improperly_computed": false,
"applicant_failed_to_provide_verification_within_required_days": false
}
},
"Person": {
"person:1:1": {
"abawd_lookback_period_months": 0,
"abawd_non_compliant": false,
"accepted_bona_fide_offer_of_employment": false,
"additional_cause_for_adverse_action_and_no_subsequent_hearing_requested": false,
"adequate_child_care_unavailable_to_attend_class_and_meet_student_work_requirement": false,
"alaska_subsistence_hunts_or_fishes_30_hours_weekly": false,
"alien_status_documentation_missing_or_unwilling": false,
"allotment_household_would_have_received_if_disqualified_member_allowed_to_participate": 0,
"another_household_member_accepted_employment_in_another_county": false,
"another_household_member_enrolled_at_least_half_time_in_recognized_school_training_or_higher_education_in_another_county": false,
"applicant_has_valid_reason_for_not_providing_snap_renewal_application": false,
"applicant_or_recipient_statement_verifies_unearned_educational_income_amount": false,
"assigned_or_placed_in_higher_education_through_qualifying_employment_training_program": false,
"authorized_representative_applies_for_household": false,
"average_paid_employment_hours_per_month_excluding_wioa_class_attendance": 0,
"average_paid_employment_hours_per_week_excluding_wioa_class_attendance": 0,
"average_weekly_earnings": 0,
"average_weekly_hours_worked": 0,
"certification_period_expires": false,
"child_case_certification_period_does_not_end_before_eligibility_snapshot": false,
"child_case_designated_in_ebms_as_residing_in_tsni_county_as_of_eligibility_snapshot": false,
"child_earned_income_amount": 0,
"child_in_open_active_snap_or_families_first_case_as_of_eligibility_snapshot": false,
"child_is_at_least_five_and_not_older_than_eighteen_as_of_age_snapshot": false,
"child_is_eligible_for_tsni": false
}
},
"Asset": {
"asset:1:1": {
"asset_fair_market_value": 0,
"asset_is_able_account": false,
"asset_is_licensed_vehicle": false,
"asset_is_used_for_household_transportation_or_to_obtain_or_continue_employment": false,
"resource_held_jointly_with_members_of_former_household": false,
"state_vehicle_allowance_standards_apply_in_lieu_of_default_vehicle_rule": false,
"vehicle_depended_on_to_carry_household_fuel_or_water": false,
"vehicle_necessary_for_transport_of_physically_disabled_household_member": false,
"vehicle_provides_household_primary_source_of_fuel_or_water": false,
"vehicle_used_to_produce_earned_income": false
}
},
"Business": {
"business:1:1": {
"organization_or_institution_applies_on_behalf_of_individual": false,
"receives_and_spends_snap_benefits_for_food_prepared_or_served_to_individual": false,
"recognized_as_nonprofit_by_tdmhsas": false,
"recognized_as_tax_exempt_organization_by_irs": false,
"tdmhsas_issued_acknowledgment_letter_for_facility_purpose": false,
"tdmhsas_provided_license": false
}
},
"Payment": {
"payment:1:1": {
"amount_is_carried_forward_from_past_billing_periods": false,
"amount_received_and_used_for_third_party_non_household_member": 0,
"annual_contribution_contract_entered_into_before_statutory_cutoff": false,
"annual_contribution_contract_under_section_23_us_housing_act": false,
"compensation_for_services_performed": false,
"current_billed_or_due_expense_amount": 0,
"expense_cost_is_described_in_this_chapter": false,
"expense_is_billed_or_otherwise_due_in_month": false,
"home_repair_charge_has_been_or_will_be_reimbursed_by_private_or_public_relief_agency_insurance_or_other_source": false,
"household_makes_money_payment_for_service": false,
"household_member_is_student_at_least_half_time_in_elementary_high_school_or_high_school_equivalency_classes": false,
"household_member_is_under_age_18": false,
"household_member_lives_with_natural_adoptive_or_step_parent": false,
"household_member_under_control_of_household_member_other_than_parent": false,
"identifiable_non_household_member_care_portion": false,
"income_amount_in_three_month_period": 0,
"income_amount_per_quarter": 0,
"income_belongs_to_non_household_member_who_has_not_been_disqualified": false,
"income_excluded_or_disregarded": false,
"income_from_self_employment_enterprise": false,
"income_is_so_infrequent_or_irregular_that_it_cannot_be_reasonably_anticipated": false,
"income_received_in_exchange_for_physical_or_mental_labor": false,
"income_received_or_expected_during_snap_certification_period": false,
"income_received_too_infrequently_or_irregularly_to_be_reasonably_anticipated": false,
"intended_beneficiary_count": 1
}
}
},
"period": "2026-01"
},
"variables": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
]
}
},
{
"program_id": "snap",
"jurisdiction": "us-az",
"sample_request": {
"program_id": "snap",
"jurisdiction": "us-az",
"household": {
"entities": {
"Household": {
"household:1": {
"budgetary_unit_participant_count": 1,
"initial_month_proration_applies": false,
"minimum_na_allotment": 24,
"na_budgetary_unit_is_eligible": true,
"na_net_income": 0,
"prorated_initial_month_na_benefit": 0,
"snap_excess_shelter_deduction_for_net_income": 0,
"snap_gross_monthly_earned_income": 0,
"snap_total_monthly_unearned_income": 0,
"thrifty_food_plan_amount_for_budgetary_unit_size": 292
}
}
},
"period": "2026-01"
},
"variables": [
"snap_benefit_amount",
"snap_net_income",
"snap_gross_monthly_income",
"snap_eligible"
]
}
}
]
}
},
"meta": {
"request_id": "209afaa5-b405-457a-a8e8-3d9a2ddffab8",
"api_version": "0.1.0",
"environment": "local"
}
}GET/v1/programsrules:read
Every program with indexed RuleSpecs and per-program rule counts. Appearing here means the program’s rules are searchable; whether it is executable is determined by runtime packages.
curl -s https://api.axiom-foundation.org/v1/programs \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/programs", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/programs",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"programs": [
{
"id": "co-snap",
"name": "US Co Co SNAP",
"jurisdiction": "us-co",
"description": "RuleSpecs indexed for co-snap in us-co.",
"rule_count": 1,
"status": "available"
},
{
"id": "medicaid",
"name": "US Co Medicaid",
"jurisdiction": "us-co",
"description": "RuleSpecs indexed for medicaid in us-co.",
"rule_count": 1,
"status": "available"
}
]
},
"meta": {
"request_id": "06e2c1a5-eab4-4a01-a9fe-a52b23ba2201",
"api_version": "0.1.0",
"environment": "staging"
}
}Truncated: 39 more program entries omitted.
POST/v1/searchrules:read
Token search over rule ids, citation paths, names, summaries, and symbols. Every whitespace-separated token of two or more characters must match. The as_of parameter (query or body) is reserved for point-in-time retrieval and currently returns 400 unsupported_parameter.
| Field | Type | Req. | Constraints |
|---|---|---|---|
query | string | yes | 2–500 characters |
jurisdiction | string | no | exact match, e.g. us-az |
program_id | string | no | exact match, e.g. snap |
limit | number | no | clamped 1–50, default 20 |
curl -s -X POST https://api.axiom-foundation.org/v1/search \
-H "x-api-key: $AXIOM_API_KEY" \
-H "content-type: application/json" \
-d '{"query": "gross income test", "jurisdiction": "us-az", "limit": 3}'const res = await fetch("https://api.axiom-foundation.org/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "gross income test",
"jurisdiction": "us-az",
"limit": 3
}),
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.post(
"https://api.axiom-foundation.org/v1/search",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
json={
"query": "gross income test",
"jurisdiction": "us-az",
"limit": 3
},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"query": "gross income test",
"results": [
{
"id": "us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test",
"citation_path": "us-az/policy/des/faa5/na-eligibility-and-benefit-determination/gross-income-test",
"name": "Faa5 Na Eligibility And Benefit Determination Gross Income Test",
"jurisdiction": "us-az",
"program_id": "snap",
"document_class": "policy",
"status": "encoded",
"source_count": 1
},
{
"id": "us-az.des_faa5_na_eligibility_and_benefit_determination_net_income_test",
"citation_path": "us-az/policy/des/faa5/na-eligibility-and-benefit-determination/net-income-test",
"name": "Faa5 Na Eligibility And Benefit Determination Net Income Test",
"jurisdiction": "us-az",
"program_id": "snap",
"document_class": "policy",
"status": "encoded",
"source_count": 1
},
{
"id": "us-az.des_faa5_ca_benefit_determination_payment_standard_test",
"citation_path": "us-az/policy/des/faa5/ca-benefit-determination/payment-standard-test",
"name": "Faa5 Ca Benefit Determination Payment Standard Test",
"jurisdiction": "us-az",
"program_id": "rulespec",
"document_class": "policy",
"status": "encoded",
"source_count": 1
}
]
},
"meta": {
"request_id": "2080dde2-aa6b-4fbf-a60f-8b8eb3336d0c",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/rules/{rule_id}rules:read
One rule by stable rule id (e.g. us-az.des_faa5_…_gross_income_test) or by citation path (e.g. us-az/policy/des/faa5/…/gross-income-test) — both resolve; citation paths contain slashes and work directly in the URL. Includes summary, symbols, dependency edges, and full provenance (repo, path, branch, source release).
curl -s https://api.axiom-foundation.org/v1/rules/us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/rules/us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/rules/us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"rule": {
"id": "us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test",
"citation_path": "us-az/policy/des/faa5/na-eligibility-and-benefit-determination/gross-income-test",
"name": "Faa5 Na Eligibility And Benefit Determination Gross Income Test",
"jurisdiction": "us-az",
"program_id": "snap",
"document_class": "policy",
"status": "encoded",
"source_count": 1,
"summary": "The gross income test is applied in eligibility and benefit determinations at 130% or 185% of FPL. Gross income is all countable income received by the budgetary unit, excluding farm self-employment loss; elderly/disabled units use only the net income test, and categorically eligible units need neither gross nor net income tests.",
"symbols": [
"standard_gross_income_fpl_rate",
"expanded_gross_income_fpl_rate",
"na_gross_income_for_income_test",
"applicable_na_gross_monthly_income_standard",
"na_gross_income_test_required",
"na_gross_income_test_passes",
"na_application_denied_due_to_gross_income_test",
"total_countable_income_received_by_budgetary_unit_excluding_farm_self_employment_loss",
"expanded_gross_income_test_applies",
"federal_poverty_level_for_budgetary_unit_size",
"budgetary_unit_contains_elderly_or_disabled_participant",
"budgetary_unit_is_categorically_eligible"
],
"dependencies": [],
"dependents": [],
"version": "current",
"provenance": {
"rulespec_repo": "rulespec-us-az",
"rulespec_path": "policies/des/faa5/na-eligibility-and-benefit-determination/gross-income-test.yaml",
"rulespec_branch": "main",
"source_release": "current"
}
}
},
"meta": {
"request_id": "7d177d7f-896d-4655-9a66-858efa1de907",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/rules/{rule_id}/sourcessources:read
Source and provenance references for one rule: official citations with URLs and quotes where captured, plus the repository reference. Source types are official, derived, or repository.
curl -s https://api.axiom-foundation.org/v1/rules/us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test/sources \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/rules/us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test/sources", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/rules/us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test/sources",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"rule": {
"id": "us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test",
"citation_path": "us-az/policy/des/faa5/na-eligibility-and-benefit-determination/gross-income-test",
"name": "Faa5 Na Eligibility And Benefit Determination Gross Income Test",
"jurisdiction": "us-az",
"program_id": "snap",
"document_class": "policy",
"status": "encoded",
"source_count": 1
},
"sources": [
{
"id": "rulespec:us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test",
"citation_path": "us-az/policy/des/faa5/na-eligibility-and-benefit-determination/gross-income-test",
"label": "rulespec-us-az:policies/des/faa5/na-eligibility-and-benefit-determination/gross-income-test.yaml",
"url": "https://github.com/TheAxiomFoundation/rulespec-us-az/blob/main/policies/des/faa5/na-eligibility-and-benefit-determination/gross-income-test.yaml",
"quote": null,
"source_type": "repository"
}
]
},
"meta": {
"request_id": "9bf8b6ce-81c3-4cd7-861c-1aac624a802e",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/rules/{rule_id}/dependenciesgraphs:read
Upstream rules this rule depends on (dependencies) and downstream rules that depend on it (dependents), as stable rule ids you can fetch recursively.
curl -s https://api.axiom-foundation.org/v1/rules/us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test/dependencies \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/rules/us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test/dependencies", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/rules/us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test/dependencies",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"rule": {
"id": "us-az.des_faa5_na_eligibility_and_benefit_determination_gross_income_test",
"citation_path": "us-az/policy/des/faa5/na-eligibility-and-benefit-determination/gross-income-test",
"name": "Faa5 Na Eligibility And Benefit Determination Gross Income Test",
"jurisdiction": "us-az",
"program_id": "snap",
"document_class": "policy",
"status": "encoded",
"source_count": 1
},
"dependencies": [],
"dependents": []
},
"meta": {
"request_id": "be07a849-3932-4e57-aea1-2c53d0a998db",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/runtime/packagesrules:read
The programs the configured calculation runtime can execute right now. Each entry reports mode (fixture or compiled), status, and default_outputs — the variables returned when a calculate request omits variables.
curl -s https://api.axiom-foundation.org/v1/runtime/packages \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/runtime/packages", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/runtime/packages",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"packages": [
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"runtime_id": "fixture-snap-runtime",
"mode": "fixture",
"status": "ready",
"default_outputs": [
"snap_benefit_amount",
"snap_net_income"
],
"output_count": 7,
"entity_count": 2
},
{
"program_id": "snap",
"jurisdiction": "us-az",
"runtime_id": "fixture-snap-runtime",
"mode": "fixture",
"status": "ready",
"default_outputs": [
"snap_benefit_amount",
"snap_net_income"
],
"output_count": 7,
"entity_count": 2
}
]
},
"meta": {
"request_id": "7c384d7b-4f9d-4fca-ab8c-8cd3e0df24a1",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/runtime/packages/{jurisdiction}/{program_id}rules:read
Full executable surface for one package: accepted inputs with dtypes and defaults, all output names, aliases, entities, and a ready-to-post sample_request. Omitted inputs use the defaults listed here. 404 for unknown packages. Note the path order: jurisdiction first.
curl -s https://api.axiom-foundation.org/v1/runtime/packages/us-co/co-snap \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/runtime/packages/us-co/co-snap", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/runtime/packages/us-co/co-snap",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"package": {
"program_id": "co-snap",
"jurisdiction": "us-co",
"runtime_id": "fixture-snap-runtime",
"mode": "fixture",
"status": "ready",
"default_outputs": [
"snap_benefit_amount",
"snap_net_income"
],
"output_count": 7,
"entity_count": 2,
"default_period": "2026-01",
"outputs": [
{
"name": "snap_benefit_amount"
},
{
"name": "snap_net_income"
},
{
"name": "snap_gross_monthly_income"
},
{
"name": "snap_standard_deduction"
},
{
"name": "snap_excess_shelter_deduction"
},
{
"name": "snap_maximum_allotment"
},
{
"name": "snap_household_size"
}
],
"entities": [
{
"entity": "Household",
"id_template": "unit_1",
"count": 1,
"inputs": [
{
"name": "household_size",
"dtype": "integer",
"default": 1
},
{
"name": "snap_gross_monthly_income",
"dtype": "decimal",
"default": 0
},
{
"name": "shelter_costs",
"dtype": "decimal",
"default": 0
},
{
"name": "dependent_care_deduction",
"dtype": "decimal",
"default": 0
},
{
"name": "child_support_deduction",
"dtype": "decimal",
"default": 0
}
]
},
{
"entity": "Person",
"id_template": "person_1",
"count_from": "household_size",
"inputs": [
{
"name": "age",
"dtype": "integer",
"default": 30
}
]
}
],
"sample_request": {
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"people": {
"person_1": {
"age": 42
},
"person_2": {
"age": 9
}
},
"spm_units": {
"unit_1": {
"household_size": 2,
"snap_gross_monthly_income": 1200,
"shelter_costs": 900
}
}
},
"variables": [
"snap_benefit_amount",
"snap_net_income"
]
}
}
},
"meta": {
"request_id": "b8ef01ad-3582-4f62-b071-6007472e87f5",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/runtime/packages/{jurisdiction}/{program_id}/graphrules:read
The program’s rule dependency graph (a DAG) derived from the compiled artifact: every derived and parameter rule with its formula and dependency edges, the inputs and relations it reads, and the terminalOutputs that nothing else consumes. Built for visualizing how outputs are computed. 404 when no compiled graph exists for the package.
curl -s https://api.axiom-foundation.org/v1/runtime/packages/us-co/co-snap/graph \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/runtime/packages/us-co/co-snap/graph", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/runtime/packages/us-co/co-snap/graph",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"graph": {
"rules": [
{
"legalId": "us-az:policies/des/faa5/benefit-amount#snap_benefit",
"name": "snap_benefit",
"fileLegalId": "us-az:policies/des/faa5/benefit-amount",
"kind": "derived",
"entity": "Household",
"dtype": "decimal",
"period": null,
"unit": "USD",
"source": null,
"ruleDeps": [
"us-az:policies/des/faa5/benefit-amount#snap_maximum_allotment"
],
"inputDeps": [
"axiom:us-az-snap#input.na_net_income"
],
"relationDeps": [],
"formula": "max(0, (snap_maximum_allotment - na_net_income))"
},
{
"legalId": "us-az:policies/des/faa5/benefit-amount#snap_maximum_allotment",
"name": "snap_maximum_allotment",
"fileLegalId": "us-az:policies/des/faa5/benefit-amount",
"kind": "parameter",
"entity": null,
"dtype": "decimal",
"period": null,
"unit": "USD",
"source": null,
"ruleDeps": [],
"inputDeps": [],
"relationDeps": [],
"formula": "292"
}
],
"inputs": [
{
"legalId": "axiom:us-az-snap#input.na_net_income",
"name": "na_net_income",
"fileLegalId": "axiom:us-az-snap",
"sample": null,
"entity": "Household"
}
],
"relations": [],
"ownOutputs": [
"us-az:policies/des/faa5/benefit-amount#snap_benefit"
],
"terminalOutputs": [
"us-az:policies/des/faa5/benefit-amount#snap_benefit"
]
}
},
"meta": {
"request_id": "6f9c2f0e-1f6b-4c39-9d3e-2f42a1c0e9ab",
"api_version": "0.1.0",
"environment": "production"
}
}POST/v1/calculatecalculate:run
Execute a program for one household and return requested variables with a full attribution trace.
| Field | Type | Req. | Constraints |
|---|---|---|---|
program_id | string | yes | from runtime packages |
jurisdiction | string | yes | from runtime packages |
household | object | yes | see below |
variables | string[] | no | defaults to the package’s default_outputs |
The household object supports these conventions (all optional; omitted inputs use package defaults):
| Key | Meaning |
|---|---|
people | Household members: {"person_1": {"age": 42}}. Member count can drive entity counts. |
spm_units | Unit-level facts: {"unit_1": {"household_size": 2, "snap_gross_monthly_income": 1200}}. The first unit feeds the package’s input mappings. |
facts | Flat fact overrides matched by the package’s fact mappings and aliases. |
period | Calculation month, "YYYY-MM". Invalid values fall back to the package default. |
entities | Advanced: direct per-entity input overrides keyed by the entity ids from the package detail. |
relations | Advanced: explicit relation tuples for packages that consume them. |
Use input names exactly as listed by the package detail (including household_aliases). Read the response as: outputs holds each requested variable; each trace entry attributes one variable to the RuleSpec rule and sources that produced it; runtime.mode says whether a fixture or compiled package executed; treat non-empty warnings as “not an authoritative determination.”
Failure modes: 400 invalid_request (schema), 400 invalid_household (semantic), 422 unsupported_program, 502 runtime_error, 413 payload_too_large.
curl -s -X POST https://api.axiom-foundation.org/v1/calculate \
-H "x-api-key: $AXIOM_API_KEY" \
-H "content-type: application/json" \
-d @- <<'JSON'
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"people": {
"person_1": {
"age": 42
},
"person_2": {
"age": 9
}
},
"spm_units": {
"unit_1": {
"household_size": 2,
"snap_gross_monthly_income": 1200,
"shelter_costs": 900
}
}
},
"variables": [
"snap_benefit_amount",
"snap_net_income"
]
}
JSONconst res = await fetch("https://api.axiom-foundation.org/v1/calculate", {
method: "POST",
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"people": {
"person_1": {
"age": 42
},
"person_2": {
"age": 9
}
},
"spm_units": {
"unit_1": {
"household_size": 2,
"snap_gross_monthly_income": 1200,
"shelter_costs": 900
}
}
},
"variables": [
"snap_benefit_amount",
"snap_net_income"
]
}),
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.post(
"https://api.axiom-foundation.org/v1/calculate",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
json={
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"people": {
"person_1": {
"age": 42
},
"person_2": {
"age": 9
}
},
"spm_units": {
"unit_1": {
"household_size": 2,
"snap_gross_monthly_income": 1200,
"shelter_costs": 900
}
}
},
"variables": [
"snap_benefit_amount",
"snap_net_income"
]
},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"engine": "axiom",
"runtime": {
"id": "fixture-snap-runtime",
"mode": "fixture"
},
"program_id": "co-snap",
"jurisdiction": "us-co",
"outputs": {
"snap_benefit_amount": 339,
"snap_net_income": 692
},
"trace": [
{
"rule_id": "us-co.cdhs_snap_fy_2026_benefit_calculation",
"variable": "snap_benefit_amount",
"value": 339,
"sources": [
"rulespec:us-co.cdhs_snap_fy_2026_benefit_calculation"
]
},
{
"rule_id": "us-co.cdhs_snap_fy_2026_benefit_calculation",
"variable": "snap_net_income",
"value": 692,
"sources": [
"rulespec:us-co.cdhs_snap_fy_2026_benefit_calculation"
]
}
],
"warnings": [
"Experimental fixture runtime for API integration and parity harness development; not an authoritative eligibility determination."
]
},
"meta": {
"request_id": "0f1a6c89-be3c-48e5-81ed-b9df5b166d71",
"api_version": "0.1.0",
"environment": "staging"
}
}POST/v1/calculate/batchcalculate:run
Run up to 25 calculations in one synchronous request. Entries execute concurrently; results return positionally — results[i] always corresponds to requests[i], each independently either {"status":"ok","result":…} or {"status":"error","error":{code,message}}. One invalid entry fails the whole request with a positional message (requests[1]: …) before anything executes; runtime failures of individual entries do not.
For more than 25 households, or work you do not want to hold a connection open for, use async jobs.
curl -s -X POST https://api.axiom-foundation.org/v1/calculate/batch \
-H "x-api-key: $AXIOM_API_KEY" \
-H "content-type: application/json" \
-d @- <<'JSON'
{
"requests": [
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 2,
"snap_gross_monthly_income": 1200,
"shelter_costs": 900
}
}
},
"variables": [
"snap_benefit_amount"
]
},
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 4,
"snap_gross_monthly_income": 2100
}
}
},
"variables": [
"snap_benefit_amount"
]
}
]
}
JSONconst res = await fetch("https://api.axiom-foundation.org/v1/calculate/batch", {
method: "POST",
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"requests": [
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 2,
"snap_gross_monthly_income": 1200,
"shelter_costs": 900
}
}
},
"variables": [
"snap_benefit_amount"
]
},
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 4,
"snap_gross_monthly_income": 2100
}
}
},
"variables": [
"snap_benefit_amount"
]
}
]
}),
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.post(
"https://api.axiom-foundation.org/v1/calculate/batch",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
json={
"requests": [
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 2,
"snap_gross_monthly_income": 1200,
"shelter_costs": 900
}
}
},
"variables": [
"snap_benefit_amount"
]
},
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 4,
"snap_gross_monthly_income": 2100
}
}
},
"variables": [
"snap_benefit_amount"
]
}
]
},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"summary": {
"total": 2,
"succeeded": 2,
"failed": 0
},
"results": [
{
"status": "ok",
"result": {
"engine": "axiom",
"runtime": {
"id": "fixture-snap-runtime",
"mode": "fixture"
},
"program_id": "co-snap",
"jurisdiction": "us-co",
"outputs": {
"snap_benefit_amount": 339
},
"trace": [
{
"rule_id": "us-co.cdhs_snap_fy_2026_benefit_calculation",
"variable": "snap_benefit_amount",
"value": 339,
"sources": [
"rulespec:us-co.cdhs_snap_fy_2026_benefit_calculation"
]
}
],
"warnings": [
"Experimental fixture runtime for API integration and parity harness development; not an authoritative eligibility determination."
]
}
},
{
"status": "ok",
"result": {
"engine": "axiom",
"runtime": {
"id": "fixture-snap-runtime",
"mode": "fixture"
},
"program_id": "co-snap",
"jurisdiction": "us-co",
"outputs": {
"snap_benefit_amount": 430
},
"trace": [
{
"rule_id": "us-co.cdhs_snap_fy_2026_benefit_calculation",
"variable": "snap_benefit_amount",
"value": 430,
"sources": [
"rulespec:us-co.cdhs_snap_fy_2026_benefit_calculation"
]
}
],
"warnings": [
"Experimental fixture runtime for API integration and parity harness development; not an authoritative eligibility determination."
]
}
}
]
},
"meta": {
"request_id": "309fc0cb-beae-4215-bb1d-38b89bf2719f",
"api_version": "0.1.0",
"environment": "staging"
}
}POST/v1/jobs/calculatecalculate:run
Submit up to 50 calculations as a detached job. Returns 202 immediately with a job_id and status_url; execution proceeds with bounded concurrency and writes progress to the shared store. Job records live for 24 hours. durable: false means the store is per-instance memory and the job may not be pollable across instances — configure the shared store for production job use.
curl -s -X POST https://api.axiom-foundation.org/v1/jobs/calculate \
-H "x-api-key: $AXIOM_API_KEY" \
-H "content-type: application/json" \
-d @- <<'JSON'
{
"requests": [
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 2,
"snap_gross_monthly_income": 1200,
"shelter_costs": 900
}
}
},
"variables": [
"snap_benefit_amount"
]
},
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 4,
"snap_gross_monthly_income": 2100
}
}
},
"variables": [
"snap_benefit_amount"
]
}
]
}
JSONconst res = await fetch("https://api.axiom-foundation.org/v1/jobs/calculate", {
method: "POST",
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"requests": [
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 2,
"snap_gross_monthly_income": 1200,
"shelter_costs": 900
}
}
},
"variables": [
"snap_benefit_amount"
]
},
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 4,
"snap_gross_monthly_income": 2100
}
}
},
"variables": [
"snap_benefit_amount"
]
}
]
}),
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.post(
"https://api.axiom-foundation.org/v1/jobs/calculate",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
json={
"requests": [
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 2,
"snap_gross_monthly_income": 1200,
"shelter_costs": 900
}
}
},
"variables": [
"snap_benefit_amount"
]
},
{
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"spm_units": {
"unit_1": {
"household_size": 4,
"snap_gross_monthly_income": 2100
}
}
},
"variables": [
"snap_benefit_amount"
]
}
]
},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"job_id": "job_e2e60409-c46f-443b-b344-1011c7a4558e",
"status": "running",
"total": 2,
"status_url": "/v1/jobs/job_e2e60409-c46f-443b-b344-1011c7a4558e",
"durable": false
},
"meta": {
"request_id": "540670d8-ef8f-4fde-a7e3-b2a3374a2e88",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/jobs/{job_id}calculate:run
Poll a submitted job. status progresses pending → running → succeeded | failed; completed/total give progress; on success results holds the positional outcomes exactly as batch returns them. Jobs are visible only to the key that created them — unknown and foreign ids are both 404. Poll with backoff (e.g. 500 ms doubling to 5 s).
curl -s https://api.axiom-foundation.org/v1/jobs/job_e2e60409-c46f-443b-b344-1011c7a4558e \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/jobs/job_e2e60409-c46f-443b-b344-1011c7a4558e", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/jobs/job_e2e60409-c46f-443b-b344-1011c7a4558e",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"id": "job_e2e60409-c46f-443b-b344-1011c7a4558e",
"status": "succeeded",
"created_at": "2026-07-02T02:47:18.679Z",
"total": 2,
"completed": 2,
"api_key_id": "partner-a",
"started_at": "2026-07-02T02:47:18.679Z",
"results": [
{
"status": "ok",
"result": {
"engine": "axiom",
"runtime": {
"id": "fixture-snap-runtime",
"mode": "fixture"
},
"program_id": "co-snap",
"jurisdiction": "us-co",
"outputs": {
"snap_benefit_amount": 339
},
"trace": [
{
"rule_id": "us-co.cdhs_snap_fy_2026_benefit_calculation",
"variable": "snap_benefit_amount",
"value": 339,
"sources": [
"rulespec:us-co.cdhs_snap_fy_2026_benefit_calculation"
]
}
],
"warnings": [
"Experimental fixture runtime for API integration and parity harness development; not an authoritative eligibility determination."
]
}
}
],
"finished_at": "2026-07-02T02:47:18.680Z"
},
"meta": {
"request_id": "5a5706e1-372a-42bc-8c09-3f8147ed514b",
"api_version": "0.1.0",
"environment": "staging"
}
}Truncated: results beyond the first entry omitted.
POST/v1/household/{country_id}/calculatecompat:policyengine
Migration surface — existing PolicyEngine household-API integrations only. This endpoint requires the dedicated compat:policyengine scope, granted only to keys issued for migrating partners; ordinary API keys (including trial keys) receive 403. New integrations should ignore this section entirely and use POST /v1/calculate with native Axiom variables, which carry full trace and legal-source provenance.
Accepts the PolicyEngine v1 wire format — entity groups (people, tax_units, spm_units, families, households, marital_units) whose variables map period keys to values, with null meaning “compute this” — and mirrors the PolicyEngine response envelope (status/message/result), so a migrating partner can switch base URLs without changing client code.
The axiom sidecar reports exactly what happened: computed lists every variable Axiom calculated (with the package used), unsupported lists every requested variable Axiom cannot cover yet with a precise reason (no mapping, no state on the household, or no executable package for the state). Uncovered variables keep their null in result — partial coverage is expected during migration and is measurable per request.
Constraints: only country_id us; axes are rejected with 400; the state is read from households.*.state_code/state_name; bare-year period keys return annual totals (monthly benefits × 12), monthly keys return monthly values. Coverage currently maps snap onto Axiom’s state SNAP packages. See docs/pe-household-compat.md for the migration process and the comparison harness that guards parity.
curl -s -X POST https://api.axiom-foundation.org/v1/household/us/calculate \
-H "x-api-key: $AXIOM_API_KEY" \
-H "content-type: application/json" \
-d @- <<'JSON'
{
"household": {
"people": {
"parent": {
"age": {
"2026": 34
},
"employment_income": {
"2026": 18000
}
},
"child": {
"age": {
"2026": 6
}
}
},
"spm_units": {
"spm": {
"members": [
"parent",
"child"
],
"snap": {
"2026": null
}
}
},
"tax_units": {
"tu": {
"members": [
"parent",
"child"
],
"eitc": {
"2026": null
}
}
},
"households": {
"hh": {
"members": [
"parent",
"child"
],
"state_code": {
"2026": "CO"
}
}
}
}
}
JSON{
"status": "ok",
"message": null,
"result": {
"spm_units": {
"spm": {
"members": [
"parent",
"child"
],
"snap": {
"2026": 1908
}
}
},
"\u2026": "\u2026(request household echoed back with computed values filled)"
},
"axiom": {
"request_id": "0649271b-fde8-43a7-be81-904690adf435",
"engine": "axiom",
"runtime": {
"id": "fixture-snap-runtime",
"mode": "fixture"
},
"jurisdiction": "us-co",
"package": {
"program_id": "co-snap",
"jurisdiction": "us-co"
},
"period": "2026-01",
"computed": [
{
"entity_group": "spm_units",
"entity_id": "spm",
"variable": "snap",
"period": "2026",
"value": 1908
}
],
"unsupported": [
{
"entity_group": "tax_units",
"entity_id": "tu",
"variable": "eitc",
"period": "2026",
"reason": "No Axiom mapping for this variable yet."
}
],
"warnings": [
"Experimental fixture runtime for API integration and parity harness development; not an authoritative eligibility determination."
]
}
}GET/v1/parity/casesadmin:parity
Canonical parity checks: fixed calculation requests with expected outputs, tolerances, trace variables, and any external-engine comparisons. runtime_supported tells you whether the active runtime can execute each case.
curl -s https://api.axiom-foundation.org/v1/parity/cases \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/parity/cases", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/parity/cases",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"cases": [
{
"id": "co-snap-us-co-family-1",
"description": "Colorado SNAP canonical two-person household.",
"program_id": "co-snap",
"jurisdiction": "us-co",
"runtime_supported": true,
"variables": [
"snap_benefit_amount",
"snap_net_income"
],
"axiom_request": {
"program_id": "co-snap",
"jurisdiction": "us-co",
"household": {
"people": {
"person_1": {
"age": 42
},
"person_2": {
"age": 9
}
},
"spm_units": {
"unit_1": {
"household_size": 2,
"snap_gross_monthly_income": 1200,
"shelter_costs": 900
}
}
},
"variables": [
"snap_benefit_amount",
"snap_net_income"
]
},
"expected_axiom_outputs": {
"snap_benefit_amount": 478,
"snap_net_income": 226.5
},
"trace_variables": [
"gross_income",
"snap_standard_deduction",
"snap_earned_income_deduction",
"snap_net_income_pre_shelter",
"snap_standard_utility_allowance",
"shelter_costs",
"excess_shelter_deduction",
"snap_net_income",
"snap_maximum_allotment",
"snap_household_food_contribution",
"snap_benefit_amount"
],
"notes": [
"Canonical values are monthly. Convenience input shelter_costs is treated as total shelter costs for this Axiom case.",
"Utility allowance outputs are requested separately so client parity tools can identify whether another engine adds them by default."
],
"external_comparisons": [
{
"id": "co-snap-policyengine-current",
"engine": "policyengine",
"description": "PolicyEngine current comparison for the Colorado SNAP canonical two-person household.",
"request": {
"country_id": "us",
"version": "current",
"household": {
"households": {
"household": {
"members": [
"adult",
"child"
],
"state_code_str": {
"2026": "CO"
}
}
},
"people": {
"adult": {
"age": {
"2026": 42
},
"employment_income": {
"2026": 14400
}
},
"child": {
"age": {
"2026": 9
}
}
},
"spm_units": {
"spm_unit": {
"members": [
"adult",
"child"
],
"snap": {
"2026": null
},
"snap_net_income": {
"2026": null
},
"snap_assets": {
"2026": 0
},
"housing_cost": {
"2026": 10800
},
"snap_standard_utility_allowance": {
"2026": null
},
"snap_utility_allowance": {
"2026": null
},
"snap_gross_income": {
"2026": null
},
"snap_standard_deduction": {
"2026": null
},
"snap_earned_income_deduction": {
"2026": null
},
"snap_net_income_pre_shelter": {
"2026": null
},
"snap_excess_shelter_expense_deduction": {
"2026": null
},
"snap_max_allotment": {
"2026": null
},
"snap_expected_contribution": {
"2026": null
}
}
},
"tax_units": {
"tax_unit": {
"members": [
"adult",
"child"
]
}
}
}
},
"mappings": [
{
"axiom_variable": "snap_benefit_amount",
"external_path": "result.spm_units.spm_unit.snap.2026",
"transform": "annual_to_monthly"
},
{
"axiom_variable": "snap_net_income",
"external_path": "result.spm_units.spm_unit.snap_net_income.2026",
"transform": "annual_to_monthly"
}
],
"trace_mappings": [
{
"label": "Gross income",
"axiom_variable": "gross_income",
"external_variable": "snap_gross_income",
"external_paths": [
"result.spm_units.spm_unit.snap_gross_income.2026"
],
"transform": "annual_to_monthly"
},
{
"label": "Standard deduction",
"axiom_variable": "snap_standard_deduction",
"external_variable": "snap_standard_deduction",
"external_paths": [
"result.spm_units.spm_unit.snap_standard_deduction.2026"
],
"transform": "annual_to_monthly"
},
{
"label": "Earned income deduction",
"axiom_variable": "snap_earned_income_deduction",
"external_variable": "snap_earned_income_deduction",
"external_paths": [
"result.spm_units.spm_unit.snap_earned_income_deduction.2026"
],
"transform": "annual_to_monthly"
},
{
"label": "Net income before shelter",
"axiom_variable": "snap_net_income_pre_shelter",
"external_variable": "snap_net_income_pre_shelter",
"external_paths": [
"result.spm_units.spm_unit.snap_net_income_pre_shelter.2026"
],
"transform": "annual_to_monthly"
},
{
"label": "Utility allowance",
"axiom_variable": "snap_standard_utility_allowance",
"external_variable": "snap_utility_allowance",
"external_paths": [
"result.spm_units.spm_unit.snap_utility_allowance.2026"
],
"transform": "annual_to_monthly"
},
{
"label": "Shelter costs used",
"axiom_variable": "shelter_costs",
"external_variable": "housing_cost + snap_utility_allowance",
"external_paths": [
"result.spm_units.spm_unit.housing_cost.2026",
"result.spm_units.spm_unit.snap_utility_allowance.2026"
],
"transform": "annual_to_monthly_sum"
},
{
"label": "Excess shelter deduction",
"axiom_variable": "excess_shelter_deduction",
"external_variable": "snap_excess_shelter_expense_deduction",
"external_paths": [
"result.spm_units.spm_unit.snap_excess_shelter_expense_deduction.2026"
],
"transform": "annual_to_monthly"
},
{
"label": "Net income",
"axiom_variable": "snap_net_income",
"external_variable": "snap_net_income",
"external_paths": [
"result.spm_units.spm_unit.snap_net_income.2026"
],
"transform": "annual_to_monthly"
},
{
"label": "Maximum allotment",
"axiom_variable": "snap_maximum_allotment",
"external_variable": "snap_max_allotment",
"external_paths": [
"result.spm_units.spm_unit.snap_max_allotment.2026"
],
"transform": "annual_to_monthly"
},
{
"label": "Expected contribution",
"axiom_variable": "snap_household_food_contribution",
"external_variable": "snap_expected_contribution",
"external_paths": [
"result.spm_units.spm_unit.snap_expected_contribution.2026"
],
"transform": "annual_to_monthly"
},
{
"label": "Benefit amount",
"axiom_variable": "snap_benefit_amount",
"external_variable": "snap",
"external_paths": [
"result.spm_units.spm_unit.snap.2026"
],
"transform": "annual_to_monthly"
}
],
"notes": [
"PolicyEngine employment_income is annual, so this request sends $14,400 to represent $1,200/month.",
"PolicyEngine housing_cost is annual in the 2026 request, so this request sends $10,800 to represent $900/month.",
"PolicyEngine current adds the Colorado SNAP utility allowance in this case; the Axiom canonical case treats shelter_costs as the total shelter input and has zero utility allowance outputs."
],
"tolerance": {
"amount": 0.01
}
}
],
"tolerance": {
"amount": 0.01
}
}
]
},
"meta": {
"request_id": "19b402b5-995d-4cfe-8b4f-636409518362",
"api_version": "0.1.0",
"environment": "staging"
}
}Truncated: 2 more case(s) omitted.
POST/v1/parity/runadmin:parity
Execute every runtime-supported parity case and compare against expected outputs. No request body. Returns a summary (total/matching/different/errored/skipped), per-case variable-level diffs, trace outputs, and skipped_cases with reasons. Run after deployments to confirm calculation behavior.
curl -s -X POST https://api.axiom-foundation.org/v1/parity/run \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/parity/run", {
method: "POST",
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.post(
"https://api.axiom-foundation.org/v1/parity/run",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"summary": {
"total": 3,
"matching": 3,
"different": 0,
"errored": 0,
"skipped": 0
},
"results": [
{
"id": "co-snap-us-co-family-1",
"description": "Colorado SNAP canonical two-person household.",
"program_id": "co-snap",
"jurisdiction": "us-co",
"status": "matching",
"outputs": {
"snap_benefit_amount": 478,
"snap_net_income": 226.5
},
"expected_outputs": {
"snap_benefit_amount": 478,
"snap_net_income": 226.5
},
"trace_outputs": {
"gross_income": 1200,
"snap_standard_deduction": 209,
"snap_earned_income_deduction": 240,
"snap_net_income_pre_shelter": 751,
"snap_standard_utility_allowance": 0,
"shelter_costs": 900,
"excess_shelter_deduction": 524.5,
"snap_net_income": 226.5,
"snap_maximum_allotment": 546,
"snap_household_food_contribution": 67.95,
"snap_benefit_amount": 478
},
"calculation_trace": [
{
"rule_id": "snap_allotment",
"variable": "snap_benefit_amount",
"value": 478,
"sources": [
"us-co:regulations/10-ccr-2506-1/4.207.2#snap_allotment"
]
},
{
"rule_id": "snap_net_income",
"variable": "snap_net_income",
"value": 226.5,
"sources": [
"us:statutes/7/2014/e/6/A#snap_net_income"
]
},
{
"rule_id": "gross_income",
"variable": "gross_income",
"value": 1200,
"sources": [
"us-co:policies/cdhs/snap/fy-2026-benefit-calculation#gross_income"
]
},
{
"rule_id": "snap_standard_deduction",
"variable": "snap_standard_deduction",
"value": 209,
"sources": [
"us:policies/usda/snap/fy-2026-cola/deductions#snap_standard_deduction"
]
},
{
"rule_id": "snap_earned_income_deduction",
"variable": "snap_earned_income_deduction",
"value": 240,
"sources": [
"us:statutes/7/2014/e/2#snap_earned_income_deduction"
]
},
{
"rule_id": "snap_net_income_pre_shelter",
"variable": "snap_net_income_pre_shelter",
"value": 751,
"sources": [
"us:statutes/7/2014/e/6/A#snap_net_income_pre_shelter"
]
},
{
"rule_id": "snap_standard_utility_allowance",
"variable": "snap_standard_utility_allowance",
"value": 0,
"sources": [
"us-co:regulations/10-ccr-2506-1/4.407.31#snap_standard_utility_allowance"
]
},
{
"rule_id": "shelter_costs",
"variable": "shelter_costs",
"value": 900,
"sources": [
"us-co:policies/cdhs/snap/fy-2026-benefit-calculation#shelter_costs"
]
},
{
"rule_id": "excess_shelter_deduction",
"variable": "excess_shelter_deduction",
"value": 524.5,
"sources": [
"us-co:regulations/10-ccr-2506-1/4.407.3#excess_shelter_deduction"
]
},
{
"rule_id": "snap_maximum_allotment",
"variable": "snap_maximum_allotment",
"value": 546,
"sources": [
"us:policies/usda/snap/fy-2026-cola/maximum-allotments#snap_maximum_allotment"
]
},
{
"rule_id": "snap_household_food_contribution",
"variable": "snap_household_food_contribution",
"value": 67.95,
"sources": [
"us:statutes/7/2017/a#snap_household_food_contribution"
]
}
],
"notes": [
"Canonical values are monthly. Convenience input shelter_costs is treated as total shelter costs for this Axiom case.",
"Utility allowance outputs are requested separately so client parity tools can identify whether another engine adds them by default."
],
"comparison": {
"status": "matching",
"changed": [],
"missing": [],
"extra": []
},
"runtime": {
"id": "axiom-rules-engine:co-snap",
"mode": "compiled"
},
"warnings": []
},
{
"id": "snap-us-az-family-1",
"description": "Arizona SNAP canonical three-person household using package-native compiled inputs.",
"program_id": "snap",
"jurisdiction": "us-az",
"status": "matching",
"outputs": {
"snap_benefit_amount": 335.4,
"snap_net_income": 1442,
"snap_gross_monthly_income": 1800,
"snap_eligible": true,
"snap_excess_shelter_deduction": 0
},
"expected_outputs": {
"snap_benefit_amount": 335.4,
"snap_net_income": 1442,
"snap_gross_monthly_income": 1800,
"snap_eligible": true,
"snap_excess_shelter_deduction": 0
},
"trace_outputs": {
"snap_gross_monthly_income": 1800,
"snap_excess_shelter_deduction": 0,
"snap_net_income": 1442,
"snap_maximum_allotment": 768,
"snap_regular_month_allotment": 335.4,
"snap_benefit_amount": 335.4
},
"calculation_trace": [
{
"rule_id": "snap_benefit",
"variable": "snap_benefit_amount",
"value": 335.4,
"sources": [
"snap_benefit"
]
},
{
"rule_id": "snap_net_income",
"variable": "snap_net_income",
"value": 1442,
"sources": [
"us-az:policies/des/faa5/na-eligibility-and-benefit-determination/fy-2026-benefit-calculation#snap_net_income"
]
},
{
"rule_id": "snap_gross_monthly_income",
"variable": "snap_gross_monthly_income",
"value": 1800,
"sources": [
"us-az:policies/des/faa5/na-eligibility-and-benefit-determination/fy-2026-benefit-calculation#snap_gross_monthly_income"
]
},
{
"rule_id": "snap_eligible",
"variable": "snap_eligible",
"value": true,
"sources": [
"us-az:policies/des/faa5/na-eligibility-and-benefit-determination/fy-2026-benefit-calculation#snap_eligible"
]
},
{
"rule_id": "snap_excess_shelter_deduction",
"variable": "snap_excess_shelter_deduction",
"value": 0,
"sources": [
"us-az:policies/des/faa5/na-eligibility-and-benefit-determination/fy-2026-benefit-calculation#snap_excess_shelter_deduction"
]
},
{
"rule_id": "snap_maximum_allotment",
"variable": "snap_maximum_allotment",
"value": 768,
"sources": [
"us-az:policies/des/faa5/na-eligibility-and-benefit-determination/fy-2026-benefit-calculation#snap_maximum_allotment"
]
},
{
"rule_id": "snap_regular_month_allotment",
"variable": "snap_regular_month_allotment",
"value": 335.4,
"sources": [
"us-az:policies/des/faa5/na-eligibility-and-benefit-determination/fy-2026-benefit-calculation#snap_regular_month_allotment"
]
}
],
"notes": [
"Canonical values are monthly. This Arizona SNAP case exercises the DES compiled package inputs exposed by the admitted artifact.",
"The Arizona package currently exposes package-native inputs rather than the broader generic SNAP household fact contract."
],
"comparison": {
"status": "matching",
"changed": [],
"missing": [],
"extra": []
},
"runtime": {
"id": "axiom-rules-engine:us-az-snap",
"mode": "compiled"
},
"warnings": []
},
{
"id": "universal-credit-uk-single-claimant-1",
"description": "UK Universal Credit canonical single claimant household.",
"program_id": "universal-credit",
"jurisdiction": "uk",
"status": "matching",
"outputs": {
"universal_credit_award_amount": 424.9,
"universal_credit_maximum_amount": 424.9,
"standard_allowance_amount": 424.9
},
"expected_outputs": {
"universal_credit_award_amount": 424.9,
"universal_credit_maximum_amount": 424.9,
"standard_allowance_amount": 424.9
},
"trace_outputs": {},
"calculation_trace": [
{
"rule_id": "universal_credit_award_amount",
"variable": "universal_credit_award_amount",
"value": 424.9,
"sources": [
"uk:statutes/ukpga/2012/5/8#universal_credit_award_amount"
]
},
{
"rule_id": "universal_credit_maximum_amount",
"variable": "universal_credit_maximum_amount",
"value": 424.9,
"sources": [
"uk:statutes/ukpga/2012/5/8#universal_credit_maximum_amount"
]
},
{
"rule_id": "standard_allowance_amount",
"variable": "standard_allowance_amount",
"value": 424.9,
"sources": [
"uk:regulations/uksi/2013/376/36#standard_allowance_amount"
]
}
],
"notes": [],
"comparison": {
"status": "matching",
"changed": [],
"missing": [],
"extra": []
},
"runtime": {
"id": "axiom-rules-engine:uk-universal-credit-fy-2026-27",
"mode": "compiled"
},
"warnings": []
}
],
"skipped_cases": []
},
"meta": {
"request_id": "0a489579-1c73-4365-910b-f2d0a1496d11",
"api_version": "0.1.0",
"environment": "local"
}
}POST/v1/keys/trialno auth
Self-service trial key: no signup, expires after 14 days, scoped to rules:read, sources:read, graphs:read, and calculate:run, rate-limited to 30 requests/minute. Issuance is capped per client and globally per day, and every issuance lands in the admin audit trail. The raw key appears exactly once in the response — only its hash is persisted. Durable keys are issued by administrators via /v1/admin/keys.
The optional label (≤ 120 characters) is stored as the key’s note so administrators can tell trials apart.
curl -s -X POST https://api.axiom-foundation.org/v1/keys/trial \
-H "content-type: application/json" \
-d '{"label": "quickstart"}'const res = await fetch("https://api.axiom-foundation.org/v1/keys/trial", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ label: "quickstart" }),
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data.key); // store it now; only a hash is persistedimport requests
res = requests.post(
"https://api.axiom-foundation.org/v1/keys/trial",
json={"label": "quickstart"},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]["key"]) # store it now; only a hash is persisted{
"status": "ok",
"data": {
"key": "axiom_...",
"key_id": "trial_982896b1",
"scopes": [
"rules:read",
"sources:read",
"graphs:read",
"calculate:run"
],
"expires_at": "2026-07-19T15:14:33.312Z",
"rate_limit": {
"requests": 30,
"window_seconds": 60
},
"ttl_days": 14,
"durable": true,
"warning": "Store the key value now; only its hash is persisted. Trial keys expire automatically — for a durable key, contact an Axiom administrator."
},
"meta": {
"request_id": "d6401c58-2bdb-4c75-8079-277669e56663",
"api_version": "0.1.0",
"environment": "production"
}
}GET/v1/admin/analyticsadmin:analytics
Usage analytics collected in-process since instance start: totals by status code, per-route traffic with latency buckets, per-key usage (key ids only — never key material), auth/security event counters, and store errors. Add ?scope=global to merge the flushed snapshots of every live instance (requires the shared store; 503 store_unavailable if unreachable).
curl -s https://api.axiom-foundation.org/v1/admin/analytics?scope=global \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/admin/analytics?scope=global", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/admin/analytics?scope=global",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"instance_id": "5c4ef3bd-b386-4294-b515-03c3b992a780",
"collected_since": "2026-07-02T02:09:21.472Z",
"generated_at": "2026-07-02T02:09:35.637Z",
"totals": {
"requests": 16,
"by_status": {
"200": 12,
"400": 1,
"401": 1,
"403": 1,
"404": 1
}
},
"auth_events": {
"unauthorized": 1,
"insufficient_scope": 1,
"rate_limited": 0,
"auth_throttled": 0,
"auth_misconfigured": 0
},
"store_errors": 0,
"routes": [
{
"route": "GET /v1/health",
"requests": 2,
"success": 2,
"client_errors": 0,
"server_errors": 0,
"avg_duration_ms": 1,
"max_duration_ms": 1,
"latency_buckets": {
"le_25ms": 2,
"le_100ms": 0,
"le_500ms": 0,
"le_2000ms": 0,
"gt_2000ms": 0
}
},
{
"route": "GET /v1/programs",
"requests": 2,
"success": 1,
"client_errors": 1,
"server_errors": 0,
"avg_duration_ms": 1,
"max_duration_ms": 1,
"latency_buckets": {
"le_25ms": 2,
"le_100ms": 0,
"le_500ms": 0,
"le_2000ms": 0,
"gt_2000ms": 0
}
},
{
"route": "POST /v1/search",
"requests": 2,
"success": 1,
"client_errors": 1,
"server_errors": 0,
"avg_duration_ms": 5,
"max_duration_ms": 8,
"latency_buckets": {
"le_25ms": 2,
"le_100ms": 0,
"le_500ms": 0,
"le_2000ms": 0,
"gt_2000ms": 0
}
}
],
"keys": [
{
"api_key_id": "partner-a",
"requests": 10,
"rate_limited": 0,
"last_used_at": "2026-07-02T02:09:35.625Z"
}
]
},
"meta": {
"request_id": "02d94858-cbef-43de-8128-ef760e6f4920",
"api_version": "0.1.0",
"environment": "staging"
}
}Local-scope example. Truncated: 9 more route entries omitted.
GET/v1/admin/usageadmin:analytics
Durable per-key request counts aggregated by calendar month (UTC), retained ~13 months in the shared store — the audit-grade complement to the live analytics snapshot, suitable for partner reporting and quota reviews. ?month=YYYY-MM selects a month (default: current).
curl -s https://api.axiom-foundation.org/v1/admin/usage?month=2026-07 \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/admin/usage?month=2026-07", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/admin/usage?month=2026-07",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"month": "2026-07",
"usage": [
{
"api_key_id": "ops-admin",
"requests": 4
}
],
"store": "memory"
},
"meta": {
"request_id": "982bf5d4-4674-47f9-b5a6-27f2e36dbaab",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/admin/keysadmin:keys
Configured API keys as metadata: id, scopes, registry status, runtime revocation state, prefix, rate limit, owner, timestamps. Key values and hashes are never returned.
curl -s https://api.axiom-foundation.org/v1/admin/keys \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/admin/keys", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/admin/keys",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"keys": [
{
"id": "partner-a",
"scopes": [
"rules:read",
"sources:read",
"graphs:read",
"calculate:run"
],
"status": "active",
"runtime_revoked": false,
"rate_limit": {
"requests": 120,
"window_seconds": 60
}
},
{
"id": "ops-admin",
"scopes": [
"*"
],
"status": "active",
"runtime_revoked": false
}
],
"store": "memory"
},
"meta": {
"request_id": "69c3cdf9-f877-4d1d-be7d-2d22775f4aca",
"api_version": "0.1.0",
"environment": "staging"
}
}POST/v1/admin/keysadmin:keys
Issue a new API key at runtime. The raw key is returned exactly once; only its sha256 hash is persisted (to the shared store, marked by source: "store" in the key listing). The new key authenticates within ~15 seconds on all instances. durable: false warns that a memory-store key will not survive restarts — configure the shared store before issuing real keys.
| Field | Type | Req. | Constraints |
|---|---|---|---|
id | string | yes | 3–64 chars, [a-z0-9_-]; must be unique (409 key_id_conflict) |
scopes | string[] | yes | non-empty |
owner, note | string | no | ≤ 120 / ≤ 500 chars |
expires_at | string | no | ISO timestamp |
rate_limit | object | no | {requests, window_seconds}, positive integers |
Every issuance is recorded in the audit trail.
curl -s -X POST https://api.axiom-foundation.org/v1/admin/keys \
-H "x-api-key: $AXIOM_API_KEY" \
-H "content-type: application/json" \
-d '{"id": "partner-b", "scopes": ["rules:read", "calculate:run"], "owner": "partner-b-co", "rate_limit": {"requests": 120, "window_seconds": 60}}'const res = await fetch("https://api.axiom-foundation.org/v1/admin/keys", {
method: "POST",
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"id": "partner-b",
"scopes": [
"rules:read",
"calculate:run"
],
"owner": "partner-b-co",
"rate_limit": {
"requests": 120,
"window_seconds": 60
}
}),
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.post(
"https://api.axiom-foundation.org/v1/admin/keys",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
json={
"id": "partner-b",
"scopes": [
"rules:read",
"calculate:run"
],
"owner": "partner-b-co",
"rate_limit": {
"requests": 120,
"window_seconds": 60
}
},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"key": "axiom_EXAMPLE0nLyREDACTEDrawKEYvALUEshownONCEonISSUE00",
"entry": {
"id": "partner-b",
"prefix": "axiom_EXAMPLE0",
"scopes": [
"rules:read",
"calculate:run"
],
"status": "active",
"created_at": "2026-07-02T02:47:18.403Z",
"owner": "partner-b-co",
"rate_limit": {
"requests": 120,
"window_seconds": 60
}
},
"durable": false,
"warning": "Store the key value now; only its hash is persisted. The store is per-instance memory: this key is NOT durable across restarts or instances."
},
"meta": {
"request_id": "b362cd3e-2f16-4fcf-b52e-df8306215b59",
"api_version": "0.1.0",
"environment": "staging"
}
}POST/v1/admin/keys/{key_id}/revokeadmin:keys
Revoke a key at runtime; takes effect within 30 seconds on every instance (revocations are read through a 30-second cache). durable: true means the revocation lives in the shared store and survives restarts; permanent revocation still requires marking the key revoked in the registry. 404 for unknown ids.
curl -s -X POST https://api.axiom-foundation.org/v1/admin/keys/partner-a/revoke \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/admin/keys/partner-a/revoke", {
method: "POST",
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.post(
"https://api.axiom-foundation.org/v1/admin/keys/partner-a/revoke",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"id": "partner-a",
"revoked": true,
"durable": false,
"note": "Revocation is per-instance and non-durable; remove the key from the registry and redeploy for permanence."
},
"meta": {
"request_id": "a116f613-583e-4e77-94f9-89a5d75e59a6",
"api_version": "0.1.0",
"environment": "staging"
}
}GET/v1/admin/validation/runsadmin:analytics
History of published validation runs (the PE household comparison harness posts here with --publish). GET /v1/admin/validation/runs lists summaries — parity/drift/coverage totals, real average per-case latency, API version, and the serving contract hash; GET /v1/admin/validation/runs/{run_id} returns one run’s full per-variable rows and per-case phase timings; GET /v1/admin/validation/migration returns the migration ledger (partner demand vs current coverage); POST /v1/admin/validation/runs records a run (180-day retention, audited). The validation dashboard renders this history with trends and run-over-run diffs.
GET/v1/admin/auditadmin:keys
Durable audit trail of admin actions (key issuance and revocation), newest first, up to 200 entries, retained 90 days in the shared store. Each entry records the acting key id, client address, request id, timestamp, action, and target — never key material.
curl -s https://api.axiom-foundation.org/v1/admin/audit \
-H "x-api-key: $AXIOM_API_KEY"const res = await fetch("https://api.axiom-foundation.org/v1/admin/audit", {
headers: {
"x-api-key": process.env.AXIOM_API_KEY,
},
});
const payload = await res.json();
if (payload.status !== "ok") throw new Error(payload.error.code);
console.log(payload.data);import os
import requests
res = requests.get(
"https://api.axiom-foundation.org/v1/admin/audit",
headers={"x-api-key": os.environ["AXIOM_API_KEY"]},
timeout=30,
)
payload = res.json()
assert payload["status"] == "ok", payload["error"]
print(payload["data"]){
"status": "ok",
"data": {
"entries": [
{
"at": "2026-07-02T02:47:18.418Z",
"action": "key.revoked",
"target": "partner-b",
"actor": "ops-admin",
"client": null,
"request_id": "ac99a772-1959-4e9d-9b51-61fef67f2673"
},
{
"at": "2026-07-02T02:47:18.404Z",
"action": "key.issued",
"target": "partner-b",
"actor": "ops-admin",
"client": null,
"request_id": "b362cd3e-2f16-4fcf-b52e-df8306215b59",
"detail": {
"scopes": [
"rules:read",
"calculate:run"
],
"owner": "partner-b-co"
}
}
],
"store": "memory"
},
"meta": {
"request_id": "8ffedee0-4140-47d8-a251-87e2583a1092",
"api_version": "0.1.0",
"environment": "staging"
}
}Truncated to the two most recent entries.
Abuse controls
GET /v1/admin/kill reads and POST /v1/admin/kill updates the durable trial traffic and mint switches. Both require admin:keys.