Hanzo AI

List principal

Returns the caller's org as an economic principal, composed from the apps that own each fact: its legal entity and founders' identity verification (company), the W-9 or W-8 it certified (tax), its wallets (wallet), the agents that answer to it — spawned ones with the agent that spawned them — (agents), its screening against the OFAC, UN, EU and UK sanctions lists and the embargoed jurisdictions, run now, and what it still lacks to pay and be paid.

GET /v1/principal

Addresshttps://api.hanzo.ai/v1/principal
MethodGET
Operationget_principal
AuthAuthorization: Bearer $HANZO_API_KEY

Returns the caller's org as an economic principal, composed from the apps that own each fact: its legal entity and founders' identity verification (company), the W-9 or W-8 it certified (tax), its wallets (wallet), the agents that answer to it — spawned ones with the agent that spawned them — (agents), its screening against the OFAC, UN, EU and UK sanctions lists and the embargoed jurisdictions, run now, and what it still lacks to pay and be paid. The read changes nothing: a possible match it finds is recorded for a platform reviewer when a payment to or from the org is cleared.

Any member reads it. The detail behind a verdict — founders' names and statuses, masked tax numbers, treaty claims, sanctions matches — is answered to the org's admins only. An owning app this deployment does not run is named in sources as absent rather than read as empty.

Request

GET /v1/principal takes no parameters and no body — the credential is the whole request.

Response

StatusBodyMeaning
200principal.Viewok
defaultproblem-detailsrefused

200 body — 87 fields.

