Facts about how P0 works, not legal advice, not a compliance statement, not a certification.
Operator: dev Mike. P0 is run by a self-developing ecosystem of AI agents on behalf of P0's dev Mike. Who runs P0.
Products, sources and refusals
A route whose data is older than its limit answers 503 with charged:false before any payment is taken; the limit for each route is in its refused_before_payment list. On the sanctions products the 48-hour limit applies to the OFAC SDN check time (checked_at). The other lists are served from their last good copy; each answer states their date and fresh per list in lists[], and they are not refused when older.
/sanctions/check
Screens a wallet address (exact match) or a Latin-script name (scored match) against the sanctions lists below.
Sources and licence notices
- OFAC SDN: U.S. government work (17 U.S.C. 105).
- UK Sanctions List: Contains public sector information licensed under the Open Government Licence v3.0.
- EU Financial Sanctions: Source: European Commission, Financial Sanctions Files, CC BY 4.0; indexed and normalised by P0.
- Canada Consolidated Autonomous Sanctions: Contains information licensed under the Open Government Licence - Canada.
- US Consolidated Screening List: U.S. government work (trade.gov).
Limits
- The UK and Canadian lists are screened for organisations, vessels and wallet addresses only: their entries for individuals are not included because their open licences do not cover personal data, and a wallet address in such an entry is matched without the person's details.
- Names must be Latin script; transliterate other scripts first.
- The UN Security Council consolidated list is not covered (UN Security Council consolidated list).
Refused before payment (charged: false)
- 503: the OFAC SDN check time of the index (checked_at) is older than 48 hours, or the index is not loaded; the other lists are not refused for age: each answer states their date and fresh in lists[], and fresh:false means the last good copy (sanctions.js STALE_HOURS)
- 422: a name made only of words that are very common in the SDN list (too_generic) (sanctions.js precheck)
- 400: the address or name is malformed
/sanctions/check/batch
The same screening for up to 25 addresses in one POST body (MAX_ADDRESSES), so no name or address travels in a URL.
Sources and licence notices
- OFAC SDN: U.S. government work (17 U.S.C. 105).
- UK Sanctions List: Contains public sector information licensed under the Open Government Licence v3.0.
- EU Financial Sanctions: Source: European Commission, Financial Sanctions Files, CC BY 4.0; indexed and normalised by P0.
- Canada Consolidated Autonomous Sanctions: Contains information licensed under the Open Government Licence - Canada.
- US Consolidated Screening List: U.S. government work (trade.gov).
Limits
Refused before payment (charged: false)
- 503: same freshness rule as /sanctions/check (48 hours) (sanctions.js STALE_HOURS via SANCT.ready())
- 400: the body is not valid, too large (20000 bytes at most) or has more than 25 addresses (sanctions_batch.js MAX_BODY_BYTES, MAX_ADDRESSES)
/sanctions/changes
What was added, removed or amended between successive list files P0 compared, with the list version date of each change.
Sources and licence notices
- OFAC SDN: U.S. government work (17 U.S.C. 105).
- UK Sanctions List: Contains public sector information licensed under the Open Government Licence v3.0.
- EU Financial Sanctions: Source: European Commission, Financial Sanctions Files, CC BY 4.0; indexed and normalised by P0.
- Canada Consolidated Autonomous Sanctions: Contains information licensed under the Open Government Licence - Canada.
- US Consolidated Screening List: U.S. government work (trade.gov).
Limits
- History kept: 90 days (RETENTION_DAYS).
- Not covered: UN Security Council consolidated list.
Refused before payment (charged: false)
- 503: the change feed was not refreshed in the last 48 hours (sanctions_changes.js STALE_HOURS)
- 400: since is missing, not a real date, in the future, or more than 366 days back
/check/counterparty
One call for a company name: sanctions screening, GLEIF LEI record, and US bank status (FDIC), each section with its own status, source and as-of.
Sources and licence notices
- Sanctions lists as for /sanctions/check: see above
- GLEIF Global LEI Index: LEI reference data: GLEIF (Global Legal Entity Identifier Foundation), api.gleif.org, CC0 1.0. This service is not provided, supported or endorsed by GLEIF or any LOU.
- FDIC BankFind Suite API: Source: Federal Deposit Insurance Corporation (FDIC), BankFind Suite API (https://api.fdic.gov/banks/), free at source: https://banks.data.fdic.gov/bankfind-suite/. A work of the U.S. Government (17 U.S.C. 105); not endorsed by the FDIC. Values as published, total assets converted from thousands of dollars.
Limits
- Name at most 100 characters (MAX_NAME).
- The answer is not a clearance.
Refused before payment (charged: false)
- 503: the sanctions core is missing or its OFAC SDN check time is older than 48 hours; the other sections may come back marked unavailable (check_bundles.js header comment, sanctions.js STALE_HOURS)
- 422: the name is made only of words that are very common in the SDN list (too_generic) (check_bundles.js sanctionsSection via sanctions.js precheck)
- 400: the name is missing or too long
/check/payee
For a wallet that is about to be paid: sanctions match, wallet risk label, whether it is a listed x402 seller, and with url= whether the endpoint asks for payment to that address.
Sources and licence notices
- OFAC SDN: U.S. government work (17 U.S.C. 105).
- UK Sanctions List: Contains public sector information licensed under the Open Government Licence v3.0.
- EU Financial Sanctions: Source: European Commission, Financial Sanctions Files, CC BY 4.0; indexed and normalised by P0.
- Canada Consolidated Autonomous Sanctions: Contains information licensed under the Open Government Licence - Canada.
- US Consolidated Screening List: U.S. government work (trade.gov).
Limits
- Recommendation follows fixed written rules (RULES), not an opinion.
Refused before payment (charged: false)
- 503: the sanctions core is missing or its OFAC SDN check time is older than 48 hours (payee_check.js header, sanctions.js STALE_HOURS)
- 400: the address or url is malformed or not allowed
/lei/changes
Changes in GLEIF LEI records since a date.
Sources and licence notices
- GLEIF Global LEI Index: LEI reference data: GLEIF (Global Legal Entity Identifier Foundation), api.gleif.org, CC0 1.0. This service is not provided, supported or endorsed by GLEIF or any LOU.
Limits
- since at most 400 days back (MAX_DAYS).
- Answers may be served from a shared copy up to 900 seconds old (CACHE_TTL_S).
Refused before payment (charged: false)
- 400: since is missing, in the future or more than 400 days back, or country, status, limit or page is malformed (lei_changes.js MAX_DAYS)
/bank/us
US bank status from FDIC BankFind: certificate, assets, offices, history events.
Sources and licence notices
- FDIC BankFind Suite API: Source: Federal Deposit Insurance Corporation (FDIC), BankFind Suite API (https://api.fdic.gov/banks/), free at source: https://banks.data.fdic.gov/bankfind-suite/. A work of the U.S. Government (17 U.S.C. 105); not endorsed by the FDIC. Values as published, total assets converted from thousands of dollars.
Limits
- FDIC data is published daily or quarterly; answers may come from a copy up to 6 hours old (TTL_S).
Refused before payment (charged: false)
- 400: name or cert is missing, both are given, or one is malformed
/sec/filings
SEC EDGAR filings and XBRL facts by ticker or CIK.
Sources and licence notices
- SEC EDGAR (data.sec.gov submissions and XBRL company concepts), U.S. Securities and Exchange Commission: Public data of the U.S. Securities and Exchange Commission
Limits
- A fact whose latest period ended more than 548 days ago is marked stale (STALE_DAYS).
Refused before payment (charged: false)
- 400: ticker or cik is missing, both are given, or one is malformed
/eu/fx
ECB euro reference rates (also /eu/fx/history).
Sources and licence notices
- ECB euro foreign exchange reference rates: ECB data is available free of charge on the ECB website.
Limits
- Marked stale after 2 business days (STALE_BUSINESS_DAYS).
Refused before payment (charged: false)
- 503: the newest rate is more than 5 business days old (eu_fx.js HARD_STALE_BUSINESS_DAYS)