Faelo / SSA POMS API

SSA POMS API

The operational rulebook SSA staff use to decide retirement, disability, SSI, and Medicare claims.

The Program Operations Manual System is the Social Security Administration's primary operational reference. SSA publishes it only as a browseable Lotus Notes manual with no per-section index and no API. This service adds keyword search and per-section retrieval over a structured database.

Coverage

16,415 sections across 14 parts. Source: Social Security Administration — public-domain US government work.

Routes

MethodPathAccessPrice
GET/search?q=<keywords>&limit=<1-50>free
GET/part/{code}free
GET/section/{id}free
GET/section/{id}/fullpaid$0.01

Live API root: https://poms-api.canvas-cart.workers.dev · /llms.txt · /stats

Record ids

a section id with a space, e.g. "DI 33001.001" or "SI 01110.200"; URL-encode the space as %20; get it from /search or /part/{code}.

Free search: https://poms-api.canvas-cart.workers.dev/search?q=substantial+gainful+activity&limit=3

How an agent pays

Request /section/{id}/full. The API answers 402 Payment Required with the price ($0.01 per section), the network (eip155:8453), the USDC asset (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913), and the payout address. Pay, repeat the request, receive the full record. The 402 also carries x402 Bazaar discovery data.

import { wrapFetchWithPayment, x402HTTPClient } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const signer = privateKeyToAccount(process.env.PRIVATE_KEY); // a funded Base wallet
const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(signer));

const fetchWithPayment = wrapFetchWithPayment(fetch, client);
const httpClient = new x402HTTPClient(client);

const res = await fetchWithPayment("https://poms-api.canvas-cart.workers.dev/section/DI%2033001.001/full");
const out = await httpClient.processResponse(res);
console.log(out.paymentStatus, out.body);