Anchorage Digital
Anchorage Digital is a regulated digital-asset platform for institutions, operating Anchorage Digital Bank, N.A. — the first federally chartered (OCC) crypto bank in the United States — plus regulated entities in Singapore and New York. It provides qualified custody, trading (Anchorage Digital Prime), staking, on-chain settlement via the Atlas Settlement Network, stablecoin issuance and conversion, governance participation, and tax reporting. Its REST API v2.0 exposes 134 operations across custody, wallets, transfers, trading, Atlas settlement, onboarding, subaccounts, tax, and webhook notifications, secured with API keys plus Ed25519 request signing. Anchorage also ships an Agentic Banking product with a hosted MCP server that lets AI agents spend against pre-authorized budgets.
Anchorage Digital publishes 20 APIs on the APIs.io network, including Addresses API, API Key API, Asset Types API, and 17 more. Tagged areas include Company, Crypto, Custody, Digital Assets, and Banking.
The Anchorage Digital catalog on APIs.io includes 1 event-driven AsyncAPI specification.
Anchorage Digital’s developer surface includes documentation, API reference, getting-started guide, engineering blog, support, authentication, sandbox, and 25 more developer resources.
20 APIs
1 MCP Servers
CompanyCryptoCustodyDigital AssetsBankingTradingStakingSettlementInstitutionalBlockchainStablecoins
Individual APIs this provider publishes, each with its own machine-readable definition.
Model Context Protocol servers that expose these APIs to AI agents.
Documented rate limits and quota policies.
AsyncAPI definitions for this provider's event-driven and streaming APIs.
Authentication, domain security, vulnerability disclosure, and trust-center signals.
Recommended x-agentic-access execution contracts for AI agents.
aid: anchorage-digital
accessModel:
pricing: unknown
onboarding: self-serve
trial: false
try_now: false
public: false
label: Self-serve signup
confidence: medium
source:
- authentication
generated: '2026-07-22'
method: derived
image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/icons/anchorage-digital.png
name: Anchorage Digital
description: Anchorage Digital is a regulated digital-asset platform for institutions, operating Anchorage Digital Bank, N.A.
— the first federally chartered (OCC) crypto bank in the United States — plus regulated entities in Singapore and New York.
It provides qualified custody, trading (Anchorage Digital Prime), staking, on-chain settlement via the Atlas Settlement
Network, stablecoin issuance and conversion, governance participation, and tax reporting. Its REST API v2.0 exposes 134
operations across custody, wallets, transfers, trading, Atlas settlement, onboarding, subaccounts, tax, and webhook notifications,
secured with API keys plus Ed25519 request signing. Anchorage also ships an Agentic Banking product with a hosted MCP server
that lets AI agents spend against pre-authorized budgets.
url: https://raw.githubusercontent.com/api-evangelist/anchorage-digital/refs/heads/main/apis.yml
x-type: company
x-source: vc-portfolio
x-backed-by:
- pantera-capital
- polychain
- sv-angel
x-tier: enriched
x-tier-reason: portfolio-lead
specificationVersion: '0.20'
created: '2026-07-17'
modified: '2026-07-17'
tags:
- Company
- Crypto
- Custody
- Digital Assets
- Banking
- Trading
- Staking
- Settlement
- Institutional
- Blockchain
- Stablecoins
apis:
- aid: anchorage-digital:anchorage-digital-addresses-api
name: Anchorage Digital Addresses API
description: "These endpoints allow the user to create and retrieve deposit addresses for specific assets.\n\n# Verifying\
\ Deposit Addresses\n\nThe addresses REST API endpoints return signatures of the address strings and other metadata that\
\ prove the address was generated by Anchorage Digital for your organization. \n\nIt is critical that clients verify the\
\ address signature and any accompanying metadata before the address is used, to confirm the address authenticity and\
\ integrity.\n\n## Address Signature Schemes\n\nThe API supports two address verification schemes:\n\n- **V1 Address Signatures**\
\ - The original scheme involves verifying a signature against a public key that is unique to each organization. This\
\ public key remains fixed for the lifetime of the organization and is distributed on request by Anchorage Digital out-of-band.\
\ While the public key does not need to be kept confidential, it must be kept tamper-proof.\n- **V2 Address Signatures**\
\ - The newer scheme involves verifying a signature against the public key of the leaf certificate of a X509 certificate\
\ chain returned alongside the signature, and verifying the certificate chain itself against the Anchorage Digital Address\
\ Signing Root CA, provided below, which must be hard-coded by API clients.\n\nYou can determine which scheme an address\
\ uses by checking the `signatureVersion` field.\n\n## V1 Address Signature Verification\n\nThe steps for verifying V1\
\ address signatures are as follows:\n\n1. Check the validity of the signature:\n a. Decode the `addressSignaturePayload`\
\ field from hex to bytes.\n b. Decode the `signature` field from hex to bytes.\n c. Using the fixed public key\
\ for this organization, verify that `signatureBytes` is a valid Ed25519 signature of the `addressSignaturePayloadBytes`.\n\
2. Verify the signed address matches the address to be used:\n a. Decode the `addressSignaturePayload` field from hex\
\ to bytes.\n b. Parse the bytes as a JSON object.\n c. Verify the address to be used matches the value of the `TextAddress`\
\ property from the JSON object.\n\n**Note: It is not sufficient to validate the signature without also validating that\
\ the address contained in the JSON decoded from the `addressSignaturePayload` matches the address to be used.**\n\n###\
\ V1 Signed Payload Fields\n\n- `TextAddress` — The text format of the on-chain address.\n\n```json\n{\n \"TextAddress\"\
: \"2N19AcihQ1a4MxQW658UFHTioUNnMkiHPkw\"\n}\n```\n\n### Sample V1 validation code:\n\n```go\npackage main\n\nimport (\n\
\t\"crypto/ed25519\"\n\t\"encoding/hex\"\n\t\"encoding/json\"\n\t\"fmt\"\n)\n\n// V1SignedPayload represents the JSON\
\ structure in the addressSignaturePayload for V1 signatures\ntype V1SignedPayload struct {\n\tTextAddress string `json:\"\
TextAddress\"`\n}\n\n// verifyV1AddressSignature verifies a V1 address signature.\n//\n// Parameters:\n// - address:\
\ The address string from the API response\n// - addressSignaturePayload: Hex-encoded bytes that were signed\n// -\
\ signature: Hex-encoded Ed25519 signature\n// - orgPublicKeyHex: Hex-encoded Ed25519 public key for your organization\
\ (obtained out-of-band)\n//\n// Returns an error if verification fails.\nfunc verifyV1AddressSignature(address, addressSignaturePayload,\
\ signature, orgPublicKeyHex string) error {\n\t// Step 1: Check the validity of the signature\n\n\t// Decode the addressSignaturePayload\
\ from hex to bytes\n\tpayloadBytes, err := hex.DecodeString(addressSignaturePayload)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"\
failed to decode addressSignaturePayload: %w\", err)\n\t}\n\n\t// Decode the signature from hex to bytes\n\tsignatureBytes,\
\ err := hex.DecodeString(signature)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to decode signature: %w\", err)\n\
\t}\n\n\t// Decode the organization public key from hex\n\tpublicKeyBytes, err := hex.DecodeString(orgPublicKeyHex)\n\t\
if err != nil {\n\t\treturn fmt.Errorf(\"failed to decode organization public key: %w\", err)\n\t}\n\n\tif len(publicKeyBytes)\
\ != ed25519.PublicKeySize {\n\t\treturn fmt.Errorf(\"invalid public key size: got %d bytes, expected %d\", len(publicKeyBytes),\
\ ed25519.PublicKeySize)\n\t}\n\n\tpublicKey := ed25519.PublicKey(publicKeyBytes)\n\n\t// Verify the Ed25519 signature\n\
\tif !ed25519.Verify(publicKey, payloadBytes, signatureBytes) {\n\t\treturn fmt.Errorf(\"signature verification failed\"\
)\n\t}\n\n\t// Step 2: Verify the signed address matches the address to be used\n\n\t// Parse the payload bytes as JSON\n\
\tvar signedPayload V1SignedPayload\n\tif err := json.Unmarshal(payloadBytes, &signedPayload); err != nil {\n\t\treturn\
\ fmt.Errorf(\"failed to parse signed payload: %w\", err)\n\t}\n\n\t// Verify the TextAddress matches\n\tif signedPayload.TextAddress\
\ != address {\n\t\treturn fmt.Errorf(\"signed TextAddress does not match: signed=%q, expected=%q\", signedPayload.TextAddress,\
\ address)\n\t}\n\n\treturn nil\n}\n\nfunc main() {\n\t// Sample API response data\n\taddress := \"2N19AcihQ1a4MxQW658UFHTioUNnMkiHPkw\"\
\n\taddressSignaturePayload := \"7b225465787441646472657373223a22324e313941636968513161344d78515736353855464854696f554e6e4d6b6948506b77227d\"\
\n\tsignature := \"b18f6848dc0fef01a069e7ac26046383bf5cd130203994dc2d72b5a9097351b1e8b67115b63124fbc8c16673566416a635913c670b676089339c62a7824baa03\"\
\n\n\t// Organization public key - obtained out-of-band from Anchorage Digital beforehand\n\t// Unique per Organization,\
\ fixed for the lifetime of that Organization\n\t// Must be kept tamper-proof\n\torgPublicKeyHex := \"8a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c\"\
\n\n\t// Verify the signature\n\tif err := verifyV1AddressSignature(address, addressSignaturePayload, signature, orgPublicKeyHex);\
\ err != nil {\n\t\tfmt.Printf(\"✗ V1 Address signature verification failed: %v\\n\", err)\n\t\treturn\n\t}\n\n\tfmt.Println(\"\
✓ V1 Address signature verified successfully!\")\n\tfmt.Printf(\" Address: %s\\n\", address)\n\tfmt.Println(\"\\nYou\
\ may now safely use this address for deposits.\")\n}\n```\n\n## V2 Address Signature Verification\n\nAddresses returned\
\ with `signatureVersion` set to `V2` also include a `certChain` field containing an x509 certificate chain in PEM format.\n\
\nThe steps for verifying V2 address signatures are as follows:\n\n1. Verify the certificate chain:\n a. Parse the\
\ `certChain` field as PEM-encoded x509 certificates \n \n **Note: The leaf certificate is at the 0th index, followed\
\ by zero or more intermediate certificates. The root cert is excluded from this response. The number of certificates\
\ in the chain is subject to change.**\n \n b. Verify the certificate chain from the leaf to the trusted Anchorage\
\ Digital Root CA.\n c. Verify all certificates are valid at the current time (both notAfter and notBefore).\n d.\
\ Verify the leaf certificate's Subject Alternative Names include `address-provider.anchorage.internal`.\n e. Verify\
\ the leaf certificate's KeyUsage includes both `digitalSignature` and `nonRepudiation` (also known as `contentCommitment`).\n\
\ f. Extract the public key from the leaf certificate. Currently, we only support ed25519 keys, however this is subject\
\ to change the future.\n2. Verify the signature:\n a. Decode the `addressSignaturePayload` field from hex to bytes\n\
\ b. Decode the `signature` field from hex to bytes\n c. Using the public key from the leaf certificate, verify\
\ that `signatureBytes` is a valid signature of the `addressSignaturePayload` bytes.\n3. Verify the signed details:\n\
\ a. Parse the `addressSignaturePayload` bytes as a JSON object\n b. Verify `SignatureExpiresAt` is greater or equal\
\ to the current UTC Unix Timestamp\n c. Verify `TextAddress` matches the address to be used\n d. Verify `VaultId`\
\ matches your expected Vault ID\n e. Verify `NetworkId` matches the expected network for this address\n\n**Note: The\
\ signed payload also includes a `NetworkName` field for human-readable purposes, which does not need to be verified.**\n\
\n**Note: API clients must not use \"strict\" JSON parsers which will disallow extra properties, as future versions may\
\ introduce additional fields.**\n\n**Note: Anchorage Digital will periodically refresh V2 signatures and our Address\
\ Signing Root CA before expiration. The deposit address itself will not change. Only the signature, certificate chain\
\ and Root CA will be updated.**\n\n### V2 Signed Payload Fields\n\n- `TextAddress` — The text format of the on-chain\
\ address.\n- `VaultId` — Identifies the vault this address belongs to.\n- `NetworkId` — Identifies the network that this\
\ address can receive deposits on.\n- `NetworkName` — A human readable version of the `NetworkId`.\n- `SignatureExpiresAt`\
\ — The time after which the signature should not be trusted.\n\n```json\n{\n \"VaultId\": \"dae6089e7c0836705f0562af0f1e4e1f\"\
,\n \"TextAddress\": \"bcrt1q709skemgf5skpsnysvgme2s3ztehkutl390yl0wp29lnmum5uw7qg0qrwm\",\n \"NetworkName\": \"Bitcoin\
\ Regnet\",\n \"NetworkId\": \"BTC_R\",\n \"SignatureExpiresAt\": 1769450713\n}\n```\n\n### Anchorage Digital Address\
\ Signing Root CAs\n\nClients are encouraged to hard-code the appropriate Root CA value for the environment they are making\
\ API requests against. It is essential that this value be tamper-proof.\n\n- Production Environment:\n\n```\n-----BEGIN\
\ CERTIFICATE-----\nMIIBXTCCAQ+gAwIBAgIUQZI+MSvYTXQHra+3OAKnwAMzotUwBQYDK2VwMCAxHjAcBgNVBAMMFWNhLmFuY2hvcmFnZS5pbnRlcm5hbDAeFw0yNjAxMjYwMDAwMDBaFw0yNzAxMjYwMDAwMDBaMCAxHjAcBgNVBAMMFWNhLmFuY2hvcmFnZS5pbnRlcm5hbDAqMAUGAytlcAMhADTh1nctgIHtAKNW8ww/bY606pJ3OP2dyZYcQrU2kG5jo1swWTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwICBDAUBgorBgEEAYaNHwEBBAYWBHJvb3QwIAYDVR0RBBkwF4IVY2EuYW5jaG9yYWdlLmludGVybmFsMAUGAytlcANBANkkdudEjH9RTKbRAxrRXyMSS/TgmdSrAVYOZzoRDJlyc+5oD+a0pmmwWVe86xZi37YbN1GzVlXcJAPpV6ceEQU=\n\
-----END CERTIFICATE-----\n```\n\n- Staging Environment:\n\n```\n-----BEGIN CERTIFICATE-----\nMIIBXDCCAQ6gAwIBAgITOfTQ4rYUsghgvdl8YCJSC67uGDAFBgMrZXAwIDEeMBwGA1UEAwwVY2EuYW5jaG9yYWdlLmludGVybmFsMB4XDTI2MDEyNDAwMDAwMFoXDTI3MDEyNDAwMDAwMFowIDEeMBwGA1UEAwwVY2EuYW5jaG9yYWdlLmludGVybmFsMCowBQYDK2VwAyEAPlBo2/+kPPL0WRpT+B/yHsU25AN/M6HP2bzC61yHb4ajWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgIEMBQGCisGAQQBho0fAQEEBhYEcm9vdDAgBgNVHREEGTAXghVjYS5hbmNob3JhZ2UuaW50ZXJuYWwwBQYDK2VwA0EAYsJxVI9n42liCF9f+Ou7uuC1QGFwaHwFsfOm0WFofSlE1trWqzj4ruzjPYSRJc8Ht2A7XCAfXkG0mzKpL/wQDg==\n\
-----END CERTIFICATE-----\n```\n\n### Sample V2 validation code:\n\n```go\npackage main\n\nimport (\n\t\"crypto/ed25519\"\
\n\t\"crypto/x509\"\n\t\"encoding/hex\"\n\t\"encoding/json\"\n\t\"encoding/pem\"\n\t\"fmt\"\n\t\"time\"\n)\n\n// V2SignedPayload\
\ represents the JSON structure in the addressSignaturePayload for V2 signatures\ntype V2SignedPayload struct {\n\tTextAddress\
\ string `json:\"TextAddress\"`\n\tVaultId string `json:\"VaultId\"`\n\tNetworkId string `json:\"\
NetworkId\"`\n\tNetworkName string `json:\"NetworkName\"`\n\tSignatureExpiresAt int64 `json:\"SignatureExpiresAt\"\
` // Unix timestamp\n}\n\n// verifyV2AddressSignature verifies a V2 address signature.\n//\n// Parameters:\n// - now:\
\ The \"current\" time. Note that conforming implementations must use\n// a trusted source for the current time.\n\
// - address: The address string from the API response\n// - addressSignaturePayload: Hex-encoded bytes that were\
\ signed\n// - signature: Hex-encoded signature\n// - certChainPEM: PEM-encoded certificate chain (leaf first, then\
\ intermediates)\n// - rootCAPEM: PEM-encoded Root CA certificate (hard-coded by client)\n// - expectedVaultId: Your\
\ Vault ID to verify against the signed VaultId\n// - expectedNetworkId: Expected network ID for this address (e.g.,\
\ \"BTC\", \"ETH\")\n//\n// Returns an error if verification fails.\nfunc verifyV2AddressSignature(\n\tnow time.Time,\n\
\taddress, addressSignaturePayload, signature, certChainPEM, rootCAPEM, expectedVaultId, expectedNetworkId string,\n)\
\ error {\n\t// Step 1: Verify the certificate chain\n\n\t// Parse the certificate chain from PEM\n\tcerts, err := parsePEMCertificates([]byte(certChainPEM))\n\
\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to parse certificate chain: %w\", err)\n\t}\n\n\tif len(certs) == 0\
\ {\n\t\treturn fmt.Errorf(\"certificate chain is empty\")\n\t}\n\n\tleafCert := certs[0]\n\tvar intermediateCerts []*x509.Certificate\n\
\tif len(certs) > 1 {\n\t\tintermediateCerts = certs[1:]\n\t}\n\n\t// Parse the Root CA\n\trootCACerts, err := parsePEMCertificates([]byte(rootCAPEM))\n\
\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to parse Root CA: %w\", err)\n\t}\n\tif len(rootCACerts) != 1 {\n\t\t\
return fmt.Errorf(\"expected exactly one Root CA certificate, got %d\", len(rootCACerts))\n\t}\n\trootCA := rootCACerts[0]\n\
\n\t// Verify the leaf certificate's KeyUsage includes both\n\t// digitalSignature and nonRepudiation (AKA contentCommitment)\n\
\tif leafCert.KeyUsage&x509.KeyUsageDigitalSignature == 0 {\n\t\treturn fmt.Errorf(\"leaf certificate KeyUsage missing\
\ DigitalSignature\")\n\t}\n\tif leafCert.KeyUsage&x509.KeyUsageContentCommitment == 0 {\n\t\treturn fmt.Errorf(\"leaf\
\ certificate KeyUsage missing NonRepudiation (ContentCommitment)\")\n\t}\n\n\t// Verify the certificate chain from leaf\
\ to Root CA\n\troots := x509.NewCertPool()\n\troots.AddCert(rootCA)\n\n\tintermediates := x509.NewCertPool()\n\tfor _,\
\ cert := range intermediateCerts {\n\t\tintermediates.AddCert(cert)\n\t}\n\n\t// NOTE: Not all x509 libraries are created\
\ equal and are not\n\t// guaranteed to verify exactly the same things!\n\t//\n\t// Always review the library you plan\
\ to use and ensure it covers the\n\t// checks described in the User Guide!\n\t//\n\t// For example, the Go implementation\
\ checks all Certificates for\n\t// temporal validity (notBefore and notAfter against CurrentTime), for\n\t// valid signatures\
\ up the chain, and checks that the Subject\n\t// Alternative Names include the values in DNSNames below.\n\t//\n\t//\
\ However it does not check the KeyUsage bits, hence the additional\n\t// checks above.\n\topts := x509.VerifyOptions{\n\
\t\tDNSNames: []string{\"address-provider.anchorage.internal\"},\n\t\tRoots: roots,\n\t\tIntermediates: intermediates,\n\
\t\tCurrentTime: now,\n\t\t// NOTE: This allows for any Extended Key Usage, but does not\n\t\t// check the Key Usage\
\ bits, hence the additional checks above.\n\t\tKeyUsages: []x509.ExtKeyUsage{x509.ExtKeyUsageAny},\n\t}\n\tif _, err\
\ := leafCert.Verify(opts); err != nil {\n\t\treturn fmt.Errorf(\"certificate chain verification failed: %w\", err)\n\t\
}\n\n\t// Extract the public key from the leaf certificate\n\tleafPublicKey, ok := leafCert.PublicKey.(ed25519.PublicKey)\n\
\tif !ok {\n\t\treturn fmt.Errorf(\"leaf certificate does not use Ed25519 (got type %T)\", leafCert.PublicKey)\n\t}\n\n\
\t// Step 2: Verify the signature\n\n\t// Decode the addressSignaturePayload from hex to bytes\n\tpayloadBytes, err :=\
\ hex.DecodeString(addressSignaturePayload)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to decode addressSignaturePayload:\
\ %w\", err)\n\t}\n\n\t// Decode the signature from hex to bytes\n\tsignatureBytes, err := hex.DecodeString(signature)\n\
\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to decode signature: %w\", err)\n\t}\n\n\t// Verify the signature using\
\ the leaf certificate's public key\n\tif !ed25519.Verify(leafPublicKey, payloadBytes, signatureBytes) {\n\t\treturn fmt.Errorf(\"\
signature verification failed\")\n\t}\n\n\t// Step 3: Verify the signed details\n\n\t// Parse the payload bytes as JSON\n\
\tvar signedPayload V2SignedPayload\n\tif err := json.Unmarshal(payloadBytes, &signedPayload); err != nil {\n\t\treturn\
\ fmt.Errorf(\"failed to parse signed payload: %w\", err)\n\t}\n\n\t// Verify SignatureExpiresAt is not in the past\n\t\
if now.Unix() > signedPayload.SignatureExpiresAt {\n\t\texpiryTime := time.Unix(signedPayload.SignatureExpiresAt, 0)\n\
\t\treturn fmt.Errorf(\"signature has expired at %s\", expiryTime)\n\t}\n\n\t// Verify TextAddress matches\n\tif signedPayload.TextAddress\
\ != address {\n\t\treturn fmt.Errorf(\"signed TextAddress does not match: signed=%q, expected=%q\",\n\t\t\tsignedPayload.TextAddress,\
\ address)\n\t}\n\n\t// Verify VaultId matches\n\tif signedPayload.VaultId != expectedVaultId {\n\t\treturn fmt.Errorf(\"\
signed VaultId does not match: signed=%q, expected=%q\",\n\t\t\tsignedPayload.VaultId, expectedVaultId)\n\t}\n\n\t// Verify\
\ NetworkId matches\n\tif signedPayload.NetworkId != expectedNetworkId {\n\t\treturn fmt.Errorf(\"signed NetworkId does\
\ not match: signed=%q, expected=%q\",\n\t\t\tsignedPayload.NetworkId, expectedNetworkId)\n\t}\n\n\treturn nil\n}\n\n\
// parsePEMCertificates parses PEM-encoded certificates and returns them as a slice\nfunc parsePEMCertificates(pemData\
\ []byte) ([]*x509.Certificate, error) {\n\tvar certs []*x509.Certificate\n\n\tfor {\n\t\tblock, rest := pem.Decode(pemData)\n\
\t\tif block == nil {\n\t\t\tbreak\n\t\t}\n\n\t\tif block.Type != \"CERTIFICATE\" {\n\t\t\tpemData = rest\n\t\t\tcontinue\n\
\t\t}\n\n\t\tcert, err := x509.ParseCertificate(block.Bytes)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed\
\ to parse certificate: %w\", err)\n\t\t}\n\n\t\tcerts = append(certs, cert)\n\t\tpemData = rest\n\t}\n\n\treturn certs,\
\ nil\n}\n\nfunc main() {\n\t// Sample API response data\n\taddress := \"bcrt1q709skemgf5skpsnysvgme2s3ztehkutl390yl0wp29lnmum5uw7qg0qrwm\"\
\n\taddressSignaturePayload := \"7b225661756c744964223a226461653630383965376330383336373035663035363261663066316534653166222c225465787441646472657373223a22626372743171373039736b656d676635736b70736e797376676d653273337a7465686b75746c333930796c30777032396c6e6d756d357577377167307172776d222c224e6574776f726b4e616d65223a22426974636f696e205265676e6574222c224e6574776f726b4964223a224254435f52222c225369676e6174757265457870697265734174223a313736393435303731337d\"\
\n\tsignature := \"951eb2fb560e660aa9c3d1ccd120d3ad1a19d90d8747347057e48bf174330eb386089e3232d822fd66b8183cce8059c91183afde299b920a0e0c05c5b167360e\"\
\n\tcertChainPEM := `-----BEGIN CERTIFICATE-----\nMIIBYTCCAROgAwIBAgIUMLKt+K9eFku+P7BbefE1xAHg0hcwBQYDK2VwMAAwHhcNMjYwMTI2MTcwNDEzWhcNMjcwMTI2MTcwNTEzWjAuMSwwKgYDVQQDEyNhZGRyZXNzLXByb3ZpZGVyLmFuY2hvcmFnZS5pbnRlcm5hbDAqMAUGAytlcAMhAPsgM70aWFYsZaLHawtYJpl42BkiTLyCq96+OXe4FxrVo3EwbzAOBgNVHQ8BAf8EBAMCBsAwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS0usSFeB2gjC+wcowtxN3MeKSH7zAuBgNVHREEJzAlgiNhZGRyZXNzLXByb3ZpZGVyLmFuY2hvcmFnZS5pbnRlcm5hbDAFBgMrZXADQQCXmvIkuPnUgCHxWmFmzvgWdv9lUlt84oZCel+OeJW9n8PR88tGxAcD1E3+KDBXVpO0GcRA0W9+xqqICAo2ROEJ\n\
-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIBKDCB26ADAgECAhRGsD05KldIse+uIEa976AijTqlxjAFBgMrZXAwADAeFw0yNjAxMjYxNzA0MTNaFw0yNzAxMjYxNzA1MTNaMAAwKjAFBgMrZXADIQCNpyY5Sr21FHNvvLkBKG8AEMKdhqtajmV5d2QaZlmtAqNnMGUwDgYDVR0PAQH/BAQDAgIEMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLS6xIV4HaCML7ByjC3E3cx4pIfvMCAGA1UdEQEB/wQWMBSCEmFuY2hvcmFnZS5pbnRlcm5hbDAFBgMrZXADQQCIgw6kLMIwhd3ACjG03cJ5z/ZZp8aXXycFq2ZC9TLhieJ3rncyMH6ZdyJ3Ai1eVaHs4vnDCv54Vdh83vvSky4K\n\
-----END CERTIFICATE-----\n`\n\n\t// NOTE: This is a FAKE Root CA used just for this example.\n\t// NOTE: Conforming client\
\ implementations should hard-code the real\n\t// Anchorage Digital Address Signing Root CA for the environment they\n\
\t// are making requests to.\n\trootCAPEM := `-----BEGIN CERTIFICATE-----\nMIIBGzCBzqADAgECAhQ2qQwArneTuF0dbNDs8i/ExuyW2DAFBgMrZXAwADAeFw0yNjAxMjYxNzA0MTNaFw0yNzAxMjYxNzA1MTNaMAAwKjAFBgMrZXADIQB+gEnytXKnuAMonIWGWnB0qyTqa0aw3l9u5VRbu86UgaNaMFgwDgYDVR0PAQH/BAQDAgIEMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOj64tL1teJHkojsiblnnK34Tw+EMBYGA1UdEQEB/wQMMAqCCGludGVybmFsMAUGAytlcANBAAg2IcVEXmWKSivhUNSatNfMmASxi83QscIuyP/sIW2sRIuCqQJoo9lN6TaxzyV62cQMzthFOCZcgRE+k0JV7Ao=\n\
-----END CERTIFICATE-----\n`\n\n\t// Your Vault ID - obtained from your application context\n\texpectedVaultId := \"dae6089e7c0836705f0562af0f1e4e1f\"\
\n\n\t// Expected network ID for this address\n\texpectedNetworkId := \"BTC_R\"\n\n\t// Implementations should use the\
\ actual current time\n\t// now := time.Now()\n\tnow := time.Unix(1769450600, 0) // Fake time so that this example passes.\n\
\n\t// Verify the signature\n\tif err := verifyV2AddressSignature(\n\t\tnow,\n\t\taddress,\n\t\taddressSignaturePayload,\n\
\t\tsignature,\n\t\tcertChainPEM,\n\t\trootCAPEM,\n\t\texpectedVaultId,\n\t\texpectedNetworkId,\n\t); err != nil {\n\t\
\tfmt.Printf(\"✗ V2 Address signature verification failed: %v\\n\", err)\n\t\treturn\n\t}\n\n\tfmt.Println(\"✓ V2 Address\
\ signature verified successfully!\")\n\tfmt.Printf(\" Address: %s\\n\", address)\n\tfmt.Printf(\" Vault ID: %s\\n\"\
, expectedVaultId)\n\tfmt.Printf(\" Network: %s\\n\", expectedNetworkId)\n\tfmt.Println(\"\\nYou may now safely use this\
\ address for deposits.\")\n}\n```"
humanURL: https://docs.anchorage.com/knowledge-base/api-reference/introduction
baseURL: https://api.anchorage.com/v2
tags:
- Addresses
properties:
- type: OpenAPI
url: openapi/anchorage-digital-addresses-api-openapi.yml
- type: APIReference
url: https://docs.anchorage.com/knowledge-base/api-reference/introduction
- type: Authentication
url: https://docs.anchorage.com/knowledge-base/api-reference/authentication
- aid: anchorage-digital:anchorage-digital-api-key-api
name: Anchorage Digital API Key API
description: These endpoints allow querying information about the current API key in use.
humanURL: https://docs.anchorage.com/knowledge-base/api-reference/introduction
baseURL: https://api.anchorage.com/v2
tags:
- API Key
properties:
- type: OpenAPI
url: openapi/anchorage-digital-api-key-api-openapi.yml
- type: APIReference
url: https://docs.anchorage.com/knowledge-base/api-reference/introduction
- type: Authentication
url: https://docs.anchorage.com/knowledge-base/api-reference/authentication
- aid: anchorage-digital:anchorage-digital-asset-types-api
name: Anchorage Digital Asset Types API
description: Descriptions of supported asset types
humanURL: https://docs.anchorage.com/knowledge-base/api-reference/introduction
baseURL: https://api.anchorage.com/v2
tags:
- Asset Types
properties:
- type: OpenAPI
url: openapi/anchorage-digital-asset-types-api-openapi.yml
- type: APIReference
url: https://docs.anchorage.com/knowledge-base/api-reference/introduction
- type: Authentication
url: https://docs.anchorage.com/knowledge-base/api-reference/authentication
- aid: anchorage-digital:anchorage-digital-atlas-settlement-network-api
name: Anchorage Digital Atlas Settlement Network API
description: The Atlas Settlement Network API from Anchorage Digital — 9 operation(s) for atlas settlement network.
humanURL: https://docs.anchorage.com/knowledge-base/api-reference/introduction
baseURL: https://api.anchorage.com/v2
tags:
- Atlas Settlement Network
properties:
- type: OpenAPI
url: openapi/anchorage-digital-atlas-settlement-network-api-openapi.yml
- type: APIReference
url: https://docs.anchorage.com/knowledge-base/api-reference/introduction
- type: Authentication
url: https://docs.anchorage.com/knowledge-base/api-reference/authentication
- aid: anchorage-digital:anchorage-digital-collateral-management-api
name: Anchorage Digital Collateral Management API
description: The Collateral Management API from Anchorage Digital — 6 operation(s) for collateral management.
humanURL: https://docs.anchorage.com/knowledge-base/api-reference/introduction
baseURL: https://api.anchorage.com/v2
tags:
- Collateral Management
properties:
- type: OpenAPI
url: openapi/anchorage-digital-collateral-management-api-openapi.yml
- type: APIReference
url: https://docs.anchorage.com/knowledge-base/api-reference/introduction
- type: Authentication
url: https://docs.anchorage.com/knowledge-base/api-reference/authentication
- aid: anchorage-digital:anchorage-digital-deposit-attribution-api
name: Anchorage Digital Deposit Attribution API
description: 'Deposit Attribution is the process of gathering information about the originator of a given deposit.
Once a deposit is initiated this process is automatically started being represented by a Deposit Attribution entity in
`PENDING` status, so a deposit transaction has always an associated Deposit Attribution process and funds are not available
until an attribution is performed.
Once a deposit is confirmed on-chain, Anchorage Digital automatically initiates a new Deposit Attribution with a `PENDING`
status. While in the `PENDING` status, funds are not available for movement or use for other purposes until the attribution
process is complete. The attribution data is reviewed by Anchorage Digital, represented by the `UNDER_REVIEW` status.
Upon successful completion of the review, the attribution status changes to `ATTRIBUTED`, making the funds available.
If the review is unsuccessful, the status changes to `BLOCKED`.
We do our best to automatically attribute deposits on behalf of our users, assuming the attribution for the specific address
is known, but for those deposits where this is not possible, we enable the user to do so programmatically or via our Web
Dashboard.
Overall, these endpoints provide users with the capability to view, manage, and complete the deposit attribution process
programmatically.'
humanURL: https://docs.anchorage.com/knowledge-base/api-reference/introduction
baseURL: https://api.anchorage.com/v2
tags:
- Deposit Attribution
properties:
- type: OpenAPI
url: openapi/anchorage-digital-deposit-attribution-api-openapi.yml
- type: APIReference
url: https://docs.anchorage.com/knowledge-base/api-reference/introduction
- type: Authentication
url: https://docs.anchorage.com/knowledge-base/api-reference/authentication
- aid: anchorage-digital:anchorage-digital-onboarding-api
name: Anchorage Digital Onboarding API
description: "These endpoints allow clients/partner institutions to start the customer onboarding process for a B2B2B/B2B2C\
\ end customer who would not be using the Anchorage Digital applications directly. They collect the required data and\
\ documentation for Anchorage Digital to satisfy its regulatory obligations to perform KYB/KYC, CIP, CDD and EDD on its\
\ customers and related parties.\n\nCurrently only B2B2B/B2B2C customer onboarding is supported.\n\n### Payload Data\n\
The \"customer\" endpoints take a payload of `entries` in an array of key/value pairs. Details on the required and support\
\ key/value pairs is available in documentation provided by Anchorage Digital. Please contact your Customer Experience\
\ representative for details.\n\nNote that some of the keys are conditional depending on the presence or value of other\
\ key/value pairs. For example, the key `legalStructureOther` is only required if the `legalStructure` key has the Enum\
\ value `OTHER`.\n\nAlso note that every `value` field accepts primitives, objects and collections, which makes the payload\
\ very flexible for the client's needs.\nFor example, both of the following `entries` are accepted and interchangeable:\n\
\n```json\n{\n \"entries\":[\n {\n \"key\":\"boolField\",\n \"value\":true\n },\n {\n \"key\"\
:\"numberField\",\n \"value\":10\n },\n {\n \"key\":\"stringField\",\n \"value\":\"stringFieldValue\"\
\n },\n {\n \"key\":\"collectionField\",\n \"value\":[\n \"collectionField0Value\",\n \"\
collectionField1Value\"\n ]\n },\n {\n \"key\":\"objectField\",\n \"value\":{\n \"field0\"\
:\"field0Value\",\n \"field1\":\"field1Value\",\n \"field2\":\"field2Value\"\n }\n },\n {\n \
\ \"key\":\"objectCollectionField\",\n \"value\":[\n {\n \"field0\":\"field0AValue\",\n \
\ \"field1\":\"field1AValue\",\n \"field2\":\"field2AValue\"\n },\n {\n \"field0\"\
:\"field0BValue\",\n \"field1\":\"field1BValue\",\n \"field2\":\"field2BValue\"\n }\n ]\n\
\ }\n ]\n}\n```\n\n```json\n{\n \"entries\":[\n {\n \"key\":\"boolField\",\n \"value\":true\n },\n\
\ {\n \"key\":\"numberField\",\n \"value\":10\n },\n {\n \"key\":\"stringField\",\n \"value\"\
:\"stringFieldValue\"\n },\n {\n \"key\":\"collectionField.0\",\n \"value\":\"collectionField0Value\"\n\
\ },\n {\n \"key\":\"collectionField.1\",\n \"value\":\"collectionField1Value\"\n },\n {\n \
\ \"key\":\"objectField.field0\",\n \"value\":\"field0Value\"\n },\n {\n \"key\":\"objectField.field1\"\
,\n \"value\":\"field1Value\"\n },\n {\n \"key\":\"objectField.field2\",\n \"value\":\"field2Value\"\
\n },\n {\n \"key\":\"objectCollectionField.0.field0\",\n \"value\":\"field0AValue\"\n },\n {\n\
\ \"key\":\"objectCollectionField.0.field1\",\n \"value\":\"field1AValue\"\n },\n {\n \"key\":\"\
objectCollectionField.0.field2\",\n \"value\":\"field2AValue\"\n },\n {\n \"key\":\"objectCollectionField.1.field0\"\
,\n \"value\":\"field0BValue\"\n },\n {\n \"key\":\"objectCollectionField.1.field1\",\n \"value\"\
:\"field1BValue\"\n },\n {\n \"key\":\"objectCollectionField.1.field2\",\n \"value\":\"field2BValue\"\n\
\ }\n ]\n}\n```"
humanURL: https://docs.anchorage.com/knowledge-base/api-reference/introduction
baseURL: https://api.anchorage.com/v2
tags:
- Onboarding
properties:
- type: OpenAPI
url: openapi/anchorage-digital-onboarding-api-openapi.yml
- type: APIReference
url: https://docs.anchorage.com/knowledge-base/api-reference/introduction
- type: Authentication
url: https://docs.anchorage.com/knowledge-base/api-reference/authentication
- aid: anchorage-digital:anchorage-digital-stablecoins-api
name: Anchorage D
# --- truncated at 32 KB (46 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/anchorage-digital/refs/heads/main/apis.yml