OUTCOME · Create or advance
What changes
Creates a private owner-scoped PENDING directory record and commitment. Registration is not approval, publication, disclosure authority, or transfer authority.
v2Transfer compliance
/api/v2/transfer-compliance/counterpartiesPURPOSE + BUSINESS CONTEXT
WHEN THIS CALL IS USEFUL
Register a VASP or institutional counterparty before due-diligence review, using its DID, current public verification and encryption keys, supported protocols, networks, and private delivery endpoint.
OUTCOME · Create or advance
Creates a private owner-scoped PENDING directory record and commitment. Registration is not approval, publication, disclosure authority, or transfer authority.
WHY IT MATTERS
ISOLATION + AUTHORITY
Owner, workspace, counterparty, VASP, credential issuer, wallet controller, transfer, reviewer, disclosure recipient, purpose, and retention boundaries remain distinct. A credential, preparation, decision, manifest, envelope, disclosure, or Explorer record neither moves value nor substitutes for wallet authorization, sanctions policy, rail admission, settlement, or finality.
BEFORE YOU CALL
WHAT TO DO NEXT
AGENT GUIDANCE
The exact deployed parameters, schemas, responses, security requirements, and Hybrid-Chain agent metadata are authoritative at this operation's production OpenAPI JSON Pointer. The readable tables below add integration guidance; the deployed OpenAPI controls if guidance and the machine contract ever differ.
Open the authoritative production contract ↗EXTENDED INTEGRATION GUIDANCE
Examples illustrate integration intent; the referenced OpenAPI operation and component schemas define the executable shape.
PARAMETERS
AuthorizationheaderRequiredBearer tokenCredential containing the compliance:write scope.EXAMPLEBearer hc_live_…
Idempotency-KeyheaderRequiredASCII string · 1–128Caller-generated key reused for every retry of the same logical mutation.EXAMPLElaunch-treasury-v1-001
Content-TypeheaderRequiredapplication/jsonSigned mutations accept canonical JSON only.EXAMPLEapplication/json
Content-DigestheaderRequiredRFC 9530 SHA-256 digestDigest of the exact transmitted body bytes.EXAMPLEsha-256=:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=:
Signature-InputheaderRequiredRFC 9421 signature parametersCovers @method, @path, content-digest, content-type, and idempotency-key; includes keyid, nonce, created, and expires.EXAMPLEsig1=("@method" "@path" "content-digest" "content-type" "idempotency-key");created=1786582800;expires=1786583100;nonce="01J…";keyid="machine-prod"
SignatureheaderRequiredEd25519 HTTP Message SignatureSignature made by an active public key registered to the authenticated client.EXAMPLEsig1=:base64-signature:
codebodyRequiredidentifier · 1–64Stable counterparty code.EXAMPLEEXAMPLE_VASP_GB
display_namebodyRequiredstring · 1–160Operator-readable VASP name; never use as an authorization key.EXAMPLEExample VASP UK
didbodyRequiredDID · max 255Counterparty decentralized identifier beginning with did:.EXAMPLEdid:hybrid:vasp:example
jurisdictionbodyOptionalidentifier · 1–32Operating jurisdiction; defaults to GLOBAL.EXAMPLEGB
regulatory_statusbodyOptionalidentifier · 1–64Declared regulatory posture; defaults to UNVERIFIED and remains untrusted until review.EXAMPLEREGISTERED
risk_ratingbodyOptionalidentifier · 1–64Initial risk posture; defaults to UNRATED.EXAMPLELOW
supported_protocolsbodyOptionalunique identifier[] · max 50Interoperability protocols; defaults to HYBRID_TRANSFER_V1.EXAMPLE["HYBRID_TRANSFER_V1","TRISA"]
networksbodyOptionalunique identifier[] · max 50Supported settlement-network labels; defaults to HYBRID.EXAMPLE["hybrid-testnet"]
signing_keybodyRequiredpublic OKP, EC, or RSA JWKComplete public verification key. Private, symmetric, empty, or unsupported JWKs are rejected.EXAMPLE{"kty":"OKP","crv":"Ed25519","kid":"example-signing-2026-09","x":"base64url-public-key"}
encryption_keybodyRequiredpublic OKP, EC, or RSA JWKComplete public envelope-encryption key. Private, symmetric, empty, or unsupported JWKs are rejected.EXAMPLE{"kty":"OKP","crv":"X25519","kid":"example-encryption-2026-09","x":"base64url-public-key"}
compliance_endpointbodyOptionalHTTPS URL · max 500Private delivery endpoint retained by Core and never returned by the public V2 projection.EXAMPLEhttps://compliance.example.test/hybrid-transfer
REQUEST
{
"code": "EXAMPLE_VASP_GB",
"display_name": "Example VASP UK",
"did": "did:hybrid:vasp:example",
"jurisdiction": "GB",
"regulatory_status": "REGISTERED",
"risk_rating": "LOW",
"supported_protocols": [
"HYBRID_TRANSFER_V1",
"TRISA"
],
"networks": [
"hybrid-testnet"
],
"signing_key": {
"kty": "OKP",
"crv": "Ed25519",
"kid": "example-signing-2026-09",
"x": "base64url-public-key"
},
"encryption_key": {
"kty": "OKP",
"crv": "X25519",
"kid": "example-encryption-2026-09",
"x": "base64url-public-key"
},
"compliance_endpoint": "https://compliance.example.test/hybrid-transfer"
}RESPONSES
{
"counterparty_id": "9fe24832bc314df791943cb47d959bb7",
"code": "EXAMPLE_VASP_GB",
"display_name": "Example VASP UK",
"did": "did:hybrid:vasp:example",
"jurisdiction": "GB",
"regulatory_status": "REGISTERED",
"risk_rating": "LOW",
"supported_protocols": [
"HYBRID_TRANSFER_V1",
"TRISA"
],
"networks": [
"hybrid-testnet",
"ethereum-mainnet"
],
"signing_key": {
"kty": "OKP",
"crv": "Ed25519",
"kid": "example-signing-2026-09",
"x": "base64url-public-key"
},
"encryption_key": {
"kty": "OKP",
"crv": "X25519",
"kid": "example-encryption-2026-09",
"x": "base64url-public-key"
},
"due_diligence_status": "PENDING",
"reviewed_at": null,
"valid_until": null,
"status": "PENDING",
"created_at": "2026-08-20T00:00:00Z",
"updated_at": "2026-08-20T00:00:00Z"
}EXAMPLE_VASP_GB{
"code": "invalid_json",
"message": "The JSON body or required signed headers are malformed."
}invalid_json{
"code": "invalid_credentials",
"message": "The bearer credential or RFC 9421 request signature is missing, expired, replayed, or invalid."
}invalid_credentials{
"code": "insufficient_scope",
"message": "The credential lacks the required compliance:write or compliance:review scope."
}insufficient_scope{
"code": "transfer_compliance_conflict",
"message": "The Idempotency-Key conflicts with another request or the requested lifecycle transition is forbidden."
}transfer_compliance_conflict{
"code": "invalid_transfer_compliance_command",
"message": "An identifier, field, commitment, public key, evidence object, or Idempotency-Key is outside the documented contract."
}invalid_transfer_compliance_command{
"code": "transfer_compliance_unavailable",
"message": "The authoritative Core transfer-compliance command boundary is unavailable."
}transfer_compliance_unavailableOPERATIONAL NOTES
This route is implemented in canonical gateway source and appears in the production OpenAPI snapshot observed 2026-09-11T06:35:11.572Z. Authentication, tenant, feature, venue, and market policy still apply.
Verify the exact production OpenAPI operation ↗Return to the V2 directory ↗