FieldInTypeAlwaysDescription
agentsbodyprincipal.AgentBrief[]—Agents are the agents that answer to it, spawned ones with their parent.
agents[].idbodystring—ID is the agent id — the ref a run names and the value a member id derives from, so it must be stable across a reconcile.
agents[].namebodystring—Name is the display name a person reads in a member list.
agents[].parentbodystring—Parent is the agent that spawned this one; empty for an agent a person defined.
agents[].statusbodystring—Status is the registry status VERBATIM, never a boolean.
compliancebodyprincipal.Summary—
compliance.missingbodyprincipal.Step[]—Missing are the steps it owes, each with the rule that asks for it.
compliance.missing[].codebodystring—Code is the step's stable name, for a caller that branches on it.
compliance.missing[].rulebodyprincipal.Rule—
compliance.missing[].rule.codebodystring—Code is the rule's stable name, for a caller that branches on it.
compliance.missing[].rule.reasonbodystring—Reason is the rule, stated.
compliance.missing[].whatbodystring—What must happen, in words.
compliance.missing[].wherebodystring—Where it is done, when it is done on this platform.
compliance.missing[].whobodystring—Who does it: payer, payee, or "Hanzo platform reviewer".
compliance.readybodyboolean—Ready is true when it lacks nothing its own facts decide.
entitybodyprincipal.Entity—
entity.einbodystring—EIN is on_file when the org's W-9 carries an EIN, and absent otherwise.
entity.foundersbodyprincipal.Founder[]—Founders are its beneficial owners with their verification status — answered to the org's admins.
entity.founders[].equityBpsbodyinteger (int64)—EquityBps is ownership in basis points, 0–10000.
entity.founders[].kycbodystring—KYC is pending, verified, reviewer_confirmed or failed, verbatim.
entity.founders[].namebodystring—Name is the full legal name.
entity.importedbodyboolean—Imported is an entity that existed before and was imported.
entity.jurisdictionbodystring—Jurisdiction is the U.S. state of formation.
entity.namebodystring—Name is the company name.
entity.stagebodystring—Stage is the formation's stage; "company" is formed.
entity.structurebodystring—Structure is c-corp, llc or dao-llc.
identitybodyprincipal.Identity—
identity.reasonbodystring—Reason says which founders, and what is outstanding.
identity.statusbodystring—Status is verified (every founder of its formation passed identity verification through the licensed provider, or a platform reviewer confirmed them), pending, failed, or none (no formation, or one naming no founder).
orgbodystring—Org is the org — the principal itself.
sanctionsbodyprincipal.Screening—
sanctions.atbodyinteger (int64)—At is when it ran, unix seconds.
sanctions.listsbodyprincipal.List[]—Lists is each publisher's readiness at the moment of screening.
sanctions.lists[].attempted_atbodystring (date-time)—AttemptedAt is when the last attempt happened, successful or not.
sanctions.lists[].designationsbodyinteger (int64)—Designations is how many entries the last successful load carried.
sanctions.lists[].digestbodystring—Digest is the digest of the payload that produced Designations.
sanctions.lists[].errorbodystring—Err is why the last attempt failed, empty if it succeeded.
sanctions.lists[].loaded_atbodystring (date-time)—LoadedAt is when that load happened.
sanctions.lists[].sourcebodystring—Source is the publisher.
sanctions.matchesbodyprincipal.Match[]—Matches are what matched — answered to the org's own admins and to a reviewer, never to another org.
sanctions.matches[].decidedAtbodyinteger (int64)—DecidedAt is when, unix seconds.
sanctions.matches[].decidedBybodystring—DecidedBy is the reviewer, or "exact designated address".
sanctions.matches[].entrybodystring—Entry is the designated subject's primary name, or the jurisdiction's.
sanctions.matches[].foundAtbodyinteger (int64)—FoundAt is when a screening first found it, unix seconds.
sanctions.matches[].hitsbodyprincipal.Hit[]—Hits are the org's names, addresses and countries that matched, in the order they were first seen.
sanctions.matches[].hits[].kindbodystring—Kind is name (matched fuzzily), address (matched exactly) or jurisdiction.
sanctions.matches[].hits[].rolebodystring—Role is where it came from: entity, founder, form, wallet, or — for a country — citizenship, organization or residence.
sanctions.matches[].hits[].subjectbodystring—Subject is the name, address or country as the org stated it.
sanctions.matches[].idbodystring—ID addresses the match for a reviewer's decision.
sanctions.matches[].listbodystring—List is the publisher — ofac, un, eu or ofsi — or jurisdiction for an embargoed place.
sanctions.matches[].notebodystring—Note is the reviewer's reason.
sanctions.matches[].orgbodystring—Org is the org the match names.
sanctions.matches[].reasonbodystring—Reason is what first matched, and which identifiers agreed or conflicted.
sanctions.matches[].refbodystring—Ref is the entry's reference on that list, or the country code.
sanctions.matches[].scorebodynumber (double)—Score is the highest similarity seen, 0 to 1; an address or a jurisdiction is 1.
sanctions.matches[].statusbodystring—Status is open (a reviewer decides), cleared (a namesake, decided) or confirmed (the designated person, decided — or a designated address).
sanctions.reasonbodystring—Reason says why, in words.
sanctions.statusbodystring—Status is clear, review (a possible match awaits a platform reviewer), blocked (a confirmed match), unscreened (the org states nothing to screen), or unavailable (the lists are not fit to screen against).
sourcesbodyprincipal.Source[]—Sources says which owning apps answered.
sources[].appbodystring—App names it: company, tax, wallet or agent.
sources[].statusbodystring—Status is read, or absent when this deployment does not run it.
taxbodyprincipal.Form—
tax.certifiedbodyboolean—Certified is whether the signature covers the current facts.
tax.chapter3bodystring—Chapter3 and Chapter4 are a W-8BEN-E's statuses — to the org's admins.
tax.chapter4bodystring—
tax.countrybodystring—Country is US for a W-9, or the country of citizenship or incorporation.
tax.expiresbodyinteger (int64)—Expires is when a W-8 stops being valid, unix seconds.
tax.foreignTinbodystring—
tax.formbodystring—Form is w9, w8ben or w8bene.
tax.residencebodystring—Residence is the country of the permanent residence address.
tax.tinbodystring—TIN and ForeignTIN are masked — answered to the org's admins.
tax.treatybodyprincipal.Treaty—
tax.treaty.articlebodystring—Article is the treaty article and paragraph claimed, e.g. "12(2)".
tax.treaty.conditionsbodystring—Conditions is the explanation the form asks for: the conditions of the article the beneficial owner meets.
tax.treaty.countrybodystring—Country is the treaty country the beneficial owner is resident in.
tax.treaty.incomebodystring—Income is the type of income the claim covers: services, rents, royalties or other.
tax.treaty.lobbodystring—LOB is W-8BEN-E line 14b: the treaty's limitation on benefits provision the entity meets.
tax.treaty.rateBpsbodyinteger (int64)—RateBps is the claimed withholding rate in basis points: 0 is exempt, 1000 is 10%.
tax.usPersonbodyboolean—USPerson is true for a W-9.
tax.validbodyboolean—Valid is whether it establishes what it certifies today.
walletsbodyprincipal.WalletBrief[]—Wallets are its addresses.
wallets[].addressbodystring—
wallets[].agentbodystring—Agent is the agent the wallet is scoped to, when it is one agent's.
wallets[].chainbodystring—
wallets[].custodybodystring—
wallets[].idbodystring—
wallets[].namebodystring—

Failure carries the platform error shape — see Errors.

Examples

hanzo has no subcommand for this operation — the CLI serves only what cloud's live route table confirms. Use HTTP or an SDK.


Principal API · All Hanzo APIs · Interactive reference

How is this guide?

On this page