Creates a hosted verification link on verify.trusset.org for one customer. The customer opens it, pays the fee if you set one, connects a wallet, signs a message that proves it controls the wallet, and passes the identity check.
The fee is collected before the identity check opens, and no endpoint refunds it. A customer who fails the check, or whose link is revoked, has still paid.A link that names no wallet accepts the first wallet attached on the hosted page, and only from the holder of that wallet: the page asks the wallet to sign a message first, and the attach is refused with 401 WALLET_SIGNATURE_REQUIRED without it. From then on the identity check opens only for a visitor signed in with that wallet, so whoever attached a wallet can only verify their own identity onto it. Someone holding the URL can still attach their own wallet first and lock the customer out, so treat the URL as a credential, revoke a link the customer cannot open and send a new one. Set recipientWallet whenever you know the wallet.A link that names a wallet works the same way: the identity check, its token refresh and the completion open only for a visitor signed in with that wallet (401 WALLET_SIGNATURE_REQUIRED otherwise), so the customer opens the link with that wallet connected. Contract wallets sign in through ERC-1271. A link is completed only after its identity check was submitted to Sumsub; a completion without one is refused with 409 ID_CHECK_NOT_SUBMITTED and the link stays open. Once a link is used, only the holder of its wallet is told the outcome on the hosted page.
The link reads COMPLETED once the customer finishes the hosted flow or the identity check passes. It reads REJECTED when the check fails or the review does not meet the profile (see Review rules), which can happen after it read COMPLETED. COMPLETED alone is not a verdict.A check approved before any wallet is bound also reads COMPLETED, and the link then waits for a wallet: Get ID Link reports awaitingWallet: true. From then on only you can bind the wallet, with Bind Link Wallet. The hosted page refuses the customer with 409 ISSUER_BINDS_WALLET and asks them to contact you. Before the approval, the hosted page binds a wallet only to a link that is still open and unused.A passed check writes nothing on chain by itself. The wallet is queued in List Pending Verifications, and it stays unregistered until your instance’s registered wallet signs the transaction. When the profile has an eligibility register, the wallet’s admission to it is queued as well. See Eligibility registers.EXPIRED means the link was revoked. A link that runs past expiresAt without being revoked still reads PENDING, although the hosted page refuses it.
Sumsub reports each review to Trusset. A green review is accepted only when all of these hold:
It comes from the Sumsub level the link was created with. Otherwise it is refused with KYC_LEVEL_MISMATCH, or with KYC_LEVEL_UNKNOWN when Sumsub reports no level.
The applicant is of the kind the profile admits: a company applicant for a COMPANY profile, an individual for an INDIVIDUAL one. Otherwise KYC_ENTITY_MISMATCH.
No country reported for the applicant is on the profile’s blocked list, and neither is the link’s own country. The reported countries are the document country, the declared country, the nationality and, for a company, its country. Otherwise COUNTRY_BLOCKED.
The level is fixed when the link is created. The applicant kind and the blocked countries are read from the profile when the review arrives.A refused review turns the link REJECTED and the customer record, when there is one, rejected, and the customer’s audit log records KYC_REFUSED_LEVEL, KYC_REFUSED_ENTITY or KYC_REFUSED_COUNTRY. A final red review turns it REJECTED too. A customer record already verified under another profile keeps its status. A refusal or a rejection also queues the removal of the link’s wallet from the eligibility register of the link’s profile, and cancels its admission there when it is still waiting.A red review that asks the customer to resubmit documents (reviewRejectType: RETRY) keeps a link whose review has not settled open, so the customer can finish on the same link. A link the hosted page had already completed is reopened as PENDING.
The first approval, refusal or final rejection applied to a link settles it. A review that arrives after that is ignored, repeats and replays of the same review included, with one exception: a final red review still turns an approved link REJECTED, unless Sumsub dated it no later than the moment Trusset applied the approval.
Review
Link not settled yet
Link already settled
Green
Approved, or refused under the rules above
Ignored
Red, final
The link turns REJECTED
The link turns REJECTED when it was approved and the review is dated after the approval was applied. Ignored otherwise
Red, resubmission requested
The link stays open
Ignored
A revoked link ignores every review. Sumsub delivers each review by webhook, and an event Sumsub dated more than 7 days before it arrives is ignored whatever it says. An ignored review changes nothing: the link, the customer record, the queues and the customer webhook stay as they were, and the audit log records KYC_REVIEW_IGNORED. Recheck Link Review applies the same rules. It does not ask Sumsub about a settled link at all, unless the link is approved and still waiting for a wallet.
A final rejection that turns an approved link REJECTED dismisses the link’s registration while it still waits in the pending queue, so it can no longer be signed. An identity you already registered stays on your instance register until you revoke it with Revoke Identity.Archiving a customer with Archive Customer closes its open links, including one whose review has not come back yet, so a later review registers nothing. It also dismisses the customer’s rows in the pending queue.
A customer webhook set up in the Issuer Portal reports each review Trusset applies as customer.kyc_reviewed, with outcomeAPPROVED, REFUSED, REJECTED or RETRY. UNCONFIRMED means Sumsub approved but the applicant could not be read to apply the rules above, so the link is unchanged until a later review or Recheck Link Review applies the approval. An ignored review is not reported. A registration waiting for your signature is reported as customer.registration_pending, and a completed registration as customer.registered.
Your app can run the identity check itself with the Sumsub SDK instead of sending the customer to the hosted page. The link stays the record of the onboarding either way, and the review is held to the same rules.
1
Create the link
Create it as described on this page, without feeCents, because a fee is collected only on the hosted page. Omit sendVia so nothing is delivered, and name the wallet with recipientWallet when you already know it.
2
Run the check
Issue Sumsub Token returns an access token for the link’s applicant and level. Pass it to the Sumsub WebSDK or MobileSDK in your app.
3
Bind the wallet
Bind Link Wallet attaches the customer’s wallet, before or after the review. A review approved without a wallet waits for one, and the registration is queued once the wallet is bound. After the approval this call is the only way to bind it.
4
Follow the outcome
Get ID Link reads the review, the registration and the eligibility admissions. Recheck Link Review asks Sumsub again when a review did not arrive or could not be applied.
When the link carries recipientEmail or recipientPhone, Trusset still tells the recipient of a rejection, a resubmission request or a verification that needed no registration. A resubmission message points to the hosted link. The registration on your instance register and any eligibility admission are signed by your own wallet, as for a hosted link.Every identity check runs on Trusset’s Sumsub account, whether the customer completes it on the hosted page or in your app.
Binds the link to this wallet, so the hosted page accepts no other and opens the identity check only after the customer signs in with it. The customer opens the link with this wallet connected and signs a message (not a transaction, no gas); anyone else can open the page but never sees its result. Stored and returned checksummed.
Where the link is texted when sendVia includes sms. Send it in E.164 form. The SMS sender strips spaces, hyphens, brackets and dots, reads a leading 00 as +, and reads a single leading 0 as a German number (+49). A number that still is not E.164 fails in delivery.sms, not here.
The customer record this link completes. Completion then updates that record instead of creating a second customer. Archived customers are not matched.
Names the customer by external ID instead. Used only when customerId and referenceKey are absent.
When a customer is named, each identifier must be a string of 1 to 128 characters. A customer who already holds a wallet binds the link to it, and a different recipientWallet is refused. When the request sends no recipient at all, the customer’s first email contact becomes recipientEmail. The customer’s country and investor type fill country and investorType when those are omitted.
The key of an enabled verification profile, matched exactly. The presets are RETAIL, PROFESSIONAL and ELIGIBLE_COUNTERPARTY. Custom keys are lowercase. The profile sets the check level, the documents requested and the blocked countries. Defaults to the linked customer’s investor type, then RETAIL.The link keeps the Sumsub level, the applicant type (individual or company) and the on-chain investor type the profile had when the link was created, so a later change to the profile does not reach a link already sent. The blocked countries are read when the investor uses the link.
The customer’s country as an ISO 3166-1 code: alpha-2 (DE), alpha-3 (DEU) or numeric. It is stored and returned as alpha-3. A country the profile blocks is refused here. The country the identity check reports is tested against the same list at review.
For a profile whose entityType is COMPANY, which runs the check for a company applicant. name and registrationNumber, both strings, pre-fill that applicant together with country. Ignored for an INDIVIDUAL profile.
A verification fee in the smallest currency unit, from 50 to 1000000. The customer pays it through a Stripe checkout on the hosted page before the check opens. Omit it for a free link.
One entry per channel attempted, each { sent, error } with error present only on failure. Empty when no channel was attempted. For email, sent: true does not confirm delivery, because a refusal by the mail provider is not reported here.
Present only when something degraded. SUMSUB_APPLICANT_NOT_CREATED means the applicant could not be created in advance. The check still opens from the link, but without the email, country and document pre-fill.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Trusset Protocol","description":"End-to-end infrastructure for tokenizing any asset","colors":{"primary":"#B1F163","light":"#B1F163","dark":"#B1F163"},"logo":{"light":"https://mintcdn.com/testtttt-3cb7d5bb/38jNDl9NUnuI6yfl/logo/patchGreen.png?fit=max\u0026auto=format\u0026n=38jNDl9NUnuI6yfl\u0026q=85\u0026s=d62bfe76228e7c7e125f25f84f935c73","dark":"https://mintcdn.com/testtttt-3cb7d5bb/38jNDl9NUnuI6yfl/logo/patchGreen.png?fit=max\u0026auto=format\u0026n=38jNDl9NUnuI6yfl\u0026q=85\u0026s=d62bfe76228e7c7e125f25f84f935c73"},"favicon":"https://mintcdn.com/testtttt-3cb7d5bb/38jNDl9NUnuI6yfl/favicon.png?fit=max\u0026auto=format\u0026n=38jNDl9NUnuI6yfl\u0026q=85\u0026s=3ece2c317cdd2ffd62b7199d0b990623","api":{"mdx":{"auth":{"method":"key","name":"x-api-key"},"server":"https://api.trusset.org"}},"navbar":{"links":[{"href":"https://github.com/Trusset","label":"GitHub"}],"primary":{"type":"button","label":"Get started","href":"https://issuers.trusset.org"}},"footer":{"socials":{"website":"https://trusset.org","linkedin":"https://www.linkedin.com/company/trusset"}},"seo":{"metatags":{"description":"Trusset Protocol provides end-to-end infrastructure for tokenizing any asset. Build on our blockchain platform for asset tokenization, DeFi trading, and collateralized lending.","keywords":"asset tokenization, blockchain infrastructure, DeFi platform, tokenized assets, smart contracts, collateralized loans, asset financing, multi-chain bridge, real-world assets, RWA tokenization","author":"Trusset Protocol","robots":"index, follow","googlebot":"index, follow","language":"en","category":"Blockchain Technology","distribution":"global","coverage":"Worldwide","target":"developers, institutions, asset managers","theme-color":"#B1F163","og:title":"Trusset Protocol - Infrastructure for Asset Tokenization","og:type":"website","og:url":"https://docs.trusset.org","og:image":"https://docs.trusset.org/assets/logo.png","og:description":"End-to-end infrastructure for tokenizing any asset. Build DeFi applications, manage tokenized assets, and access collateralized lending on our blockchain platform.","og:site_name":"Trusset Protocol Documentation","og:locale":"en_US","article:section":"Blockchain Technology","article:tag":"blockchain, tokenization, DeFi, smart contracts, asset management, collateral, lending, trading","application-name":"Trusset Protocol Docs","HandheldFriendly":"True","MobileOptimized":"320","viewport":"width=device-width, initial-scale=1.0","charset":"UTF-8"},"indexing":"all"},"fonts":{"body":{"family":"Questrial","weight":400}},"errors":{"404":{"redirect":true,"title":"I can't be found","description":"What ever **happened** to this _page_?"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Issuer App","icon":"globe","href":"https://issuers.trusset.org"},{"anchor":"Custodian App","icon":"building","href":"https://custodians.trusset.org"},{"anchor":"MiCA Register","icon":"list","href":"https://trusset.org/mica-register"},{"anchor":"Demo Call","icon":"phone","href":"https://cal.com/paul-ilami-trusset"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"testtttt-3cb7d5bb","hasAudioNarration":false,"actualSubdomain":"testtttt-3cb7d5bb","customDomains":["docs.trusset.org"],"gitSource":{"type":"github","owner":"trusset","repo":"trusset-documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad7942313cbd31e30201292","collectionId":"c474acc6-b7df-40dd-8413-8c0c8963ec23","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad7942313cbd31e30201292"},"feedback":{"thumbs":false},"entitlements":{},"buildId":"6ad7942313cbd31e30201292","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"API Reference","count":390},{"language":"default","tag":"Lending","count":152},{"language":"default","tag":"Trading","count":100},{"language":"default","tag":"Customers","count":64},{"language":"default","tag":"Stock Trading","count":43},{"language":"default","tag":"External Securities Trading","count":33},{"language":"default","tag":"Order Books","count":27},{"language":"default","tag":"Seller Financing","count":26},{"language":"default","tag":"Commodity Trading","count":24},{"language":"default","tag":"Orders","count":20}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"/* vietnamese */\n@font-face {\n font-family: 'Questrial';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/questrial/v19/QdVUSTchPBm7nuUeVf70sSFlq20.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Questrial';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/questrial/v19/QdVUSTchPBm7nuUeVf70sCFlq20.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Questrial';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/questrial/v19/QdVUSTchPBm7nuUeVf70viFl.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n#page-title,.mdx-content h1,.mdx-content h2,.mdx-content h3,.mdx-content h4,.mdx-content h5,.mdx-content h6,h1,h2,h3,h4,h5,h6{font-family:'Questrial',sans-serif!important}"}],"page":{"pagePath":"endpoints/customers/create-id-link","slug":"/endpoints/customers/create-id-link","pageMetadata":{"title":"Create ID Link","api":"POST /customers/api/id-links","description":"Create a hosted identity verification link for a customer","href":"/endpoints/customers/create-id-link"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create a hosted identity verification link for a customer\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Expandable,Heading,ParamField,ResponseField,Step,Steps,Table,Warning}=_components;if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Creates a hosted verification link on verify.trusset.org for one customer. The customer opens it, pays the fee if you set one, connects a wallet, signs a message that proves it controls the wallet, and passes the identity check.`}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:`The fee is collected before the identity check opens, and no endpoint refunds it. A customer who fails the check, or whose link is revoked, has still paid.`}),_jsxs(_components.p,{children:[`A link that names no wallet accepts the first wallet attached on the hosted page, and only from the holder of that wallet: the page asks the wallet to sign a message first, and the attach is refused with `,_jsx(_components.code,{children:`401 WALLET_SIGNATURE_REQUIRED`}),` without it. From then on the identity check opens only for a visitor signed in with that wallet, so whoever attached a wallet can only verify their own identity onto it. Someone holding the URL can still attach their own wallet first and lock the customer out, so treat the URL as a credential, revoke a link the customer cannot open and send a new one. Set `,_jsx(_components.code,{children:`recipientWallet`}),` whenever you know the wallet.`]}),_jsxs(_components.p,{children:[`A link that names a wallet works the same way: the identity check, its token refresh and the completion open only for a visitor signed in with that wallet (`,_jsx(_components.code,{children:`401 WALLET_SIGNATURE_REQUIRED`}),` otherwise), so the customer opens the link with that wallet connected. Contract wallets sign in through ERC-1271. A link is completed only after its identity check was submitted to Sumsub; a completion without one is refused with `,_jsx(_components.code,{children:`409 ID_CHECK_NOT_SUBMITTED`}),` and the link stays open. Once a link is used, only the holder of its wallet is told the outcome on the hosted page.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`how-a-link-resolves`,children:`How a link resolves`}),`\n`,_jsxs(_components.p,{children:[`The link reads `,_jsx(_components.code,{children:`COMPLETED`}),` once the customer finishes the hosted flow or the identity check passes. It reads `,_jsx(_components.code,{children:`REJECTED`}),` when the check fails or the review does not meet the profile (see `,_jsx(_components.a,{href:`#review-rules`,children:`Review rules`}),`), which can happen after it read `,_jsx(_components.code,{children:`COMPLETED`}),`. `,_jsx(_components.code,{children:`COMPLETED`}),` alone is not a verdict.`]}),`\n`,_jsxs(_components.p,{children:[`A check approved before any wallet is bound also reads `,_jsx(_components.code,{children:`COMPLETED`}),`, and the link then waits for a wallet: `,_jsx(_components.a,{href:`/endpoints/customers/get-id-link`,children:`Get ID Link`}),` reports `,_jsx(_components.code,{children:`awaitingWallet: true`}),`. From then on only you can bind the wallet, with `,_jsx(_components.a,{href:`/endpoints/customers/bind-link-wallet`,children:`Bind Link Wallet`}),`. The hosted page refuses the customer with `,_jsx(_components.code,{children:`409 ISSUER_BINDS_WALLET`}),` and asks them to contact you. Before the approval, the hosted page binds a wallet only to a link that is still open and unused.`]}),`\n`,_jsxs(_components.p,{children:[`A passed check writes nothing on chain by itself. The wallet is queued in `,_jsx(_components.a,{href:`/endpoints/customers/list-pending-verifications`,children:`List Pending Verifications`}),`, and it stays unregistered until your instance’s registered wallet signs the transaction. When the profile has an eligibility register, the wallet’s admission to it is queued as well. See `,_jsx(_components.a,{href:`/endpoints/customers/introduction#eligibility-registers`,children:`Eligibility registers`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`EXPIRED`}),` means the link was `,_jsx(_components.a,{href:`/endpoints/customers/revoke-id-link`,children:`revoked`}),`. A link that runs past `,_jsx(_components.code,{children:`expiresAt`}),` without being revoked still reads `,_jsx(_components.code,{children:`PENDING`}),`, although the hosted page refuses it.`]}),`\n`,_jsx(Heading,{level:`2`,id:`review-rules`,children:`Review rules`}),`\n`,_jsx(_components.p,{children:`Sumsub reports each review to Trusset. A green review is accepted only when all of these hold:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`It comes from the Sumsub level the link was created with. Otherwise it is refused with `,_jsx(_components.code,{children:`KYC_LEVEL_MISMATCH`}),`, or with `,_jsx(_components.code,{children:`KYC_LEVEL_UNKNOWN`}),` when Sumsub reports no level.`]}),`\n`,_jsxs(_components.li,{children:[`The applicant is of the kind the profile admits: a company applicant for a `,_jsx(_components.code,{children:`COMPANY`}),` profile, an individual for an `,_jsx(_components.code,{children:`INDIVIDUAL`}),` one. Otherwise `,_jsx(_components.code,{children:`KYC_ENTITY_MISMATCH`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`No country reported for the applicant is on the profile’s blocked list, and neither is the link’s own `,_jsx(_components.code,{children:`country`}),`. The reported countries are the document country, the declared country, the nationality and, for a company, its country. Otherwise `,_jsx(_components.code,{children:`COUNTRY_BLOCKED`}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The level is fixed when the link is created. The applicant kind and the blocked countries are read from the profile when the review arrives.`}),`\n`,_jsxs(_components.p,{children:[`A refused review turns the link `,_jsx(_components.code,{children:`REJECTED`}),` and the customer record, when there is one, `,_jsx(_components.code,{children:`rejected`}),`, and the customer’s audit log records `,_jsx(_components.code,{children:`KYC_REFUSED_LEVEL`}),`, `,_jsx(_components.code,{children:`KYC_REFUSED_ENTITY`}),` or `,_jsx(_components.code,{children:`KYC_REFUSED_COUNTRY`}),`. A final red review turns it `,_jsx(_components.code,{children:`REJECTED`}),` too. A customer record already verified under another profile keeps its status. A refusal or a rejection also queues the removal of the link’s wallet from the eligibility register of the link’s profile, and cancels its admission there when it is still waiting.`]}),`\n`,_jsxs(_components.p,{children:[`A red review that asks the customer to resubmit documents (`,_jsx(_components.code,{children:`reviewRejectType: RETRY`}),`) keeps a link whose review has not settled open, so the customer can finish on the same link. A link the hosted page had already completed is reopened as `,_jsx(_components.code,{children:`PENDING`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`a-review-settles-once`,children:`A review settles once`}),`\n`,_jsxs(_components.p,{children:[`The first approval, refusal or final rejection applied to a link settles it. A review that arrives after that is ignored, repeats and replays of the same review included, with one exception: a final red review still turns an approved link `,_jsx(_components.code,{children:`REJECTED`}),`, unless Sumsub dated it no later than the moment Trusset applied the approval.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Review`}),_jsx(_components.th,{children:`Link not settled yet`}),_jsx(_components.th,{children:`Link already settled`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Green`}),_jsx(_components.td,{children:`Approved, or refused under the rules above`}),_jsx(_components.td,{children:`Ignored`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Red, final`}),_jsxs(_components.td,{children:[`The link turns `,_jsx(_components.code,{children:`REJECTED`})]}),_jsxs(_components.td,{children:[`The link turns `,_jsx(_components.code,{children:`REJECTED`}),` when it was approved and the review is dated after the approval was applied. Ignored otherwise`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Red, resubmission requested`}),_jsx(_components.td,{children:`The link stays open`}),_jsx(_components.td,{children:`Ignored`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`A revoked link ignores every review. Sumsub delivers each review by webhook, and an event Sumsub dated more than 7 days before it arrives is ignored whatever it says. An ignored review changes nothing: the link, the customer record, the queues and the customer webhook stay as they were, and the audit log records `,_jsx(_components.code,{children:`KYC_REVIEW_IGNORED`}),`. `,_jsx(_components.a,{href:`/endpoints/customers/recheck-link-review`,children:`Recheck Link Review`}),` applies the same rules. It does not ask Sumsub about a settled link at all, unless the link is approved and still waiting for a wallet.`]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`A final rejection that turns an approved link `,_jsx(_components.code,{children:`REJECTED`}),` dismisses the link’s registration while it still waits in the `,_jsx(_components.a,{href:`/endpoints/customers/list-pending-verifications`,children:`pending queue`}),`, so it can no longer be signed. An identity you already registered stays on your instance register until you revoke it with `,_jsx(_components.a,{href:`/endpoints/customers/revoke-identity`,children:`Revoke Identity`}),`.`]}),_jsxs(_components.p,{children:[`Archiving a customer with `,_jsx(_components.a,{href:`/endpoints/customers/archive`,children:`Archive Customer`}),` closes its open links, including one whose review has not come back yet, so a later review registers nothing. It also dismisses the customer’s rows in the pending queue.`]})]}),`\n`,_jsxs(_components.p,{children:[`A customer webhook set up in the Issuer Portal reports each review Trusset applies as `,_jsx(_components.code,{children:`customer.kyc_reviewed`}),`, with `,_jsx(_components.code,{children:`outcome`}),` `,_jsx(_components.code,{children:`APPROVED`}),`, `,_jsx(_components.code,{children:`REFUSED`}),`, `,_jsx(_components.code,{children:`REJECTED`}),` or `,_jsx(_components.code,{children:`RETRY`}),`. `,_jsx(_components.code,{children:`UNCONFIRMED`}),` means Sumsub approved but the applicant could not be read to apply the rules above, so the link is unchanged until a later review or `,_jsx(_components.a,{href:`/endpoints/customers/recheck-link-review`,children:`Recheck Link Review`}),` applies the approval. An ignored review is not reported. A registration waiting for your signature is reported as `,_jsx(_components.code,{children:`customer.registration_pending`}),`, and a completed registration as `,_jsx(_components.code,{children:`customer.registered`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`run-the-check-in-your-own-app`,children:`Run the check in your own app`}),`\n`,_jsx(_components.p,{children:`Your app can run the identity check itself with the Sumsub SDK instead of sending the customer to the hosted page. The link stays the record of the onboarding either way, and the review is held to the same rules.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Create the link`,children:_jsxs(_components.p,{children:[`Create it as described on this page, without `,_jsx(_components.code,{children:`feeCents`}),`, because a fee is collected only on the hosted page. Omit `,_jsx(_components.code,{children:`sendVia`}),` so nothing is delivered, and name the wallet with `,_jsx(_components.code,{children:`recipientWallet`}),` when you already know it.`]})}),_jsx(Step,{title:`Run the check`,children:_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/endpoints/customers/issue-sumsub-token`,children:`Issue Sumsub Token`}),` returns an access token for the link’s applicant and level. Pass it to the Sumsub WebSDK or MobileSDK in your app.`]})}),_jsx(Step,{title:`Bind the wallet`,children:_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/endpoints/customers/bind-link-wallet`,children:`Bind Link Wallet`}),` attaches the customer’s wallet, before or after the review. A review approved without a wallet waits for one, and the registration is queued once the wallet is bound. After the approval this call is the only way to bind it.`]})}),_jsx(Step,{title:`Follow the outcome`,children:_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/endpoints/customers/get-id-link`,children:`Get ID Link`}),` reads the review, the registration and the eligibility admissions. `,_jsx(_components.a,{href:`/endpoints/customers/recheck-link-review`,children:`Recheck Link Review`}),` asks Sumsub again when a review did not arrive or could not be applied.`]})})]}),`\n`,_jsxs(_components.p,{children:[`When the link carries `,_jsx(_components.code,{children:`recipientEmail`}),` or `,_jsx(_components.code,{children:`recipientPhone`}),`, Trusset still tells the recipient of a rejection, a resubmission request or a verification that needed no registration. A resubmission message points to the hosted link. The registration on your instance register and any eligibility admission are signed by your own wallet, as for a hosted link.`]}),`\n`,_jsx(_components.p,{children:`Every identity check runs on Trusset’s Sumsub account, whether the customer completes it on the hosted page or in your app.`}),`\n`,_jsx(Heading,{level:`2`,id:`body-parameters`,children:`Body Parameters`}),`\n`,_jsxs(_components.p,{children:[`Send at least one recipient: `,_jsx(_components.code,{children:`recipientEmail`}),`, `,_jsx(_components.code,{children:`recipientWallet`}),` or `,_jsx(_components.code,{children:`recipientPhone`}),`. A linked customer can supply the wallet or the email instead.`]}),`\n`,_jsx(ParamField,{body:`recipientEmail`,type:`string`,id:`param-recipient-email`,children:_jsxs(_components.p,{children:[`Where the link is emailed when `,_jsx(_components.code,{children:`sendVia`}),` includes `,_jsx(_components.code,{children:`email`}),`. It also pre-fills the identity check. The address is not validated here.`]})}),`\n`,_jsx(ParamField,{body:`recipientWallet`,type:`string`,id:`param-recipient-wallet`,children:_jsx(_components.p,{children:`Binds the link to this wallet, so the hosted page accepts no other and opens the identity check only after the customer signs in with it. The customer opens the link with this wallet connected and signs a message (not a transaction, no gas); anyone else can open the page but never sees its result. Stored and returned checksummed.`})}),`\n`,_jsx(ParamField,{body:`recipientPhone`,type:`string`,id:`param-recipient-phone`,children:_jsxs(_components.p,{children:[`Where the link is texted when `,_jsx(_components.code,{children:`sendVia`}),` includes `,_jsx(_components.code,{children:`sms`}),`. Send it in E.164 form. The SMS sender strips spaces, hyphens, brackets and dots, reads a leading `,_jsx(_components.code,{children:`00`}),` as `,_jsx(_components.code,{children:`+`}),`, and reads a single leading `,_jsx(_components.code,{children:`0`}),` as a German number (`,_jsx(_components.code,{children:`+49`}),`). A number that still is not E.164 fails in `,_jsx(_components.code,{children:`delivery.sms`}),`, not here.`]})}),`\n`,_jsx(ParamField,{body:`customerId`,type:`string`,id:`param-customer-id`,children:_jsx(_components.p,{children:`The customer record this link completes. Completion then updates that record instead of creating a second customer. Archived customers are not matched.`})}),`\n`,_jsx(ParamField,{body:`referenceKey`,type:`string`,id:`param-reference-key`,children:_jsxs(_components.p,{children:[`Names the customer by reference key instead. Used only when `,_jsx(_components.code,{children:`customerId`}),` is absent.`]})}),`\n`,_jsx(ParamField,{body:`externalId`,type:`string`,id:`param-external-id`,children:_jsxs(_components.p,{children:[`Names the customer by external ID instead. Used only when `,_jsx(_components.code,{children:`customerId`}),` and `,_jsx(_components.code,{children:`referenceKey`}),` are absent.`]})}),`\n`,_jsxs(_components.p,{children:[`When a customer is named, each identifier must be a string of 1 to 128 characters. A customer who already holds a wallet binds the link to it, and a different `,_jsx(_components.code,{children:`recipientWallet`}),` is refused. When the request sends no recipient at all, the customer’s first email contact becomes `,_jsx(_components.code,{children:`recipientEmail`}),`. The customer’s country and investor type fill `,_jsx(_components.code,{children:`country`}),` and `,_jsx(_components.code,{children:`investorType`}),` when those are omitted.`]}),`\n`,_jsxs(ParamField,{body:`investorType`,type:`string`,default:`RETAIL`,id:`param-investor-type`,children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`key`}),` of an enabled `,_jsx(_components.a,{href:`/endpoints/customers/list-verification-profiles`,children:`verification profile`}),`, matched exactly. The presets are `,_jsx(_components.code,{children:`RETAIL`}),`, `,_jsx(_components.code,{children:`PROFESSIONAL`}),` and `,_jsx(_components.code,{children:`ELIGIBLE_COUNTERPARTY`}),`. Custom keys are lowercase. The profile sets the check level, the documents requested and the blocked countries. Defaults to the linked customer’s investor type, then `,_jsx(_components.code,{children:`RETAIL`}),`.`]}),_jsx(_components.p,{children:`The link keeps the Sumsub level, the applicant type (individual or company) and the on-chain investor type the profile had when the link was created, so a later change to the profile does not reach a link already sent. The blocked countries are read when the investor uses the link.`})]}),`\n`,_jsx(ParamField,{body:`country`,type:`string`,id:`param-country`,children:_jsxs(_components.p,{children:[`The customer’s country as an ISO 3166-1 code: alpha-2 (`,_jsx(_components.code,{children:`DE`}),`), alpha-3 (`,_jsx(_components.code,{children:`DEU`}),`) or numeric. It is stored and returned as alpha-3. A country the profile blocks is refused here. The country the identity check reports is tested against the same list at review.`]})}),`\n`,_jsx(ParamField,{body:`company`,type:`object`,id:`param-company`,children:_jsxs(_components.p,{children:[`For a profile whose `,_jsx(_components.code,{children:`entityType`}),` is `,_jsx(_components.code,{children:`COMPANY`}),`, which runs the check for a company applicant. `,_jsx(_components.code,{children:`name`}),` and `,_jsx(_components.code,{children:`registrationNumber`}),`, both strings, pre-fill that applicant together with `,_jsx(_components.code,{children:`country`}),`. Ignored for an `,_jsx(_components.code,{children:`INDIVIDUAL`}),` profile.`]})}),`\n`,_jsx(ParamField,{body:`expiryDays`,type:`integer`,default:`30`,id:`param-expiry-days`,children:_jsx(_components.p,{children:`Days until the link expires, from 1 to 365. Paying the fee extends a link with less than 24 hours left to 24 hours after payment.`})}),`\n`,_jsx(ParamField,{body:`feeCents`,type:`integer`,id:`param-fee-cents`,children:_jsx(_components.p,{children:`A verification fee in the smallest currency unit, from 50 to 1000000. The customer pays it through a Stripe checkout on the hosted page before the check opens. Omit it for a free link.`})}),`\n`,_jsx(ParamField,{body:`currency`,type:`string`,id:`param-currency`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`eur`}),` or `,_jsx(_components.code,{children:`usd`}),`, in any case. Required with `,_jsx(_components.code,{children:`feeCents`}),` and ignored without it.`]})}),`\n`,_jsx(ParamField,{body:`sendVia`,type:`string | string[]`,id:`param-send-via`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`email`}),`, `,_jsx(_components.code,{children:`sms`}),`, or both. Omit it to deliver the link yourself. A channel without a matching recipient is skipped, and other values are ignored.`]})}),`\n`,_jsx(ParamField,{body:`note`,type:`string`,id:`param-note`,children:_jsx(_components.p,{children:`Shown as a note in the email and returned to the hosted page.`})}),`\n`,_jsx(ParamField,{body:`customMessage`,type:`string`,id:`param-custom-message`,children:_jsx(_components.p,{children:`Replaces the default text of the email and the SMS, and is returned to the hosted page.`})}),`\n`,_jsx(ParamField,{body:`customRedirectUrl`,type:`string`,id:`param-custom-redirect-url`,children:_jsx(_components.p,{children:`Stored with the link, but nothing reads it back. No endpoint returns it and the hosted page does not redirect to it.`})}),`\n`,_jsx(Heading,{level:`2`,id:`response-fields`,children:`Response Fields`}),`\n`,_jsx(ResponseField,{name:`data`,type:`object`,id:`param-data`,children:_jsxs(Expandable,{children:[_jsxs(ResponseField,{name:`id`,type:`string`,id:`param-id`,children:[`Link ID. `,_jsx(_components.a,{href:`/endpoints/customers/revoke-id-link`,children:`Revoke ID Link`}),` and `,_jsx(_components.a,{href:`/endpoints/customers/resend-id-link`,children:`Resend ID Link`}),` take it as `,_jsx(_components.code,{children:`linkId`}),`.`]}),_jsx(ResponseField,{name:`token`,type:`string`,id:`param-token`,children:`The 64 hex character secret in the URL.`}),_jsxs(ResponseField,{name:`verificationUrl`,type:`string`,id:`param-verification-url`,children:[_jsx(_components.code,{children:`https://verify.trusset.org/link/{token}`}),`. Send only this to the customer.`]}),_jsxs(ResponseField,{name:`status`,type:`string`,id:`param-status`,children:[_jsx(_components.code,{children:`PENDING`}),`.`]}),_jsxs(ResponseField,{name:`recipientEmail`,type:`string`,id:`param-recipient-email-1`,children:[`As stored, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(ResponseField,{name:`recipientWallet`,type:`string`,id:`param-recipient-wallet-1`,children:[`The bound wallet, checksummed, or `,_jsx(_components.code,{children:`null`}),` when the hosted page will ask for one.`]}),_jsxs(ResponseField,{name:`recipientPhone`,type:`string`,id:`param-recipient-phone-1`,children:[`As sent, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsx(ResponseField,{name:`expiresAt`,type:`string`,id:`param-expires-at`,children:`ISO 8601.`}),_jsxs(ResponseField,{name:`sumsubApplicantId`,type:`string`,id:`param-sumsub-applicant-id`,children:[`The identity-check applicant created in advance, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(ResponseField,{name:`country`,type:`string`,id:`param-country-1`,children:[`ISO 3166-1 alpha-3, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(ResponseField,{name:`customerId`,type:`string`,id:`param-customer-id-1`,children:[`The linked customer, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(ResponseField,{name:`feeCents`,type:`integer`,id:`param-fee-cents-1`,children:[`The fee, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(ResponseField,{name:`currency`,type:`string`,id:`param-currency-1`,children:[`Lowercase, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsx(ResponseField,{name:`delivery`,type:`object`,id:`param-delivery`,children:_jsxs(_components.p,{children:[`One entry per channel attempted, each `,_jsx(_components.code,{children:`{ sent, error }`}),` with `,_jsx(_components.code,{children:`error`}),` present only on failure. Empty when no channel was attempted. For email, `,_jsx(_components.code,{children:`sent: true`}),` does not confirm delivery, because a refusal by the mail provider is not reported here.`]})}),_jsx(ResponseField,{name:`warnings`,type:`array`,id:`param-warnings`,children:_jsxs(_components.p,{children:[`Present only when something degraded. `,_jsx(_components.code,{children:`SUMSUB_APPLICANT_NOT_CREATED`}),` means the applicant could not be created in advance. The check still opens from the link, but without the email, country and document pre-fill.`]})})]})}),`\n`,`\n`,`\n`,_jsx(Heading,{level:`2`,id:`error-codes`,children:`Error Codes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`HTTP`}),_jsx(_components.th,{children:`Cause`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_INPUT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`customerId`}),`, `,_jsx(_components.code,{children:`referenceKey`}),` or `,_jsx(_components.code,{children:`externalId`}),` is not a string of 1 to 128 characters`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CUSTOMER_NOT_FOUND`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsx(_components.td,{children:`No customer on this instance matches the identifier, or the match is archived`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CUSTOMER_WALLET_MISMATCH`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`recipientWallet`}),` differs from the wallet the named customer already holds`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MISSING_RECIPIENT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:`No email, wallet or phone was sent, and the named customer supplies none`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_ADDRESS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:`The wallet is not a valid address`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_COUNTRY`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`country`}),` is not an ISO 3166-1 code`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_EXPIRY`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`expiryDays`}),` is outside 1 to 365`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_FEE`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`feeCents`}),` is not an integer from 50 to 1000000`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_CURRENCY`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`feeCents`}),` was sent and `,_jsx(_components.code,{children:`currency`}),` is not `,_jsx(_components.code,{children:`eur`}),` or `,_jsx(_components.code,{children:`usd`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_INVESTOR_TYPE`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`investorType`}),` names no enabled verification profile on this instance. For a disabled profile the message names it`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`COUNTRY_BLOCKED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`403`})}),_jsx(_components.td,{children:`The verification profile blocks the customer’s country`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CREATE_FAILED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`500`})}),_jsx(_components.td,{children:`The link could not be created`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create ID Link","api":"POST /customers/api/id-links","description":"Create a hosted identity verification link for a customer","href":"/endpoints/customers/create-id-link"}}},"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,ParamField,RequestExample,ResponseExample,ResponseField,Step,Steps,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!RequestExample)_missingMdxReference(`RequestExample`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Creates a hosted verification link on verify.trusset.org for one customer. The customer opens it, pays the fee if you set one, connects a wallet, signs a message that proves it controls the wallet, and passes the identity check.`}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:`The fee is collected before the identity check opens, and no endpoint refunds it. A customer who fails the check, or whose link is revoked, has still paid.`}),_jsxs(_components.p,{children:[`A link that names no wallet accepts the first wallet attached on the hosted page, and only from the holder of that wallet: the page asks the wallet to sign a message first, and the attach is refused with `,_jsx(_components.code,{children:`401 WALLET_SIGNATURE_REQUIRED`}),` without it. From then on the identity check opens only for a visitor signed in with that wallet, so whoever attached a wallet can only verify their own identity onto it. Someone holding the URL can still attach their own wallet first and lock the customer out, so treat the URL as a credential, revoke a link the customer cannot open and send a new one. Set `,_jsx(_components.code,{children:`recipientWallet`}),` whenever you know the wallet.`]}),_jsxs(_components.p,{children:[`A link that names a wallet works the same way: the identity check, its token refresh and the completion open only for a visitor signed in with that wallet (`,_jsx(_components.code,{children:`401 WALLET_SIGNATURE_REQUIRED`}),` otherwise), so the customer opens the link with that wallet connected. Contract wallets sign in through ERC-1271. A link is completed only after its identity check was submitted to Sumsub; a completion without one is refused with `,_jsx(_components.code,{children:`409 ID_CHECK_NOT_SUBMITTED`}),` and the link stays open. Once a link is used, only the holder of its wallet is told the outcome on the hosted page.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`how-a-link-resolves`,children:`How a link resolves`}),`\n`,_jsxs(_components.p,{children:[`The link reads `,_jsx(_components.code,{children:`COMPLETED`}),` once the customer finishes the hosted flow or the identity check passes. It reads `,_jsx(_components.code,{children:`REJECTED`}),` when the check fails or the review does not meet the profile (see `,_jsx(_components.a,{href:`#review-rules`,children:`Review rules`}),`), which can happen after it read `,_jsx(_components.code,{children:`COMPLETED`}),`. `,_jsx(_components.code,{children:`COMPLETED`}),` alone is not a verdict.`]}),`\n`,_jsxs(_components.p,{children:[`A check approved before any wallet is bound also reads `,_jsx(_components.code,{children:`COMPLETED`}),`, and the link then waits for a wallet: `,_jsx(_components.a,{href:`/endpoints/customers/get-id-link`,children:`Get ID Link`}),` reports `,_jsx(_components.code,{children:`awaitingWallet: true`}),`. From then on only you can bind the wallet, with `,_jsx(_components.a,{href:`/endpoints/customers/bind-link-wallet`,children:`Bind Link Wallet`}),`. The hosted page refuses the customer with `,_jsx(_components.code,{children:`409 ISSUER_BINDS_WALLET`}),` and asks them to contact you. Before the approval, the hosted page binds a wallet only to a link that is still open and unused.`]}),`\n`,_jsxs(_components.p,{children:[`A passed check writes nothing on chain by itself. The wallet is queued in `,_jsx(_components.a,{href:`/endpoints/customers/list-pending-verifications`,children:`List Pending Verifications`}),`, and it stays unregistered until your instance’s registered wallet signs the transaction. When the profile has an eligibility register, the wallet’s admission to it is queued as well. See `,_jsx(_components.a,{href:`/endpoints/customers/introduction#eligibility-registers`,children:`Eligibility registers`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`EXPIRED`}),` means the link was `,_jsx(_components.a,{href:`/endpoints/customers/revoke-id-link`,children:`revoked`}),`. A link that runs past `,_jsx(_components.code,{children:`expiresAt`}),` without being revoked still reads `,_jsx(_components.code,{children:`PENDING`}),`, although the hosted page refuses it.`]}),`\n`,_jsx(Heading,{level:`2`,id:`review-rules`,children:`Review rules`}),`\n`,_jsx(_components.p,{children:`Sumsub reports each review to Trusset. A green review is accepted only when all of these hold:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`It comes from the Sumsub level the link was created with. Otherwise it is refused with `,_jsx(_components.code,{children:`KYC_LEVEL_MISMATCH`}),`, or with `,_jsx(_components.code,{children:`KYC_LEVEL_UNKNOWN`}),` when Sumsub reports no level.`]}),`\n`,_jsxs(_components.li,{children:[`The applicant is of the kind the profile admits: a company applicant for a `,_jsx(_components.code,{children:`COMPANY`}),` profile, an individual for an `,_jsx(_components.code,{children:`INDIVIDUAL`}),` one. Otherwise `,_jsx(_components.code,{children:`KYC_ENTITY_MISMATCH`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`No country reported for the applicant is on the profile’s blocked list, and neither is the link’s own `,_jsx(_components.code,{children:`country`}),`. The reported countries are the document country, the declared country, the nationality and, for a company, its country. Otherwise `,_jsx(_components.code,{children:`COUNTRY_BLOCKED`}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The level is fixed when the link is created. The applicant kind and the blocked countries are read from the profile when the review arrives.`}),`\n`,_jsxs(_components.p,{children:[`A refused review turns the link `,_jsx(_components.code,{children:`REJECTED`}),` and the customer record, when there is one, `,_jsx(_components.code,{children:`rejected`}),`, and the customer’s audit log records `,_jsx(_components.code,{children:`KYC_REFUSED_LEVEL`}),`, `,_jsx(_components.code,{children:`KYC_REFUSED_ENTITY`}),` or `,_jsx(_components.code,{children:`KYC_REFUSED_COUNTRY`}),`. A final red review turns it `,_jsx(_components.code,{children:`REJECTED`}),` too. A customer record already verified under another profile keeps its status. A refusal or a rejection also queues the removal of the link’s wallet from the eligibility register of the link’s profile, and cancels its admission there when it is still waiting.`]}),`\n`,_jsxs(_components.p,{children:[`A red review that asks the customer to resubmit documents (`,_jsx(_components.code,{children:`reviewRejectType: RETRY`}),`) keeps a link whose review has not settled open, so the customer can finish on the same link. A link the hosted page had already completed is reopened as `,_jsx(_components.code,{children:`PENDING`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`a-review-settles-once`,children:`A review settles once`}),`\n`,_jsxs(_components.p,{children:[`The first approval, refusal or final rejection applied to a link settles it. A review that arrives after that is ignored, repeats and replays of the same review included, with one exception: a final red review still turns an approved link `,_jsx(_components.code,{children:`REJECTED`}),`, unless Sumsub dated it no later than the moment Trusset applied the approval.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Review`}),_jsx(_components.th,{children:`Link not settled yet`}),_jsx(_components.th,{children:`Link already settled`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Green`}),_jsx(_components.td,{children:`Approved, or refused under the rules above`}),_jsx(_components.td,{children:`Ignored`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Red, final`}),_jsxs(_components.td,{children:[`The link turns `,_jsx(_components.code,{children:`REJECTED`})]}),_jsxs(_components.td,{children:[`The link turns `,_jsx(_components.code,{children:`REJECTED`}),` when it was approved and the review is dated after the approval was applied. Ignored otherwise`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Red, resubmission requested`}),_jsx(_components.td,{children:`The link stays open`}),_jsx(_components.td,{children:`Ignored`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`A revoked link ignores every review. Sumsub delivers each review by webhook, and an event Sumsub dated more than 7 days before it arrives is ignored whatever it says. An ignored review changes nothing: the link, the customer record, the queues and the customer webhook stay as they were, and the audit log records `,_jsx(_components.code,{children:`KYC_REVIEW_IGNORED`}),`. `,_jsx(_components.a,{href:`/endpoints/customers/recheck-link-review`,children:`Recheck Link Review`}),` applies the same rules. It does not ask Sumsub about a settled link at all, unless the link is approved and still waiting for a wallet.`]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`A final rejection that turns an approved link `,_jsx(_components.code,{children:`REJECTED`}),` dismisses the link’s registration while it still waits in the `,_jsx(_components.a,{href:`/endpoints/customers/list-pending-verifications`,children:`pending queue`}),`, so it can no longer be signed. An identity you already registered stays on your instance register until you revoke it with `,_jsx(_components.a,{href:`/endpoints/customers/revoke-identity`,children:`Revoke Identity`}),`.`]}),_jsxs(_components.p,{children:[`Archiving a customer with `,_jsx(_components.a,{href:`/endpoints/customers/archive`,children:`Archive Customer`}),` closes its open links, including one whose review has not come back yet, so a later review registers nothing. It also dismisses the customer’s rows in the pending queue.`]})]}),`\n`,_jsxs(_components.p,{children:[`A customer webhook set up in the Issuer Portal reports each review Trusset applies as `,_jsx(_components.code,{children:`customer.kyc_reviewed`}),`, with `,_jsx(_components.code,{children:`outcome`}),` `,_jsx(_components.code,{children:`APPROVED`}),`, `,_jsx(_components.code,{children:`REFUSED`}),`, `,_jsx(_components.code,{children:`REJECTED`}),` or `,_jsx(_components.code,{children:`RETRY`}),`. `,_jsx(_components.code,{children:`UNCONFIRMED`}),` means Sumsub approved but the applicant could not be read to apply the rules above, so the link is unchanged until a later review or `,_jsx(_components.a,{href:`/endpoints/customers/recheck-link-review`,children:`Recheck Link Review`}),` applies the approval. An ignored review is not reported. A registration waiting for your signature is reported as `,_jsx(_components.code,{children:`customer.registration_pending`}),`, and a completed registration as `,_jsx(_components.code,{children:`customer.registered`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`run-the-check-in-your-own-app`,children:`Run the check in your own app`}),`\n`,_jsx(_components.p,{children:`Your app can run the identity check itself with the Sumsub SDK instead of sending the customer to the hosted page. The link stays the record of the onboarding either way, and the review is held to the same rules.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Create the link`,children:_jsxs(_components.p,{children:[`Create it as described on this page, without `,_jsx(_components.code,{children:`feeCents`}),`, because a fee is collected only on the hosted page. Omit `,_jsx(_components.code,{children:`sendVia`}),` so nothing is delivered, and name the wallet with `,_jsx(_components.code,{children:`recipientWallet`}),` when you already know it.`]})}),_jsx(Step,{title:`Run the check`,children:_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/endpoints/customers/issue-sumsub-token`,children:`Issue Sumsub Token`}),` returns an access token for the link’s applicant and level. Pass it to the Sumsub WebSDK or MobileSDK in your app.`]})}),_jsx(Step,{title:`Bind the wallet`,children:_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/endpoints/customers/bind-link-wallet`,children:`Bind Link Wallet`}),` attaches the customer’s wallet, before or after the review. A review approved without a wallet waits for one, and the registration is queued once the wallet is bound. After the approval this call is the only way to bind it.`]})}),_jsx(Step,{title:`Follow the outcome`,children:_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/endpoints/customers/get-id-link`,children:`Get ID Link`}),` reads the review, the registration and the eligibility admissions. `,_jsx(_components.a,{href:`/endpoints/customers/recheck-link-review`,children:`Recheck Link Review`}),` asks Sumsub again when a review did not arrive or could not be applied.`]})})]}),`\n`,_jsxs(_components.p,{children:[`When the link carries `,_jsx(_components.code,{children:`recipientEmail`}),` or `,_jsx(_components.code,{children:`recipientPhone`}),`, Trusset still tells the recipient of a rejection, a resubmission request or a verification that needed no registration. A resubmission message points to the hosted link. The registration on your instance register and any eligibility admission are signed by your own wallet, as for a hosted link.`]}),`\n`,_jsx(_components.p,{children:`Every identity check runs on Trusset’s Sumsub account, whether the customer completes it on the hosted page or in your app.`}),`\n`,_jsx(Heading,{level:`2`,id:`body-parameters`,children:`Body Parameters`}),`\n`,_jsxs(_components.p,{children:[`Send at least one recipient: `,_jsx(_components.code,{children:`recipientEmail`}),`, `,_jsx(_components.code,{children:`recipientWallet`}),` or `,_jsx(_components.code,{children:`recipientPhone`}),`. A linked customer can supply the wallet or the email instead.`]}),`\n`,_jsx(ParamField,{body:`recipientEmail`,type:`string`,id:`param-recipient-email`,children:_jsxs(_components.p,{children:[`Where the link is emailed when `,_jsx(_components.code,{children:`sendVia`}),` includes `,_jsx(_components.code,{children:`email`}),`. It also pre-fills the identity check. The address is not validated here.`]})}),`\n`,_jsx(ParamField,{body:`recipientWallet`,type:`string`,id:`param-recipient-wallet`,children:_jsx(_components.p,{children:`Binds the link to this wallet, so the hosted page accepts no other and opens the identity check only after the customer signs in with it. The customer opens the link with this wallet connected and signs a message (not a transaction, no gas); anyone else can open the page but never sees its result. Stored and returned checksummed.`})}),`\n`,_jsx(ParamField,{body:`recipientPhone`,type:`string`,id:`param-recipient-phone`,children:_jsxs(_components.p,{children:[`Where the link is texted when `,_jsx(_components.code,{children:`sendVia`}),` includes `,_jsx(_components.code,{children:`sms`}),`. Send it in E.164 form. The SMS sender strips spaces, hyphens, brackets and dots, reads a leading `,_jsx(_components.code,{children:`00`}),` as `,_jsx(_components.code,{children:`+`}),`, and reads a single leading `,_jsx(_components.code,{children:`0`}),` as a German number (`,_jsx(_components.code,{children:`+49`}),`). A number that still is not E.164 fails in `,_jsx(_components.code,{children:`delivery.sms`}),`, not here.`]})}),`\n`,_jsx(ParamField,{body:`customerId`,type:`string`,id:`param-customer-id`,children:_jsx(_components.p,{children:`The customer record this link completes. Completion then updates that record instead of creating a second customer. Archived customers are not matched.`})}),`\n`,_jsx(ParamField,{body:`referenceKey`,type:`string`,id:`param-reference-key`,children:_jsxs(_components.p,{children:[`Names the customer by reference key instead. Used only when `,_jsx(_components.code,{children:`customerId`}),` is absent.`]})}),`\n`,_jsx(ParamField,{body:`externalId`,type:`string`,id:`param-external-id`,children:_jsxs(_components.p,{children:[`Names the customer by external ID instead. Used only when `,_jsx(_components.code,{children:`customerId`}),` and `,_jsx(_components.code,{children:`referenceKey`}),` are absent.`]})}),`\n`,_jsxs(_components.p,{children:[`When a customer is named, each identifier must be a string of 1 to 128 characters. A customer who already holds a wallet binds the link to it, and a different `,_jsx(_components.code,{children:`recipientWallet`}),` is refused. When the request sends no recipient at all, the customer’s first email contact becomes `,_jsx(_components.code,{children:`recipientEmail`}),`. The customer’s country and investor type fill `,_jsx(_components.code,{children:`country`}),` and `,_jsx(_components.code,{children:`investorType`}),` when those are omitted.`]}),`\n`,_jsxs(ParamField,{body:`investorType`,type:`string`,default:`RETAIL`,id:`param-investor-type`,children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`key`}),` of an enabled `,_jsx(_components.a,{href:`/endpoints/customers/list-verification-profiles`,children:`verification profile`}),`, matched exactly. The presets are `,_jsx(_components.code,{children:`RETAIL`}),`, `,_jsx(_components.code,{children:`PROFESSIONAL`}),` and `,_jsx(_components.code,{children:`ELIGIBLE_COUNTERPARTY`}),`. Custom keys are lowercase. The profile sets the check level, the documents requested and the blocked countries. Defaults to the linked customer’s investor type, then `,_jsx(_components.code,{children:`RETAIL`}),`.`]}),_jsx(_components.p,{children:`The link keeps the Sumsub level, the applicant type (individual or company) and the on-chain investor type the profile had when the link was created, so a later change to the profile does not reach a link already sent. The blocked countries are read when the investor uses the link.`})]}),`\n`,_jsx(ParamField,{body:`country`,type:`string`,id:`param-country`,children:_jsxs(_components.p,{children:[`The customer’s country as an ISO 3166-1 code: alpha-2 (`,_jsx(_components.code,{children:`DE`}),`), alpha-3 (`,_jsx(_components.code,{children:`DEU`}),`) or numeric. It is stored and returned as alpha-3. A country the profile blocks is refused here. The country the identity check reports is tested against the same list at review.`]})}),`\n`,_jsx(ParamField,{body:`company`,type:`object`,id:`param-company`,children:_jsxs(_components.p,{children:[`For a profile whose `,_jsx(_components.code,{children:`entityType`}),` is `,_jsx(_components.code,{children:`COMPANY`}),`, which runs the check for a company applicant. `,_jsx(_components.code,{children:`name`}),` and `,_jsx(_components.code,{children:`registrationNumber`}),`, both strings, pre-fill that applicant together with `,_jsx(_components.code,{children:`country`}),`. Ignored for an `,_jsx(_components.code,{children:`INDIVIDUAL`}),` profile.`]})}),`\n`,_jsx(ParamField,{body:`expiryDays`,type:`integer`,default:`30`,id:`param-expiry-days`,children:_jsx(_components.p,{children:`Days until the link expires, from 1 to 365. Paying the fee extends a link with less than 24 hours left to 24 hours after payment.`})}),`\n`,_jsx(ParamField,{body:`feeCents`,type:`integer`,id:`param-fee-cents`,children:_jsx(_components.p,{children:`A verification fee in the smallest currency unit, from 50 to 1000000. The customer pays it through a Stripe checkout on the hosted page before the check opens. Omit it for a free link.`})}),`\n`,_jsx(ParamField,{body:`currency`,type:`string`,id:`param-currency`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`eur`}),` or `,_jsx(_components.code,{children:`usd`}),`, in any case. Required with `,_jsx(_components.code,{children:`feeCents`}),` and ignored without it.`]})}),`\n`,_jsx(ParamField,{body:`sendVia`,type:`string | string[]`,id:`param-send-via`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`email`}),`, `,_jsx(_components.code,{children:`sms`}),`, or both. Omit it to deliver the link yourself. A channel without a matching recipient is skipped, and other values are ignored.`]})}),`\n`,_jsx(ParamField,{body:`note`,type:`string`,id:`param-note`,children:_jsx(_components.p,{children:`Shown as a note in the email and returned to the hosted page.`})}),`\n`,_jsx(ParamField,{body:`customMessage`,type:`string`,id:`param-custom-message`,children:_jsx(_components.p,{children:`Replaces the default text of the email and the SMS, and is returned to the hosted page.`})}),`\n`,_jsx(ParamField,{body:`customRedirectUrl`,type:`string`,id:`param-custom-redirect-url`,children:_jsx(_components.p,{children:`Stored with the link, but nothing reads it back. No endpoint returns it and the hosted page does not redirect to it.`})}),`\n`,_jsx(Heading,{level:`2`,id:`response-fields`,children:`Response Fields`}),`\n`,_jsx(ResponseField,{name:`data`,type:`object`,id:`param-data`,children:_jsxs(Expandable,{children:[_jsxs(ResponseField,{name:`id`,type:`string`,id:`param-id`,children:[`Link ID. `,_jsx(_components.a,{href:`/endpoints/customers/revoke-id-link`,children:`Revoke ID Link`}),` and `,_jsx(_components.a,{href:`/endpoints/customers/resend-id-link`,children:`Resend ID Link`}),` take it as `,_jsx(_components.code,{children:`linkId`}),`.`]}),_jsx(ResponseField,{name:`token`,type:`string`,id:`param-token`,children:`The 64 hex character secret in the URL.`}),_jsxs(ResponseField,{name:`verificationUrl`,type:`string`,id:`param-verification-url`,children:[_jsx(_components.code,{children:`https://verify.trusset.org/link/{token}`}),`. Send only this to the customer.`]}),_jsxs(ResponseField,{name:`status`,type:`string`,id:`param-status`,children:[_jsx(_components.code,{children:`PENDING`}),`.`]}),_jsxs(ResponseField,{name:`recipientEmail`,type:`string`,id:`param-recipient-email-1`,children:[`As stored, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(ResponseField,{name:`recipientWallet`,type:`string`,id:`param-recipient-wallet-1`,children:[`The bound wallet, checksummed, or `,_jsx(_components.code,{children:`null`}),` when the hosted page will ask for one.`]}),_jsxs(ResponseField,{name:`recipientPhone`,type:`string`,id:`param-recipient-phone-1`,children:[`As sent, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsx(ResponseField,{name:`expiresAt`,type:`string`,id:`param-expires-at`,children:`ISO 8601.`}),_jsxs(ResponseField,{name:`sumsubApplicantId`,type:`string`,id:`param-sumsub-applicant-id`,children:[`The identity-check applicant created in advance, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(ResponseField,{name:`country`,type:`string`,id:`param-country-1`,children:[`ISO 3166-1 alpha-3, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(ResponseField,{name:`customerId`,type:`string`,id:`param-customer-id-1`,children:[`The linked customer, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(ResponseField,{name:`feeCents`,type:`integer`,id:`param-fee-cents-1`,children:[`The fee, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsxs(ResponseField,{name:`currency`,type:`string`,id:`param-currency-1`,children:[`Lowercase, or `,_jsx(_components.code,{children:`null`}),`.`]}),_jsx(ResponseField,{name:`delivery`,type:`object`,id:`param-delivery`,children:_jsxs(_components.p,{children:[`One entry per channel attempted, each `,_jsx(_components.code,{children:`{ sent, error }`}),` with `,_jsx(_components.code,{children:`error`}),` present only on failure. Empty when no channel was attempted. For email, `,_jsx(_components.code,{children:`sent: true`}),` does not confirm delivery, because a refusal by the mail provider is not reported here.`]})}),_jsx(ResponseField,{name:`warnings`,type:`array`,id:`param-warnings`,children:_jsxs(_components.p,{children:[`Present only when something degraded. `,_jsx(_components.code,{children:`SUMSUB_APPLICANT_NOT_CREATED`}),` means the applicant could not be created in advance. The check still opens from the link, but without the email, country and document pre-fill.`]})})]})}),`\n`,_jsxs(RequestExample,{children:[_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`11`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.trusset.org/customers/api/id-links\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-API-Key: trusset_your_key_here\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"recipientEmail\": \"[email protected]\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"recipientWallet\": \"0x8ba1f109551bD432803012645Ac136ddd64DBA72\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"investorType\": \"RETAIL\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"country\": \"DE\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"expiryDays\": 14,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"sendVia\": [\"email\"]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`16`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`16`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` fetch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'https://api.trusset.org/customers/api/id-links'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` method:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'POST'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'application/json'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'X-API-Key'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'trusset_your_key_here'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` body:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`stringify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` recipientEmail:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '[email protected]'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` recipientWallet:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '0x8ba1f109551bD432803012645Ac136ddd64DBA72'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` investorType:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'RETAIL'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` country:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'DE'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` expiryDays:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 14`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sendVia:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'email'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` })`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`success`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`]})})})]}),`\n`,_jsx(ResponseExample,{children:_jsx(CodeBlock,{filename:`201 Response`,numberOfLines:`25`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`25`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cmg6b2t9x0001lb08q4w7k3fz\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"token\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"5cd9b10d804ba5fb5b4da94181cd0b57099f0dd4e956fc7ac7ec51ebe7fc8a22\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"verificationUrl\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://verify.trusset.org/link/5cd9b10d804ba5fb5b4da94181cd0b57099f0dd4e956fc7ac7ec51ebe7fc8a22\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"PENDING\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"recipientEmail\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"[email protected]\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"recipientWallet\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0x8ba1f109551bD432803012645Ac136ddd64DBA72\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"recipientPhone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"expiresAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-10-14T09:30:00.000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"sumsubApplicantId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"66f1c2a9b8e4d3001a2b3c4d\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"country\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"DEU\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"customerId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"feeCents\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"currency\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"delivery\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"email\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"sent\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"metadata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requestId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"550e8400-e29b-41d4-a716-446655440000\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-09-30T09:30:00.000Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`2`,id:`error-codes`,children:`Error Codes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`HTTP`}),_jsx(_components.th,{children:`Cause`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_INPUT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`customerId`}),`, `,_jsx(_components.code,{children:`referenceKey`}),` or `,_jsx(_components.code,{children:`externalId`}),` is not a string of 1 to 128 characters`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CUSTOMER_NOT_FOUND`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsx(_components.td,{children:`No customer on this instance matches the identifier, or the match is archived`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CUSTOMER_WALLET_MISMATCH`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`recipientWallet`}),` differs from the wallet the named customer already holds`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MISSING_RECIPIENT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:`No email, wallet or phone was sent, and the named customer supplies none`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_ADDRESS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:`The wallet is not a valid address`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_COUNTRY`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`country`}),` is not an ISO 3166-1 code`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_EXPIRY`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`expiryDays`}),` is outside 1 to 365`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_FEE`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`feeCents`}),` is not an integer from 50 to 1000000`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_CURRENCY`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`feeCents`}),` was sent and `,_jsx(_components.code,{children:`currency`}),` is not `,_jsx(_components.code,{children:`eur`}),` or `,_jsx(_components.code,{children:`usd`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_INVESTOR_TYPE`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`investorType`}),` names no enabled verification profile on this instance. For a disabled profile the message names it`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`COUNTRY_BLOCKED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`403`})}),_jsx(_components.td,{children:`The verification profile blocks the customer’s country`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CREATE_FAILED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`500`})}),_jsx(_components.td,{children:`The link could not be created`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create ID Link","api":"POST /customers/api/id-links","description":"Create a hosted identity verification link for a customer","href":"/endpoints/customers/create-id-link"}}}},"mdxExtracts":{"tableOfContents":[{"title":"How a link resolves","slug":"how-a-link-resolves","depth":2,"children":[]},{"title":"Review rules","slug":"review-rules","depth":2,"children":[{"title":"A review settles once","slug":"a-review-settles-once","depth":3,"children":[]}]},{"title":"Run the check in your own app","slug":"run-the-check-in-your-own-app","depth":2,"children":[]},{"title":"Body Parameters","slug":"body-parameters","depth":2,"children":[]},{"title":"Response Fields","slug":"response-fields","depth":2,"children":[]},{"title":"Error Codes","slug":"error-codes","depth":2,"children":[]}],"codeExamples":{"request":{"type":"RequestExample","children":[{"filename":"cURL","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"shellscript\">\u003ccode language=\"shellscript\" numberOfLines=\"11\">\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#DCDCAA\">curl\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -X\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> POST\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"https://api.trusset.org/customers/api/id-links\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -H\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"Content-Type: application/json\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -H\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"X-API-Key: trusset_your_key_here\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -d\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> '{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"recipientEmail\": \"[email protected]\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"recipientWallet\": \"0x8ba1f109551bD432803012645Ac136ddd64DBA72\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"investorType\": \"RETAIL\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"country\": \"DE\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"expiryDays\": 14,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"sendVia\": [\"email\"]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> }'\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"TypeScript","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"typescript\">\u003ccode language=\"typescript\" numberOfLines=\"16\">\u003cspan class=\"line\">\u003cspan style=\"color:#CF222E;--shiki-dark:#569CD6\">const\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#4FC1FF\"> response\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D4D4D4\"> =\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#C586C0\"> await\u003c/span>\u003cspan style=\"color:#8250DF;--shiki-dark:#DCDCAA\"> fetch\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">(\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">'https://api.trusset.org/customers/api/id-links'\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\"> method:\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'POST'\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\"> headers:\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'Content-Type'\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\">:\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'application/json'\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'X-API-Key'\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\">:\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'trusset_your_key_here'\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\"> body:\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#4FC1FF\"> JSON\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">.\u003c/span>\u003cspan style=\"color:#8250DF;--shiki-dark:#DCDCAA\">stringify\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">({\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\"> recipientEmail:\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> '[email protected]'\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\"> recipientWallet:\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> '0x8ba1f109551bD432803012645Ac136ddd64DBA72'\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\"> investorType:\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'RETAIL'\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\"> country:\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> 'DE'\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\"> expiryDays:\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\"> 14\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\"> sendVia:\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> [\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">'email'\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> })\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">});\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#CF222E;--shiki-dark:#569CD6\">const\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> { \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#4FC1FF\">success\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#4FC1FF\">data\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#4FC1FF\">error\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> } \u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D4D4D4\">=\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#C586C0\"> await\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\"> response\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">.\u003c/span>\u003cspan style=\"color:#8250DF;--shiki-dark:#DCDCAA\">json\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">();\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]},"response":{"type":"ResponseExample","children":[{"filename":"201 Response","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"25\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"success\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"data\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"cmg6b2t9x0001lb08q4w7k3fz\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"token\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"5cd9b10d804ba5fb5b4da94181cd0b57099f0dd4e956fc7ac7ec51ebe7fc8a22\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"verificationUrl\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://verify.trusset.org/link/5cd9b10d804ba5fb5b4da94181cd0b57099f0dd4e956fc7ac7ec51ebe7fc8a22\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"PENDING\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"recipientEmail\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"[email protected]\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"recipientWallet\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"0x8ba1f109551bD432803012645Ac136ddd64DBA72\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"recipientPhone\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"expiresAt\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-10-14T09:30:00.000Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"sumsubApplicantId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"66f1c2a9b8e4d3001a2b3c4d\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"country\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"DEU\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"customerId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"feeCents\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"currency\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"delivery\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"email\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"sent\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"metadata\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"requestId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"550e8400-e29b-41d4-a716-446655440000\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"timestamp\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-09-30T09:30:00.000Z\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}},"endpoint":{"title":"Create ID Link","path":"/customers/api/id-links","servers":[{"url":"https://api.trusset.org"}],"method":"post","request":{"security":[{"title":"API Key Auth","parameters":{"header":{"x-api-key":{"type":"apiKey"}},"query":{},"cookie":{}}}],"parameters":{"query":{},"header":{},"cookie":{},"path":{}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"recipientEmail":[{"type":"string","description":"Where the link is emailed when `sendVia` includes `email` . It also pre-fills the identity check. The address is not validated here."}],"recipientWallet":[{"type":"string","description":"Binds the link to this wallet, so the hosted page accepts no other and opens the identity check only after the customer signs in with it. The customer opens the link with this wallet connected and signs a message (not a transaction, no gas); anyone else can open the page but never sees its result. Stored and returned checksummed."}],"recipientPhone":[{"type":"string","description":"Where the link is texted when `sendVia` includes `sms` . Send it in E.164 form. The SMS sender strips spaces, hyphens, brackets and dots, reads a leading `00` as `+` , and reads a single leading `0` as a German number ( `+49` ). A number that still is not E.164 fails in `delivery.sms` , not here."}],"customerId":[{"type":"string","description":"The customer record this link completes. Completion then updates that record instead of creating a second customer. Archived customers are not matched."}],"referenceKey":[{"type":"string","description":"Names the customer by reference key instead. Used only when `customerId` is absent."}],"externalId":[{"type":"string","description":"Names the customer by external ID instead. Used only when `customerId` and `referenceKey` are absent."}],"investorType":[{"type":"string","description":"The `key` of an enabled verification profile , matched exactly. The presets are `RETAIL` , `PROFESSIONAL` and `ELIGIBLE_COUNTERPARTY` . Custom keys are lowercase. The profile sets the check level, the documents requested and the blocked countries. Defaults to the linked customer’s investor type, then `RETAIL` . The link keeps the Sumsub level, the applicant type (individual or company) and the on-chain investor type the profile had when the link was created, so a later change to the profile does not reach a link already sent. The blocked countries are read when the investor uses the link."}],"country":[{"type":"string","description":"The customer’s country as an ISO 3166-1 code: alpha-2 ( `DE` ), alpha-3 ( `DEU` ) or numeric. It is stored and returned as alpha-3. A country the profile blocks is refused here. The country the identity check reports is tested against the same list at review."}],"company":[{"type":"object","properties":{},"description":"For a profile whose `entityType` is `COMPANY` , which runs the check for a company applicant. `name` and `registrationNumber` , both strings, pre-fill that applicant together with `country` . Ignored for an `INDIVIDUAL` profile."}],"expiryDays":[{"type":"integer","description":"Days until the link expires, from 1 to 365. Paying the fee extends a link with less than 24 hours left to 24 hours after payment."}],"feeCents":[{"type":"integer","description":"A verification fee in the smallest currency unit, from 50 to 1000000. The customer pays it through a Stripe checkout on the hosted page before the check opens. Omit it for a free link."}],"currency":[{"type":"string","description":"`eur` or `usd` , in any case. Required with `feeCents` and ignored without it."}],"sendVia":[{"type":"array","items":[{"type":"string"}],"description":"`email` , `sms` , or both. Omit it to deliver the link yourself. A channel without a matching recipient is skipped, and other values are ignored."}],"note":[{"type":"string","description":"Shown as a note in the email and returned to the hosted page."}],"customMessage":[{"type":"string","description":"Replaces the default text of the email and the SMS, and is returned to the hosted page."}],"customRedirectUrl":[{"type":"string","description":"Stored with the link, but nothing reads it back. No endpoint returns it and the hosted page does not redirect to it."}]}}],"examples":{"example":{"value":{"recipientEmail":"\u003cstring>","recipientWallet":"\u003cstring>","recipientPhone":"\u003cstring>","customerId":"\u003cstring>","referenceKey":"\u003cstring>","externalId":"\u003cstring>","investorType":"\u003cstring>","country":"\u003cstring>","company":{},"expiryDays":123,"feeCents":123,"currency":"\u003cstring>","sendVia":["\u003cstring>"],"note":"\u003cstring>","customMessage":"\u003cstring>","customRedirectUrl":"\u003cstring>"}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"data":[{"type":"object","properties":{"id":[{"type":"string","description":"Link ID. Revoke ID Link and Resend ID Link take it as `linkId` ."}],"token":[{"type":"string","description":"The 64 hex character secret in the URL."}],"verificationUrl":[{"type":"string","description":"`https://verify.trusset.org/link/{token}` . Send only this to the customer."}],"status":[{"type":"string","description":"`PENDING` ."}],"recipientEmail":[{"type":"string","description":"As stored, or `null` ."}],"recipientWallet":[{"type":"string","description":"The bound wallet, checksummed, or `null` when the hosted page will ask for one."}],"recipientPhone":[{"type":"string","description":"As sent, or `null` ."}],"expiresAt":[{"type":"string","description":"ISO 8601."}],"sumsubApplicantId":[{"type":"string","description":"The identity-check applicant created in advance, or `null` ."}],"country":[{"type":"string","description":"ISO 3166-1 alpha-3, or `null` ."}],"customerId":[{"type":"string","description":"The linked customer, or `null` ."}],"feeCents":[{"type":"integer","description":"The fee, or `null` ."}],"currency":[{"type":"string","description":"Lowercase, or `null` ."}],"delivery":[{"type":"object","properties":{},"description":"One entry per channel attempted, each `{ sent, error }` with `error` present only on failure. Empty when no channel was attempted. For email, `sent: true` does not confirm delivery, because a refusal by the mail provider is not reported here."}],"warnings":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Present only when something degraded. `SUMSUB_APPLICANT_NOT_CREATED` means the applicant could not be created in advance. The check still opens from the link, but without the email, country and document pre-fill."}]}}]}}],"examples":{"example":{"value":{"data":{"id":"\u003cstring>","token":"\u003cstring>","verificationUrl":"\u003cstring>","status":"\u003cstring>","recipientEmail":"\u003cstring>","recipientWallet":"\u003cstring>","recipientPhone":"\u003cstring>","expiresAt":"\u003cstring>","sumsubApplicantId":"\u003cstring>","country":"\u003cstring>","customerId":"\u003cstring>","feeCents":123,"currency":"\u003cstring>","delivery":{},"warnings":[{}]}}}}}}},"deprecated":false}},"jsLinks":[],"subdomain":"testtttt-3cb7d5bb","siteName":"Trusset Protocol","title":"Trusset Protocol - Infrastructure for Asset Tokenization","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-17T21:52:50.545Z","originalFileLocation":"endpoints/customers/create-id-link.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create a hosted identity verification link for a customer\">\u003cmeta data-mint-head name=\"keywords\" content=\"asset tokenization, blockchain infrastructure, DeFi platform, tokenized assets, smart contracts, collateralized loans, asset financing, multi-chain bridge, real-world assets, RWA tokenization\">\u003cmeta data-mint-head name=\"application-name\" content=\"Trusset Protocol\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/testtttt-3cb7d5bb/9u1BXJ52XE_SSqI7/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/testtttt-3cb7d5bb/9u1BXJ52XE_SSqI7/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/testtttt-3cb7d5bb/9u1BXJ52XE_SSqI7/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/testtttt-3cb7d5bb/9u1BXJ52XE_SSqI7/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/testtttt-3cb7d5bb/9u1BXJ52XE_SSqI7/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/testtttt-3cb7d5bb/9u1BXJ52XE_SSqI7/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/testtttt-3cb7d5bb/9u1BXJ52XE_SSqI7/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/testtttt-3cb7d5bb/9u1BXJ52XE_SSqI7/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/testtttt-3cb7d5bb/9u1BXJ52XE_SSqI7/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Trusset Protocol - Infrastructure for Asset Tokenization\">\u003cmeta data-mint-head property=\"og:description\" content=\"End-to-end infrastructure for tokenizing any asset. Build DeFi applications, manage tokenized assets, and access collateralized lending on our blockchain platform.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Trusset Protocol Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.trusset.org/endpoints/customers/create-id-link\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.trusset.org/assets/logo.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Trusset Protocol - Infrastructure for Asset Tokenization\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"End-to-end infrastructure for tokenizing any asset. Build DeFi applications, manage tokenized assets, and access collateralized lending on our blockchain platform.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.trusset.org/assets/logo.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/testtttt-3cb7d5bb/9u1BXJ52XE_SSqI7/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Trusset Protocol\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#B1F163\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"author\" content=\"Trusset Protocol\">\u003cmeta data-mint-head name=\"googlebot\" content=\"index, follow\">\u003cmeta data-mint-head name=\"language\" content=\"en\">\u003cmeta data-mint-head name=\"category\" content=\"Blockchain Technology\">\u003cmeta data-mint-head name=\"distribution\" content=\"global\">\u003cmeta data-mint-head name=\"coverage\" content=\"Worldwide\">\u003cmeta data-mint-head name=\"target\" content=\"developers, institutions, asset managers\">\u003cmeta data-mint-head name=\"theme-color\" content=\"#B1F163\">\u003cmeta data-mint-head name=\"article:section\" content=\"Blockchain Technology\">\u003cmeta data-mint-head name=\"article:tag\" content=\"blockchain, tokenization, DeFi, smart contracts, asset management, collateral, lending, trading\">\u003cmeta data-mint-head name=\"application-name\" content=\"Trusset Protocol Docs\">\u003cmeta data-mint-head name=\"HandheldFriendly\" content=\"True\">\u003cmeta data-mint-head name=\"MobileOptimized\" content=\"320\">\u003cmeta data-mint-head name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\u003cmeta data-mint-head name=\"charset\" content=\"UTF-8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.trusset.org/endpoints/customers/create-id-link\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/endpoints/customers/create-id-link.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.trusset.org/#organization\",\"name\":\"Trusset Protocol\",\"url\":\"https://docs.trusset.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/testtttt-3cb7d5bb/38jNDl9NUnuI6yfl/logo/patchGreen.png?fit=max\u0026auto=format\u0026n=38jNDl9NUnuI6yfl\u0026q=85\u0026s=d62bfe76228e7c7e125f25f84f935c73\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.trusset.org#website\",\"name\":\"Trusset Protocol\",\"url\":\"https://docs.trusset.org\",\"publisher\":{\"@id\":\"https://docs.trusset.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.trusset.org/endpoints/customers/create-id-link#webpage\",\"url\":\"https://docs.trusset.org/endpoints/customers/create-id-link\",\"name\":\"Create ID Link\",\"description\":\"Create a hosted identity verification link for a customer\",\"dateModified\":\"2026-10-17T21:52:50.545Z\",\"isPartOf\":{\"@id\":\"https://docs.trusset.org#website\"},\"breadcrumb\":{\"@id\":\"https://docs.trusset.org/endpoints/customers/create-id-link#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.trusset.org/endpoints/customers/create-id-link#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Customers\",\"item\":\"https://docs.trusset.org/endpoints/customers/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create ID Link\",\"item\":\"https://docs.trusset.org/endpoints/customers/create-id-link\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.trusset.org/endpoints/customers/create-id-link#apireference\",\"headline\":\"Create ID Link\",\"name\":\"Create ID Link\",\"description\":\"Create a hosted identity verification link for a customer\",\"url\":\"https://docs.trusset.org/endpoints/customers/create-id-link\",\"mainEntityOfPage\":{\"@id\":\"https://docs.trusset.org/endpoints/customers/create-id-link#webpage\"},\"image\":\"https://docs.trusset.org/assets/logo.png\",\"dateModified\":\"2026-10-17T21:52:50.545Z\",\"publisher\":{\"@id\":\"https://docs.trusset.org/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.trusset.org#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Trusset Protocol\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Trusset Protocol","nav":{"global":{"anchors":[{"anchor":"Issuer App","icon":"globe","href":"https://issuers.trusset.org"},{"anchor":"Custodian App","icon":"building","href":"https://custodians.trusset.org"},{"anchor":"MiCA Register","icon":"list","href":"https://trusset.org/mica-register"},{"anchor":"Demo Call","icon":"phone","href":"https://cal.com/paul-ilami-trusset"}]},"tabs":[{"tab":"Protocol","pages":[{"title":"Protocol","href":"/protocol/intro"}]},{"tab":"Licenses","pages":[{"title":"Licenses","href":"/licenses/introduction"}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/sdk/introduction"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API Introduction","icon":"code","href":"/endpoints/introduction"},{"title":"Authentication","icon":"key","href":"/endpoints/authentication"},{"title":"Rate Limits","icon":"gauge","href":"/endpoints/rate-limits"}]},{"group":"MiCA Register","pages":[{"title":"MiCA Register","icon":"building","href":"/endpoints/mica-register/introduction"},{"group":"Queries","pages":[{"title":"List Issuers","api":"GET /api/mica/v1/issuers","href":"/endpoints/mica-register/list-issuers"},{"title":"Get Issuer","api":"GET /api/mica/v1/issuers/{id}","href":"/endpoints/mica-register/get-issuer"},{"title":"Search Issuers","api":"GET /api/mica/v1/search","href":"/endpoints/mica-register/search"},{"title":"Registry Statistics","api":"GET /api/mica/v1/statistics","href":"/endpoints/mica-register/statistics"},{"title":"License Types","api":"GET /api/mica/v1/license-types","href":"/endpoints/mica-register/license-types"},{"title":"Countries","api":"GET /api/mica/v1/countries","href":"/endpoints/mica-register/countries"},{"title":"Health Check","api":"GET /api/mica/v1/health","href":"/endpoints/mica-register/health"}]}]},{"group":"Customers","pages":[{"title":"Customers","icon":"users","href":"/endpoints/customers/introduction"},{"group":"Management","pages":[{"title":"List Customers","api":"GET /customers/api/manage","href":"/endpoints/customers/list"},{"title":"Create Customer","api":"POST /customers/api/manage","href":"/endpoints/customers/create"},{"title":"Get Customer","api":"GET /customers/api/manage/{identifier}","href":"/endpoints/customers/get"},{"title":"Get Lending Positions","api":"GET /customers/api/manage/{customerId}/lending-positions","href":"/endpoints/customers/get-lending-positions"},{"title":"Update Customer","api":"PUT /customers/api/manage/{customerId}","href":"/endpoints/customers/update"},{"title":"Archive Customer","api":"DELETE /customers/api/manage/{customerId}","href":"/endpoints/customers/archive"},{"title":"Batch Get Countries","api":"POST /customers/api/manage/countries/batch","href":"/endpoints/customers/batch-countries"}]},{"group":"Wallets","pages":[{"title":"Link Wallet","api":"POST /customers/api/manage/link-wallet","href":"/endpoints/customers/link-wallet"},{"title":"List Wallets","api":"GET /customers/api/manage/{customerId}/wallets","href":"/endpoints/customers/list-wallets"},{"title":"Add Wallet","api":"POST /customers/api/manage/{customerId}/wallets","href":"/endpoints/customers/add-wallet"},{"title":"Promote Wallet","api":"POST /customers/api/manage/{customerId}/wallets/{address}/promote","href":"/endpoints/customers/promote-wallet"},{"title":"Remove Wallet","api":"DELETE /customers/api/manage/{customerId}/wallets/{address}","href":"/endpoints/customers/remove-wallet"}]},{"group":"Identity Verification","pages":[{"title":"Verify Identity","api":"POST /customers/api/identity/verify","href":"/endpoints/customers/verify-identity"},{"title":"Batch Verify Identities","api":"POST /customers/api/identity/batch-verify","href":"/endpoints/customers/batch-verify"},{"title":"Revoke Identity","api":"POST /customers/api/identity/revoke","href":"/endpoints/customers/revoke-identity"},{"title":"Identity Status","api":"GET /customers/api/identity/status/{walletAddress}","href":"/endpoints/customers/identity-status"},{"title":"Check Transfer Compliance","api":"POST /customers/api/identity/can-transfer","href":"/endpoints/customers/can-transfer"},{"title":"List Verification Profiles","api":"GET /customers/api/verification-profiles","href":"/endpoints/customers/list-verification-profiles"},{"title":"Deploy ONCHAINID","api":"POST /customers/api/identity/onchainid","href":"/endpoints/customers/deploy-onchainid"},{"title":"Confirm ONCHAINID","api":"POST /customers/api/identity/onchainid/confirm","href":"/endpoints/customers/confirm-onchainid"}]},{"group":"Pending Approvals","pages":[{"title":"List Pending Verifications","api":"GET /customers/api/identity/pending","href":"/endpoints/customers/list-pending-verifications"},{"title":"Build Pending Registration","api":"POST /customers/api/identity/pending/calldata","href":"/endpoints/customers/build-pending-registration"},{"title":"Confirm Pending Registration","api":"POST /customers/api/identity/pending/confirm","href":"/endpoints/customers/confirm-pending-registration"},{"title":"Dismiss Pending Verification","api":"POST /customers/api/identity/pending/{id}/dismiss","href":"/endpoints/customers/dismiss-pending-verification"}]},{"group":"Eligibility Registers","pages":[{"title":"List Eligibility Profiles","api":"GET /customers/api/eligibility/profiles","href":"/endpoints/customers/list-eligibility-profiles"},{"title":"List Admissions","api":"GET /customers/api/eligibility/admissions","href":"/endpoints/customers/list-admissions"},{"title":"Get Wallet Eligibility","api":"GET /customers/api/eligibility/wallet/{walletAddress}","href":"/endpoints/customers/get-wallet-eligibility"},{"title":"Request Admission","api":"POST /customers/api/eligibility/admissions","href":"/endpoints/customers/request-admission"},{"title":"Build Admission","api":"POST /customers/api/eligibility/admissions/calldata","href":"/endpoints/customers/build-admission"},{"title":"Confirm Admission","api":"POST /customers/api/eligibility/admissions/confirm","href":"/endpoints/customers/confirm-admission"},{"title":"Request Removal","api":"POST /customers/api/eligibility/removals","href":"/endpoints/customers/request-removal"},{"title":"Build Removal","api":"POST /customers/api/eligibility/removals/calldata","href":"/endpoints/customers/build-removal"},{"title":"Confirm Removal","api":"POST /customers/api/eligibility/removals/confirm","href":"/endpoints/customers/confirm-removal"}]},{"group":"KYC Proofs","pages":[{"title":"Set Operator Key","api":"PUT /customers/api/identity/operator-key","href":"/endpoints/customers/set-operator-key"},{"title":"Get Operator Key","api":"GET /customers/api/identity/operator-key","href":"/endpoints/customers/get-operator-key"},{"title":"Inspect Manifest","api":"POST /customers/api/identity/manifest/inspect","href":"/endpoints/customers/inspect-manifest"},{"title":"Add Claims from Proof","api":"POST /customers/api/identity/claims/from-proof","href":"/endpoints/customers/add-claims-from-proof"},{"title":"Attest Proofs","api":"POST /customers/api/identity/proofs","href":"/endpoints/customers/attest-proofs"},{"title":"List Proofs","api":"GET /customers/api/identity/proofs/{walletAddress}","href":"/endpoints/customers/list-proofs"},{"title":"Revoke Proof","api":"POST /customers/api/identity/proofs/revoke","href":"/endpoints/customers/revoke-proof"},{"title":"List Claims","api":"GET /customers/api/identity/claims/{walletAddress}","href":"/endpoints/customers/list-claims"},{"title":"Add Claim","api":"POST /customers/api/identity/add-claim","href":"/endpoints/customers/add-claim"},{"title":"Revoke Claim","api":"POST /customers/api/identity/revoke-claim","description":"Revoke a claim on the registry","href":"/endpoints/customers/revoke-claim"}]},{"group":"ID Links","pages":[{"title":"Create ID Link","api":"POST /customers/api/id-links","href":"/endpoints/customers/create-id-link"},{"title":"List ID Links","api":"GET /customers/api/id-links","description":"List the verification links created on your instance","href":"/endpoints/customers/list-id-links"},{"title":"Get ID Link","api":"GET /customers/api/id-links/{linkId}","href":"/endpoints/customers/get-id-link"},{"title":"Issue Sumsub Token","api":"POST /customers/api/id-links/{linkId}/sumsub-token","href":"/endpoints/customers/issue-sumsub-token"},{"title":"Bind Link Wallet","api":"POST /customers/api/id-links/{linkId}/wallet","href":"/endpoints/customers/bind-link-wallet"},{"title":"Recheck Link Review","api":"POST /customers/api/id-links/{linkId}/recheck","href":"/endpoints/customers/recheck-link-review"},{"title":"Revoke ID Link","api":"PUT /customers/api/id-links/{linkId}/revoke","href":"/endpoints/customers/revoke-id-link"},{"title":"Resend ID Link","api":"POST /customers/api/id-links/{linkId}/resend","href":"/endpoints/customers/resend-id-link"}]},{"group":"Disclosure Requests","pages":[{"title":"List Disclosure Requests","api":"GET /customers/api/disclosure-requests","href":"/endpoints/customers/list-disclosure-requests"},{"title":"Create Disclosure Request","api":"POST /customers/api/disclosure-requests","href":"/endpoints/customers/create-disclosure-request"},{"title":"Get Disclosure Request","api":"GET /customers/api/disclosure-requests/{id}","href":"/endpoints/customers/get-disclosure-request"},{"title":"Cancel Disclosure Request","api":"POST /customers/api/disclosure-requests/{id}/cancel","href":"/endpoints/customers/cancel-disclosure-request"}]}]},{"group":"Tokenization","pages":[{"title":"Tokenization","icon":"cubes","href":"/endpoints/tokenization/introduction"},{"group":"Importing","pages":[{"title":"Detect Token","api":"POST /external-tokens/api/detect","href":"/endpoints/tokenization/detect-token"},{"title":"Import Token","api":"POST /external-tokens/api/import","href":"/endpoints/tokenization/import-token"},{"title":"List Imports","api":"GET /external-tokens/api/list","href":"/endpoints/tokenization/list-imports"},{"title":"Get Import","api":"GET /external-tokens/api/{tokenAddress}","href":"/endpoints/tokenization/get-import"},{"title":"Refresh On-Chain State","api":"GET /external-tokens/api/{tokenAddress}/onchain","href":"/endpoints/tokenization/refresh-onchain"},{"title":"Update Profile","api":"PUT /external-tokens/api/{tokenAddress}/profile","href":"/endpoints/tokenization/update-profile"},{"title":"Update Image","api":"PUT /external-tokens/api/{tokenAddress}/image","href":"/endpoints/tokenization/update-image"},{"title":"Upload File","api":"POST /external-tokens/api/upload","href":"/endpoints/tokenization/upload-file"},{"title":"Remove Import","api":"DELETE /external-tokens/api/{tokenAddress}","href":"/endpoints/tokenization/remove-import"}]},{"group":"Instrument Record","pages":[{"title":"Issuer-Signed Instrument Record","href":"/endpoints/tokenization/issuer-signed-record"},{"title":"Get Instrument Schema","api":"GET /instruments/api/schema","href":"/endpoints/tokenization/get-instrument-schema"},{"title":"Get Instrument","api":"GET /instruments/api/{tokenAddress}","href":"/endpoints/tokenization/get-instrument"},{"title":"Request Instrument Approval","api":"POST /instruments/api/{tokenAddress}/approval-request","href":"/endpoints/tokenization/request-instrument-approval"},{"title":"Save Instrument","api":"PUT /instruments/api/{tokenAddress}","href":"/endpoints/tokenization/save-instrument"},{"title":"Release Instrument","api":"DELETE /instruments/api/{tokenAddress}","href":"/endpoints/tokenization/release-instrument"}]}]},{"group":"Trading","pages":[{"group":"Stock Trading","pages":[{"title":"Stock Trading","icon":"chart-line","href":"/endpoints/stock-trading/introduction"},{"group":"Order Books","pages":[{"title":"Create Order Book","api":"POST /orderbooks/stocks/api/order-books","href":"/endpoints/stock-trading/create-order-book"},{"title":"Get Order Book","api":"GET /orderbooks/stocks/api/order-books/{orderBookId}","href":"/endpoints/stock-trading/get-order-book"},{"title":"List Order Books","api":"GET /orderbooks/stocks/api/order-books","href":"/endpoints/stock-trading/list-order-books"},{"title":"Update Order Book","api":"PATCH /orderbooks/stocks/api/order-books/{orderBookId}","href":"/endpoints/stock-trading/update-order-book"},{"title":"Get Trade Readiness","api":"GET /orderbooks/stocks/api/order-books/{orderBookId}/readiness","href":"/endpoints/stock-trading/get-trade-readiness"},{"title":"Get Shared Peers","api":"GET /orderbooks/stocks/api/order-books/{orderBookId}/shared-peers","href":"/endpoints/stock-trading/get-shared-peers"},{"title":"List Importable Order Books","api":"GET /orderbooks/stocks/api/order-books/importable","href":"/endpoints/stock-trading/list-importable"},{"title":"Import Order Book","api":"POST /orderbooks/stocks/api/imports","href":"/endpoints/stock-trading/import-order-book"},{"title":"Remove Import","api":"DELETE /orderbooks/stocks/api/imports/{importId}","href":"/endpoints/stock-trading/remove-import"}]},{"group":"Orders","pages":[{"title":"Submit Order","api":"POST /orderbooks/stocks/api/orders","href":"/endpoints/stock-trading/submit-order"},{"title":"Submit Priority Order","api":"POST /orderbooks/stocks/api/orders/priority","href":"/endpoints/stock-trading/submit-priority-order"},{"title":"Cancel Order","api":"DELETE /orderbooks/stocks/api/orders/{orderId}","href":"/endpoints/stock-trading/cancel-order"},{"title":"Get Order","api":"GET /orderbooks/stocks/api/orders/{orderId}","href":"/endpoints/stock-trading/get-order"},{"title":"Get User Orders","api":"GET /orderbooks/stocks/api/users/{userAddress}/orders","href":"/endpoints/stock-trading/get-user-orders"},{"title":"Get User Trades","api":"GET /orderbooks/stocks/api/users/{userAddress}/trades","href":"/endpoints/stock-trading/get-user-trades"}]},{"group":"Market Data","pages":[{"title":"Get Order Book Snapshot","api":"GET /orderbooks/stocks/api/order-books/{orderBookId}/snapshot","href":"/endpoints/stock-trading/get-order-book-snapshot"},{"title":"Get Order Book Trades","api":"GET /orderbooks/stocks/api/order-books/{orderBookId}/trades","href":"/endpoints/stock-trading/get-order-book-trades"},{"title":"Get Order Book Stats","api":"GET /orderbooks/stocks/api/order-books/{orderBookId}/stats","href":"/endpoints/stock-trading/get-order-book-stats"},{"title":"Get Daily Stats","api":"GET /orderbooks/stocks/api/order-books/by-token/{tokenAddress}/daily-stats","href":"/endpoints/stock-trading/get-daily-stats"},{"title":"Get Settlement","api":"GET /orderbooks/stocks/api/settlements/{settlementId}","href":"/endpoints/stock-trading/get-settlement"},{"title":"Get Custody Balance","api":"GET /orderbooks/stocks/api/custody/{custodyContract}/balance/{userAddress}/{tokenAddress}","href":"/endpoints/stock-trading/get-custody-balance"}]},{"group":"Price Reference","pages":[{"title":"Set Price Reference","api":"POST /orderbooks/stocks/api/order-books/{orderBookId}/price-reference","href":"/endpoints/stock-trading/set-price-reference"},{"title":"Get Price Reference","api":"GET /orderbooks/stocks/api/order-books/{orderBookId}/price-reference","href":"/endpoints/stock-trading/get-price-reference"},{"title":"Get Price Reference History","api":"GET /orderbooks/stocks/api/order-books/{orderBookId}/price-reference/history","href":"/endpoints/stock-trading/get-price-reference-history"}]},{"group":"Auctions","pages":[{"title":"Get Current Auction","api":"GET /orderbooks/stocks/api/order-books/{orderBookId}/auctions/current","href":"/endpoints/stock-trading/get-current-auction"},{"title":"Get Auction","api":"GET /orderbooks/stocks/api/order-books/{orderBookId}/auctions/{auctionId}","href":"/endpoints/stock-trading/get-auction"}]},{"group":"Request for Quote (RFQ)","pages":[{"title":"Create RFQ","api":"POST /orderbooks/stocks/api/rfq","href":"/endpoints/stock-trading/create-rfq"},{"title":"Get RFQ","api":"GET /orderbooks/stocks/api/rfq/{id}","href":"/endpoints/stock-trading/get-rfq"},{"title":"List RFQ Quotes","api":"GET /orderbooks/stocks/api/rfq/{id}/quotes","href":"/endpoints/stock-trading/list-rfq-quotes"},{"title":"Accept Quote","api":"POST /orderbooks/stocks/api/rfq/{id}/accept","href":"/endpoints/stock-trading/accept-rfq-quote"},{"title":"Cancel RFQ","api":"POST /orderbooks/stocks/api/rfq/{id}/cancel","href":"/endpoints/stock-trading/cancel-rfq"}]},{"group":"Off-Chain Settlement","pages":[{"title":"Create Off-Chain Order Book","api":"POST /orderbooks/stocks/api/offchain/order-books","href":"/endpoints/stock-trading/offchain-create-order-book"},{"title":"List Off-Chain Order Books","api":"GET /orderbooks/stocks/api/offchain/order-books","href":"/endpoints/stock-trading/offchain-list-order-books"},{"title":"Get Off-Chain Order Book","api":"GET /orderbooks/stocks/api/offchain/order-books/{orderBookId}","href":"/endpoints/stock-trading/offchain-get-order-book"},{"title":"Submit Off-Chain Order","api":"POST /orderbooks/stocks/api/offchain/orders","href":"/endpoints/stock-trading/offchain-submit-order"},{"title":"Cancel Off-Chain Order","api":"DELETE /orderbooks/stocks/api/offchain/orders/{orderId}","href":"/endpoints/stock-trading/offchain-cancel-order"},{"title":"Get Customer Orders","api":"GET /orderbooks/stocks/api/offchain/customers/{customerRef}/orders","href":"/endpoints/stock-trading/offchain-get-customer-orders"},{"title":"Get Customer Trades","api":"GET /orderbooks/stocks/api/offchain/customers/{customerRef}/trades","href":"/endpoints/stock-trading/offchain-get-customer-trades"},{"title":"Get Off-Chain Snapshot","api":"GET /orderbooks/stocks/api/offchain/order-books/{orderBookId}/snapshot","href":"/endpoints/stock-trading/offchain-get-snapshot"},{"title":"Get Off-Chain Trades","api":"GET /orderbooks/stocks/api/offchain/order-books/{orderBookId}/trades","href":"/endpoints/stock-trading/offchain-get-trades"},{"title":"Set Off-Chain Price Reference","api":"POST /orderbooks/stocks/api/offchain/order-books/{orderBookId}/price-reference","href":"/endpoints/stock-trading/offchain-set-price-reference"},{"title":"Get Off-Chain Price Reference","api":"GET /orderbooks/stocks/api/offchain/order-books/{orderBookId}/price-reference","href":"/endpoints/stock-trading/offchain-get-price-reference"}]}]},{"group":"External Securities Trading","pages":[{"title":"External Securities Trading","icon":"building-columns","href":"/endpoints/external-securities-trading/introduction"},{"group":"Venue","pages":[{"title":"Get Custody Contract","api":"GET /orderbooks/external-securities/api/custody-contract","href":"/endpoints/external-securities-trading/get-custody-contract"},{"title":"List Security Tokens","api":"GET /orderbooks/external-securities/api/security-tokens","href":"/endpoints/external-securities-trading/list-security-tokens"}]},{"group":"Order Books","pages":[{"title":"Create Order Book","api":"POST /orderbooks/external-securities/api/order-books","href":"/endpoints/external-securities-trading/create-order-book"},{"title":"Get Order Book","api":"GET /orderbooks/external-securities/api/order-books/{orderBookId}","href":"/endpoints/external-securities-trading/get-order-book"},{"title":"List Order Books","api":"GET /orderbooks/external-securities/api/order-books","href":"/endpoints/external-securities-trading/list-order-books"},{"title":"Update Order Book","api":"PATCH /orderbooks/external-securities/api/order-books/{orderBookId}","href":"/endpoints/external-securities-trading/update-order-book"},{"title":"Get Trade Readiness","api":"GET /orderbooks/external-securities/api/order-books/{orderBookId}/readiness","href":"/endpoints/external-securities-trading/get-trade-readiness"},{"title":"Get Security Status","api":"GET /orderbooks/external-securities/api/order-books/{orderBookId}/security","href":"/endpoints/external-securities-trading/get-security-status"},{"title":"Get Shared Peers","api":"GET /orderbooks/external-securities/api/order-books/{orderBookId}/shared-peers","href":"/endpoints/external-securities-trading/get-shared-peers"},{"title":"List Importable Order Books","api":"GET /orderbooks/external-securities/api/order-books/importable","href":"/endpoints/external-securities-trading/list-importable"},{"title":"Import Order Book","api":"POST /orderbooks/external-securities/api/imports","href":"/endpoints/external-securities-trading/import-order-book"},{"title":"Remove Import","api":"DELETE /orderbooks/external-securities/api/imports/{importId}","href":"/endpoints/external-securities-trading/remove-import"}]},{"group":"Orders","pages":[{"title":"Prepare Order","api":"POST /orderbooks/external-securities/api/orders/prepare","href":"/endpoints/external-securities-trading/prepare-order"},{"title":"Submit Order","api":"POST /orderbooks/external-securities/api/orders","href":"/endpoints/external-securities-trading/submit-order"},{"title":"Cancel Order","api":"DELETE /orderbooks/external-securities/api/orders/{orderId}","href":"/endpoints/external-securities-trading/cancel-order"},{"title":"Cancel Orders On Chain","api":"POST /orderbooks/external-securities/api/orders/cancel-on-chain","href":"/endpoints/external-securities-trading/cancel-on-chain"},{"title":"Approve Settlement Asset","api":"POST /orderbooks/external-securities/api/order-books/{orderBookId}/quote-approval","href":"/endpoints/external-securities-trading/approve-quote-asset"},{"title":"Get Order","api":"GET /orderbooks/external-securities/api/orders/{orderId}","href":"/endpoints/external-securities-trading/get-order"},{"title":"Get User Orders","api":"GET /orderbooks/external-securities/api/users/{userAddress}/orders","href":"/endpoints/external-securities-trading/get-user-orders"},{"title":"Get User Trades","api":"GET /orderbooks/external-securities/api/users/{userAddress}/trades","href":"/endpoints/external-securities-trading/get-user-trades"}]},{"group":"Settlement","pages":[{"title":"List Pending Settlements","api":"GET /orderbooks/external-securities/api/settlements/pending","href":"/endpoints/external-securities-trading/list-pending-settlements"},{"title":"Get Settlement","api":"GET /orderbooks/external-securities/api/settlements/{settlementId}","href":"/endpoints/external-securities-trading/get-settlement"},{"title":"Get Settlement Calldata","api":"GET /orderbooks/external-securities/api/settlements/{settlementId}/calldata","href":"/endpoints/external-securities-trading/get-settlement-calldata"},{"title":"Confirm Settlement","api":"POST /orderbooks/external-securities/api/settlements/{settlementId}/confirm","href":"/endpoints/external-securities-trading/confirm-settlement"}]},{"group":"Market Data","pages":[{"title":"Get Order Book Snapshot","api":"GET /orderbooks/external-securities/api/order-books/{orderBookId}/snapshot","href":"/endpoints/external-securities-trading/get-order-book-snapshot"},{"title":"Get Order Book Trades","api":"GET /orderbooks/external-securities/api/order-books/{orderBookId}/trades","href":"/endpoints/external-securities-trading/get-order-book-trades"},{"title":"Get Order Book Stats","api":"GET /orderbooks/external-securities/api/order-books/{orderBookId}/stats","href":"/endpoints/external-securities-trading/get-order-book-stats"},{"title":"Get Daily Stats","api":"GET /orderbooks/external-securities/api/order-books/by-token/{tokenAddress}/daily-stats","href":"/endpoints/external-securities-trading/get-daily-stats"},{"title":"Get Custody Balance","api":"GET /orderbooks/external-securities/api/custody/{custodyContract}/balance/{userAddress}/{tokenAddress}","href":"/endpoints/external-securities-trading/get-custody-balance"}]},{"group":"Price Reference","pages":[{"title":"Set Price Reference","api":"POST /orderbooks/external-securities/api/order-books/{orderBookId}/price-reference","href":"/endpoints/external-securities-trading/set-price-reference"},{"title":"Get Price Reference","api":"GET /orderbooks/external-securities/api/order-books/{orderBookId}/price-reference","href":"/endpoints/external-securities-trading/get-price-reference"},{"title":"Get Price Reference History","api":"GET /orderbooks/external-securities/api/order-books/{orderBookId}/price-reference/history","href":"/endpoints/external-securities-trading/get-price-reference-history"}]}]},{"group":"Commodity Trading","pages":[{"title":"Commodity Trading","icon":"coins","href":"/endpoints/commodity-trading/introduction"},{"group":"Order Books","pages":[{"title":"Create Order Book","api":"POST /orderbooks/commodities/api/order-books","href":"/endpoints/commodity-trading/create-order-book"},{"title":"Get Order Book","api":"GET /orderbooks/commodities/api/order-books/{orderBookId}","href":"/endpoints/commodity-trading/get-order-book"},{"title":"List Order Books","api":"GET /orderbooks/commodities/api/order-books","href":"/endpoints/commodity-trading/list-order-books"},{"title":"Update Order Book","api":"PATCH /orderbooks/commodities/api/order-books/{orderBookId}","href":"/endpoints/commodity-trading/update-order-book"},{"title":"Get Trade Readiness","api":"GET /orderbooks/commodities/api/order-books/{orderBookId}/readiness","href":"/endpoints/commodity-trading/get-trade-readiness"},{"title":"List Importable Order Books","api":"GET /orderbooks/commodities/api/order-books/importable","href":"/endpoints/commodity-trading/list-importable"},{"title":"Import Order Book","api":"POST /orderbooks/commodities/api/imports","href":"/endpoints/commodity-trading/import-order-book"},{"title":"Remove Import","api":"DELETE /orderbooks/commodities/api/imports/{importId}","href":"/endpoints/commodity-trading/remove-import"}]},{"group":"Orders","pages":[{"title":"Submit Order","api":"POST /orderbooks/commodities/api/orders","href":"/endpoints/commodity-trading/submit-order"},{"title":"Submit Priority Order","api":"POST /orderbooks/commodities/api/orders/priority","href":"/endpoints/commodity-trading/submit-priority-order"},{"title":"Cancel Order","api":"DELETE /orderbooks/commodities/api/orders/{orderId}","href":"/endpoints/commodity-trading/cancel-order"},{"title":"Get Order","api":"GET /orderbooks/commodities/api/orders/{orderId}","href":"/endpoints/commodity-trading/get-order"},{"title":"Get User Orders","api":"GET /orderbooks/commodities/api/users/{userAddress}/orders","href":"/endpoints/commodity-trading/get-user-orders"},{"title":"Get User Trades","api":"GET /orderbooks/commodities/api/users/{userAddress}/trades","href":"/endpoints/commodity-trading/get-user-trades"}]},{"group":"Market Data","pages":[{"title":"Get Order Book Snapshot","api":"GET /orderbooks/commodities/api/order-books/{orderBookId}/snapshot","href":"/endpoints/commodity-trading/get-order-book-snapshot"},{"title":"Get Order Book Trades","api":"GET /orderbooks/commodities/api/order-books/{orderBookId}/trades","href":"/endpoints/commodity-trading/get-order-book-trades"},{"title":"Get Order Book Stats","api":"GET /orderbooks/commodities/api/order-books/{orderBookId}/stats","href":"/endpoints/commodity-trading/get-order-book-stats"},{"title":"Get Daily Stats","api":"GET /orderbooks/commodities/api/order-books/by-token/{tokenAddress}/daily-stats","href":"/endpoints/commodity-trading/get-daily-stats"},{"title":"Get Settlement","api":"GET /orderbooks/commodities/api/settlements/{settlementId}","href":"/endpoints/commodity-trading/get-settlement"},{"title":"Get Custody Balance","api":"GET /orderbooks/commodities/api/custody/{custodyContract}/balance/{userAddress}/{tokenAddress}","href":"/endpoints/commodity-trading/get-custody-balance"}]},{"group":"Price Reference","pages":[{"title":"Set Price Reference","api":"POST /orderbooks/commodities/api/order-books/{orderBookId}/price-reference","href":"/endpoints/commodity-trading/set-price-reference"},{"title":"Get Price Reference","api":"GET /orderbooks/commodities/api/order-books/{orderBookId}/price-reference","href":"/endpoints/commodity-trading/get-price-reference"},{"title":"Get Price Reference History","api":"GET /orderbooks/commodities/api/order-books/{orderBookId}/price-reference/history","href":"/endpoints/commodity-trading/get-price-reference-history"}]}]}]},{"group":"Lending","pages":[{"title":"Lending","icon":"building-columns","href":"/endpoints/lending/introduction"},{"group":"Markets","pages":[{"title":"List Markets","api":"GET /lending-external-securities-v2/api/markets","href":"/endpoints/lending/list-markets"},{"title":"Get Market","api":"GET /lending-external-securities-v2/api/markets/{marketId}","href":"/endpoints/lending/get-market"},{"title":"Get Market Metrics","api":"GET /lending-external-securities-v2/api/markets/{marketId}/metrics","href":"/endpoints/lending/get-metrics"},{"title":"Get Market Config","api":"GET /lending-external-securities-v2/api/markets/{marketId}/config","href":"/endpoints/lending/get-config"},{"title":"Get Supply Caps","api":"GET /lending-external-securities-v2/api/markets/{marketId}/supply-caps","href":"/endpoints/lending/get-supply-caps"},{"title":"Get Max Borrow","api":"GET /lending-external-securities-v2/api/markets/{marketId}/max-borrow","href":"/endpoints/lending/get-max-borrow"},{"title":"List Transactions","api":"GET /lending-external-securities-v2/api/markets/{marketId}/transactions","href":"/endpoints/lending/list-transactions"},{"title":"Get Market History","api":"GET /lending-external-securities-v2/api/markets/{marketId}/history","href":"/endpoints/lending/get-history"},{"title":"Get Index Status","api":"GET /lending-external-securities-v2/api/markets/{marketId}/index-status","href":"/endpoints/lending/get-index-status"},{"title":"Get Lifecycle Statement","api":"GET /lending-external-securities-v2/api/markets/{marketId}/lifecycle-statement","href":"/endpoints/lending/get-lifecycle-statement"},{"title":"List Borrow Assets","api":"GET /lending-external-securities-v2/api/markets/borrow-assets","href":"/endpoints/lending/list-borrow-assets"}]},{"group":"Deployment","pages":[{"title":"Get Deployment Options","api":"GET /lending-external-securities-v2/api/markets/deployment-options","href":"/endpoints/lending/get-deployment-options"},{"title":"Preview Asset Data","api":"GET /lending-external-securities-v2/api/markets/asset-data/preview","href":"/endpoints/lending/preview-asset-data"},{"title":"Deploy Market","api":"POST /lending-external-securities-v2/api/markets/deploy","href":"/endpoints/lending/deploy-market"},{"title":"Get Nominations","api":"GET /lending-external-securities-v2/api/markets/{marketId}/nominations","href":"/endpoints/lending/get-nominations"},{"title":"Nominate Candidate","api":"POST /lending-external-securities-v2/api/markets/{marketId}/nominations","href":"/endpoints/lending/nominate-candidate"},{"title":"Withdraw Nomination","api":"POST /lending-external-securities-v2/api/markets/{marketId}/nominations/withdraw","href":"/endpoints/lending/withdraw-nomination"}]},{"group":"Asset Data","pages":[{"title":"Get Asset Data","api":"GET /lending-external-securities-v2/api/markets/{market}/asset-data","href":"/endpoints/lending/get-asset-data"},{"title":"Get Asset Data Bundle","api":"GET /lending-external-securities-v2/api/markets/{market}/asset-data/bundle","href":"/endpoints/lending/get-asset-data-bundle"},{"title":"Attest Asset Data","api":"POST /lending-external-securities-v2/api/markets/{market}/asset-data/attest","href":"/endpoints/lending/attest-asset-data"},{"title":"Confirm Asset Data Attestation","api":"POST /lending-external-securities-v2/api/markets/{market}/asset-data/attest/confirm","href":"/endpoints/lending/confirm-asset-data-attestation"},{"title":"Acknowledge Asset Data","api":"POST /lending-external-securities-v2/api/markets/{market}/asset-data/acknowledge","href":"/endpoints/lending/acknowledge-asset-data"},{"title":"Confirm Asset Data Acknowledgement","api":"POST /lending-external-securities-v2/api/markets/{market}/asset-data/acknowledge/confirm","href":"/endpoints/lending/confirm-asset-data-acknowledgement"}]},{"group":"Setup","pages":[{"title":"Get Configuration Status","api":"GET /lending-external-securities-v2/api/markets/{marketId}/configuration-status","href":"/endpoints/lending/get-configuration-status"},{"title":"Get Setup Steps","api":"GET /lending-external-securities-v2/api/markets/{marketId}/setup-steps","href":"/endpoints/lending/get-setup-steps"},{"title":"Configure Market","api":"POST /lending-external-securities-v2/api/markets/{marketId}/configure","href":"/endpoints/lending/configure-market"},{"title":"Confirm Configuration","api":"POST /lending-external-securities-v2/api/markets/{marketId}/confirm-configuration","href":"/endpoints/lending/confirm-configuration"},{"title":"Get Upgrade Status","api":"GET /lending-external-securities-v2/api/markets/{marketId}/upgrade","href":"/endpoints/lending/get-upgrade-status"},{"title":"Upgrade Market","api":"POST /lending-external-securities-v2/api/markets/{marketId}/upgrade","href":"/endpoints/lending/upgrade-market"}]},{"group":"Risk and Access","pages":[{"title":"Update Market Config","api":"POST /lending-external-securities-v2/api/markets/{marketId}/config","href":"/endpoints/lending/update-config"},{"title":"Get Identity Gates","api":"GET /lending-external-securities-v2/api/markets/{marketId}/identity-gates","href":"/endpoints/lending/get-identity-gates"},{"title":"Set Identity Gates","api":"POST /lending-external-securities-v2/api/markets/{marketId}/identity-gates","href":"/endpoints/lending/set-identity-gates"}]},{"group":"Whitelists","pages":[{"title":"List Whitelists","api":"GET /lending-external-securities-v2/api/access-lists","href":"/endpoints/lending/list-access-lists"},{"title":"Get Whitelist","api":"GET /lending-external-securities-v2/api/access-lists/{listId}","href":"/endpoints/lending/get-access-list"},{"title":"Create Whitelist","api":"POST /lending-external-securities-v2/api/access-lists","href":"/endpoints/lending/create-access-list"},{"title":"Confirm Whitelist Creation","api":"POST /lending-external-securities-v2/api/access-lists/confirm-create","href":"/endpoints/lending/confirm-access-list-creation"},{"title":"Update Whitelist","api":"PATCH /lending-external-securities-v2/api/access-lists/{listId}","href":"/endpoints/lending/update-access-list"},{"title":"Set Whitelist Members","api":"POST /lending-external-securities-v2/api/access-lists/{listId}/members","href":"/endpoints/lending/set-access-list-members"},{"title":"Confirm Whitelist Members","api":"POST /lending-external-securities-v2/api/access-lists/{listId}/members/confirm","href":"/endpoints/lending/confirm-access-list-members"},{"title":"Set Whitelist Manager","api":"POST /lending-external-securities-v2/api/access-lists/{listId}/managers","href":"/endpoints/lending/set-access-list-manager"},{"title":"Confirm Whitelist Manager","api":"POST /lending-external-securities-v2/api/access-lists/{listId}/managers/confirm","href":"/endpoints/lending/confirm-access-list-manager"},{"title":"Transfer Whitelist Ownership","api":"POST /lending-external-securities-v2/api/access-lists/{listId}/owner","href":"/endpoints/lending/transfer-access-list-ownership"},{"title":"Confirm Whitelist Ownership","api":"POST /lending-external-securities-v2/api/access-lists/{listId}/owner/confirm","href":"/endpoints/lending/confirm-access-list-ownership"},{"title":"Rescan Whitelist","api":"POST /lending-external-securities-v2/api/access-lists/{listId}/rescan","href":"/endpoints/lending/rescan-access-list"}]},{"group":"Rates and Loan Terms","pages":[{"title":"Get Rate Mode","api":"GET /lending-external-securities-v2/api/markets/{marketId}/rate-mode","href":"/endpoints/lending/get-rate-mode"},{"title":"Set Rate Mode","api":"POST /lending-external-securities-v2/api/markets/{marketId}/rate-mode","href":"/endpoints/lending/set-rate-mode"},{"title":"Set Max Fixed Rate","api":"POST /lending-external-securities-v2/api/markets/{marketId}/max-fixed-rate","href":"/endpoints/lending/set-max-fixed-rate"},{"title":"Get Term Config","api":"GET /lending-external-securities-v2/api/markets/{marketId}/term-config","href":"/endpoints/lending/get-term-config"},{"title":"Set Term Config","api":"POST /lending-external-securities-v2/api/markets/{marketId}/term-config","href":"/endpoints/lending/set-term-config"},{"title":"Set Allow Extension","api":"POST /lending-external-securities-v2/api/markets/{marketId}/allow-extension","href":"/endpoints/lending/set-allow-extension"},{"title":"List Extensions","api":"GET /lending-external-securities-v2/api/markets/{marketId}/extensions","href":"/endpoints/lending/list-extensions"},{"title":"Propose Extension","api":"POST /lending-external-securities-v2/api/markets/{marketId}/extensions","href":"/endpoints/lending/propose-extension"},{"title":"Extension Action","api":"POST /lending-external-securities-v2/api/markets/{marketId}/extensions/{proposalId}/{action}","href":"/endpoints/lending/extension-action"},{"title":"Confirm Extension Transaction","api":"POST /lending-external-securities-v2/api/markets/{marketId}/extensions/confirm-tx","href":"/endpoints/lending/confirm-extension-transaction"},{"title":"Get Exit Liquidity","api":"GET /lending-external-securities-v2/api/markets/{marketId}/exit-liquidity","href":"/endpoints/lending/get-exit-liquidity"},{"title":"Set Reserve Ratio","api":"POST /lending-external-securities-v2/api/markets/{marketId}/reserve-ratio","href":"/endpoints/lending/set-reserve-ratio"}]},{"group":"Terms of Use","pages":[{"title":"Get Terms","api":"GET /lending-external-securities-v2/api/markets/{marketId}/terms","href":"/endpoints/lending/get-terms"},{"title":"List Terms Versions","api":"GET /lending-external-securities-v2/api/markets/{marketId}/terms/versions","href":"/endpoints/lending/list-terms-versions"},{"title":"Get Terms Version","api":"GET /lending-external-securities-v2/api/markets/{marketId}/terms/versions/{version}","href":"/endpoints/lending/get-terms-version"},{"title":"Save Terms","api":"PUT /lending-external-securities-v2/api/markets/{marketId}/terms","href":"/endpoints/lending/save-terms"},{"title":"Unpublish Terms","api":"DELETE /lending-external-securities-v2/api/markets/{marketId}/terms","href":"/endpoints/lending/unpublish-terms"},{"title":"Export Terms","api":"GET /lending-external-securities-v2/api/markets/{marketId}/terms/export","href":"/endpoints/lending/export-terms"}]},{"group":"Oracle","pages":[{"title":"Get Oracle Status","api":"GET /lending-external-securities-v2/api/markets/{marketId}/oracle-status","href":"/endpoints/lending/get-oracle-status"},{"title":"Verify Signer","api":"GET /lending-external-securities-v2/api/markets/{marketId}/verify-signer","href":"/endpoints/lending/verify-signer"},{"title":"Sync Oracle Price","api":"POST /lending-external-securities-v2/api/markets/{marketId}/sync-oracle","href":"/endpoints/lending/sync-oracle"},{"title":"Sign Price","api":"POST /lending-external-securities-v2/api/markets/{marketId}/sign-price","href":"/endpoints/lending/sign-price"},{"title":"Verify Signed Price","api":"POST /lending-external-securities-v2/api/markets/{marketId}/verify-price","href":"/endpoints/lending/verify-price"},{"title":"Record Price Attestation","api":"POST /lending-external-securities-v2/api/markets/{marketId}/price-attestation","href":"/endpoints/lending/record-price-attestation"},{"title":"Get Oracle History","api":"GET /lending-external-securities-v2/api/markets/{marketId}/oracle-history","href":"/endpoints/lending/get-oracle-history"}]},{"group":"Liquidity","pages":[{"title":"List Liquidity Providers","api":"GET /lending-external-securities-v2/api/positions/{marketId}/providers","href":"/endpoints/lending/list-providers"},{"title":"Get Provider Balance","api":"GET /lending-external-securities-v2/api/positions/{marketId}/provider-balance/{provider}","href":"/endpoints/lending/get-provider-balance"},{"title":"Add Liquidity","api":"POST /lending-external-securities-v2/api/positions/{marketId}/add-liquidity","href":"/endpoints/lending/add-liquidity"},{"title":"Remove Liquidity","api":"POST /lending-external-securities-v2/api/positions/{marketId}/remove-liquidity","href":"/endpoints/lending/remove-liquidity"}]},{"group":"Vault Liquidity","pages":[{"title":"Get Vault Liquidity","api":"GET /lending-external-securities-v2/api/markets/{marketId}/vault-liquidity","href":"/endpoints/lending/get-vault-liquidity"},{"title":"Set Vault Liquidity","api":"POST /lending-external-securities-v2/api/markets/{marketId}/vault-liquidity","href":"/endpoints/lending/set-vault-liquidity"},{"title":"Register Vault","api":"POST /lending-external-securities-v2/api/markets/{marketId}/vault-liquidity/{action}","href":"/endpoints/lending/register-vault"},{"title":"List Connected Vaults","api":"GET /lending-external-securities-v2/api/markets/{marketId}/connected-vaults","href":"/endpoints/lending/list-connected-vaults"},{"title":"Deposit to Vault","api":"POST /lending-external-securities-v2/api/markets/{marketId}/vaults/{vaultAddress}/deposit","href":"/endpoints/lending/deposit-to-vault"},{"title":"Redeem from Vault","api":"POST /lending-external-securities-v2/api/markets/{marketId}/vaults/{vaultAddress}/redeem","href":"/endpoints/lending/redeem-from-vault"}]},{"group":"Borrowing","pages":[{"title":"Open Loan","api":"POST /lending-external-securities-v2/api/positions/{marketId}/open-loan","href":"/endpoints/lending/open-loan"},{"title":"Borrow More","api":"POST /lending-external-securities-v2/api/positions/{marketId}/borrow-more","href":"/endpoints/lending/borrow-more"},{"title":"Get Permit Quote","api":"POST /lending-external-securities-v2/api/positions/{marketId}/permit-quote","href":"/endpoints/lending/get-permit-quote"},{"title":"Repay Loan","api":"POST /lending-external-securities-v2/api/positions/{marketId}/repay","href":"/endpoints/lending/repay"},{"title":"Close Loan","api":"POST /lending-external-securities-v2/api/positions/{marketId}/close-loan","href":"/endpoints/lending/close-loan"},{"title":"Add Collateral","api":"POST /lending-external-securities-v2/api/positions/{marketId}/add-collateral","href":"/endpoints/lending/add-collateral"},{"title":"Withdraw Collateral","api":"POST /lending-external-securities-v2/api/positions/{marketId}/withdraw-collateral","href":"/endpoints/lending/withdraw-collateral"},{"title":"Get Escrowed Collateral","api":"GET /lending-external-securities-v2/api/positions/{marketId}/escrowed-collateral/{holderAddress}","href":"/endpoints/lending/get-escrowed-collateral"},{"title":"Claim Escrowed Collateral","api":"POST /lending-external-securities-v2/api/positions/{marketId}/claim-escrowed-collateral","href":"/endpoints/lending/claim-escrowed-collateral"},{"title":"Get Escrowed Surplus","api":"GET /lending-external-securities-v2/api/positions/{marketId}/escrowed-surplus/{holderAddress}","href":"/endpoints/lending/get-escrowed-surplus"},{"title":"Claim Surplus","api":"POST /lending-external-securities-v2/api/positions/{marketId}/claim-surplus","href":"/endpoints/lending/claim-surplus"}]},{"group":"Positions \u0026 Queries","pages":[{"title":"List Positions","api":"GET /lending-external-securities-v2/api/positions/{marketId}/positions","href":"/endpoints/lending/list-positions"},{"title":"Get Position","api":"GET /lending-external-securities-v2/api/positions/{marketId}/positions/{positionId}","href":"/endpoints/lending/get-position"},{"title":"Get Position Statement","api":"GET /lending-external-securities-v2/api/positions/{marketId}/positions/{positionId}/statement","href":"/endpoints/lending/get-position-statement"},{"title":"Get Loan","api":"GET /lending-external-securities-v2/api/positions/{marketId}/loan/{loanId}","href":"/endpoints/lending/get-loan"},{"title":"Get User Loans","api":"GET /lending-external-securities-v2/api/positions/{marketId}/user-loans/{userAddress}","href":"/endpoints/lending/get-user-loans"},{"title":"Get User Collateral","api":"GET /lending-external-securities-v2/api/positions/{marketId}/user-collateral/{userAddress}","href":"/endpoints/lending/get-user-collateral"}]},{"group":"Fees","pages":[{"title":"Get Fee Split","api":"GET /lending-external-securities-v2/api/markets/{marketId}/fee-split","href":"/endpoints/lending/get-fee-split"},{"title":"Get Cashflows","api":"GET /lending-external-securities-v2/api/markets/{marketId}/cashflows","href":"/endpoints/lending/get-cashflows"},{"title":"Sweep Operator Fees","api":"POST /lending-external-securities-v2/api/markets/{marketId}/operator-fees/sweep","href":"/endpoints/lending/sweep-operator-fees"},{"title":"Sweep Distributor Fees","api":"POST /lending-external-securities-v2/api/markets/{marketId}/distributor-fees/sweep","href":"/endpoints/lending/sweep-distributor-fees"},{"title":"Sweep Protocol Fees","api":"POST /lending-external-securities-v2/api/markets/{marketId}/protocol-fees/sweep","href":"/endpoints/lending/sweep-protocol-fees"},{"title":"Sweep Infrastructure Fees","api":"POST /lending-external-securities-v2/api/markets/{marketId}/infrastructure-fees/sweep","href":"/endpoints/lending/sweep-infrastructure-fees"},{"title":"Rotate Operator Wallet","api":"POST /lending-external-securities-v2/api/markets/{marketId}/operator-wallet","href":"/endpoints/lending/rotate-operator-wallet"}]},{"group":"Insurance Fund","pages":[{"title":"Get Insurance Status","api":"GET /lending-external-securities-v2/api/markets/{marketId}/insurance/status","href":"/endpoints/lending/get-insurance-status"},{"title":"Top Up Insurance Fund","api":"POST /lending-external-securities-v2/api/markets/{marketId}/insurance/top-up","href":"/endpoints/lending/top-up-insurance"},{"title":"Record Insurance Top-Up","api":"POST /lending-external-securities-v2/api/markets/{marketId}/insurance/record-topup","href":"/endpoints/lending/record-insurance-top-up"},{"title":"Withdraw from Insurance Fund","api":"POST /lending-external-securities-v2/api/markets/{marketId}/insurance/withdraw-calldata","href":"/endpoints/lending/withdraw-insurance"}]},{"group":"Liquidations","pages":[{"title":"Get Liquidation Config","api":"GET /lending-external-securities-v2/api/liquidations/{marketId}/config","href":"/endpoints/lending/get-liquidation-config"},{"title":"Get Liquidatable Loans","api":"GET /lending-external-securities-v2/api/liquidations/{marketId}/liquidatable-loans","href":"/endpoints/lending/get-liquidatable-loans"},{"title":"Liquidate Loan","api":"POST /lending-external-securities-v2/api/liquidations/{marketId}/liquidate/{loanId}","href":"/endpoints/lending/liquidate"},{"title":"Get Pending Liquidations","api":"GET /lending-external-securities-v2/api/liquidations/{marketId}/pending-liquidations","href":"/endpoints/lending/get-pending-liquidations"},{"title":"List Settled Liquidations","api":"GET /lending-external-securities-v2/api/liquidations/{marketId}/settled-liquidations","href":"/endpoints/lending/list-settled-liquidations"},{"title":"Get Liquidation Stats","api":"GET /lending-external-securities-v2/api/liquidations/{marketId}/liquidation-stats","href":"/endpoints/lending/get-liquidation-stats"},{"title":"Get Router Stats","api":"GET /lending-external-securities-v2/api/liquidations/router-stats","href":"/endpoints/lending/get-router-stats"}]},{"group":"Atomic Sale","pages":[{"title":"Get Atomic Sale","api":"GET /lending-external-securities-v2/api/liquidations/{marketId}/atomic-sale","href":"/endpoints/lending/get-atomic-sale"},{"title":"Set Atomic Mode","api":"POST /lending-external-securities-v2/api/liquidations/{marketId}/atomic-mode","href":"/endpoints/lending/set-atomic-mode"},{"title":"Set Sale Bid","api":"POST /lending-external-securities-v2/api/liquidations/{marketId}/sale-bid","href":"/endpoints/lending/set-sale-bid"},{"title":"Sell Pending Liquidation","api":"POST /lending-external-securities-v2/api/liquidations/liquidation/{liquidationId}/sell","href":"/endpoints/lending/sell-pending-liquidation"}]},{"group":"Liquidation Settlement","pages":[{"title":"Withdraw Collateral for Sale","api":"POST /lending-external-securities-v2/api/liquidations/withdraw-collateral/{liquidationId}","href":"/endpoints/lending/withdraw-collateral-for-sale"},{"title":"Report Partial Sale","api":"POST /lending-external-securities-v2/api/liquidations/report-partial-sale/{liquidationId}","href":"/endpoints/lending/report-partial-sale"},{"title":"Settle Liquidation","api":"POST /lending-external-securities-v2/api/liquidations/settle/{liquidationId}","href":"/endpoints/lending/settle-liquidation"},{"title":"Close Liquidation","api":"POST /lending-external-securities-v2/api/liquidations/close/{liquidationId}","href":"/endpoints/lending/close-liquidation"},{"title":"Handle Liquidation Timeout","api":"POST /lending-external-securities-v2/api/liquidations/handle-timeout/{liquidationId}","href":"/endpoints/lending/handle-timeout"},{"title":"Reopen Liquidation","api":"POST /lending-external-securities-v2/api/liquidations/reopen/{liquidationId}","href":"/endpoints/lending/reopen-liquidation"}]},{"group":"Dutch Auctions","pages":[{"title":"Get Auction Module","api":"GET /lending-external-securities-v2/api/markets/{marketId}/auction-module","href":"/endpoints/lending/get-auction-module"},{"title":"Wire Auction Module","api":"POST /lending-external-securities-v2/api/markets/{marketId}/auction-module","href":"/endpoints/lending/wire-auction-module"},{"title":"List Active Auctions","api":"GET /lending-external-securities-v2/api/liquidations/{marketId}/auctions","href":"/endpoints/lending/list-auctions"},{"title":"Get Auction","api":"GET /lending-external-securities-v2/api/liquidations/{marketId}/auctions/{auctionId}","href":"/endpoints/lending/get-auction"},{"title":"Get Loan Auction","api":"GET /lending-external-securities-v2/api/liquidations/{marketId}/loan-auction/{loanId}","href":"/endpoints/lending/get-loan-auction"},{"title":"Bid on Auction","api":"POST /lending-external-securities-v2/api/liquidations/{marketId}/bid-on-auction","href":"/endpoints/lending/bid-on-auction"},{"title":"Settle Expired Auction","api":"POST /lending-external-securities-v2/api/liquidations/{marketId}/settle-expired-auction","href":"/endpoints/lending/settle-expired-auction"}]},{"group":"Hooks","pages":[{"title":"List Hooks","api":"GET /lending-external-securities-v2/api/hooks/{marketId}","href":"/endpoints/lending/list-hooks"},{"title":"Get Hook","api":"GET /lending-external-securities-v2/api/hooks/{marketId}/{hookId}","href":"/endpoints/lending/get-hook"},{"title":"Create Hook","api":"POST /lending-external-securities-v2/api/hooks/{marketId}","href":"/endpoints/lending/create-hook"},{"title":"Update Hook","api":"PUT /lending-external-securities-v2/api/hooks/{marketId}/{hookId}","href":"/endpoints/lending/update-hook"},{"title":"Delete Hook","api":"DELETE /lending-external-securities-v2/api/hooks/{marketId}/{hookId}","href":"/endpoints/lending/delete-hook"},{"title":"Toggle Hook","api":"POST /lending-external-securities-v2/api/hooks/{marketId}/{hookId}/toggle","href":"/endpoints/lending/toggle-hook"},{"title":"Execute Hook","api":"POST /lending-external-securities-v2/api/hooks/{marketId}/{hookId}/execute","href":"/endpoints/lending/execute-hook"},{"title":"Get Hook Executions","api":"GET /lending-external-securities-v2/api/hooks/{marketId}/{hookId}/executions","href":"/endpoints/lending/get-hook-executions"},{"title":"List Hook Deliveries","api":"GET /lending-external-securities-v2/api/hooks/{marketId}/{hookId}/deliveries","href":"/endpoints/lending/list-hook-deliveries"},{"title":"Rotate Hook Secret","api":"POST /lending-external-securities-v2/api/hooks/{marketId}/{hookId}/rotate-secret","href":"/endpoints/lending/rotate-hook-secret"}]},{"group":"Liquidation Bots","pages":[{"title":"List Liquidation Bots","api":"GET /lending-external-securities-v2/api/liquidation-bots","href":"/endpoints/lending/list-bots"},{"title":"Deploy Liquidation Bot","api":"POST /lending-external-securities-v2/api/liquidation-bots","href":"/endpoints/lending/deploy-bot"},{"title":"Confirm Bot Deployment","api":"POST /lending-external-securities-v2/api/liquidation-bots/confirm-deploy","href":"/endpoints/lending/confirm-bot-deployment"},{"title":"Get Liquidation Bot","api":"GET /lending-external-securities-v2/api/liquidation-bots/{botId}","href":"/endpoints/lending/get-bot"},{"title":"List Bot Transactions","api":"GET /lending-external-securities-v2/api/liquidation-bots/{botId}/transactions","href":"/endpoints/lending/list-bot-transactions"},{"title":"Connect Bot to Market","api":"POST /lending-external-securities-v2/api/liquidation-bots/{botId}/connect","href":"/endpoints/lending/connect-bot"},{"title":"Bot Owner Action","api":"POST /lending-external-securities-v2/api/liquidation-bots/{botId}/action","href":"/endpoints/lending/bot-action"},{"title":"Fund Bot","api":"POST /lending-external-securities-v2/api/liquidation-bots/{botId}/fund","href":"/endpoints/lending/fund-bot"},{"title":"Confirm Bot Transaction","api":"POST /lending-external-securities-v2/api/liquidation-bots/{botId}/confirm-tx","href":"/endpoints/lending/confirm-bot-transaction"},{"title":"Update Bot","api":"PATCH /lending-external-securities-v2/api/liquidation-bots/{botId}","href":"/endpoints/lending/update-bot"}]}]},{"group":"Operators","pages":[{"title":"Operators","icon":"user-tie","href":"/endpoints/operators/introduction"},{"group":"Queue","pages":[{"title":"List Pending Markets","api":"GET /lending-external-securities-v2/api/markets/queue/pending","href":"/endpoints/operators/list-pending-markets"},{"title":"List Queued Markets","api":"GET /lending-external-securities-v2/api/markets/queued","href":"/endpoints/operators/list-queued-markets"},{"title":"Get Queued Market","api":"GET /lending-external-securities-v2/api/markets/queued/{marketAddress}/details","href":"/endpoints/operators/get-queued-market"},{"title":"Accept Lender Role","api":"POST /lending-external-securities-v2/api/markets/queued/{marketAddress}/accept","href":"/endpoints/operators/accept-lender-role"},{"title":"Confirm Lender Role","api":"POST /lending-external-securities-v2/api/markets/queued/{marketAddress}/confirm-accept","href":"/endpoints/operators/confirm-lender-role"}]},{"group":"Lender of Record","pages":[{"title":"Get Operator","api":"GET /lending-external-securities-v2/api/markets/{marketId}/operator","href":"/endpoints/operators/get-operator"},{"title":"Get Handover","api":"GET /lending-external-securities-v2/api/markets/{marketId}/handover","href":"/endpoints/operators/get-handover"}]},{"group":"Roles","pages":[{"title":"Get Access Role","api":"GET /lending-external-securities-v2/api/markets/{marketId}/access-role/{address}","href":"/endpoints/operators/get-access-role"},{"title":"Set Access Role","api":"POST /lending-external-securities-v2/api/markets/{marketId}/access-role","href":"/endpoints/operators/set-access-role"},{"title":"Set Liquidator Role","api":"POST /lending-external-securities-v2/api/markets/{marketId}/liquidator-role","href":"/endpoints/operators/set-liquidator-role"}]}]},{"group":"Asset Register","pages":[{"title":"Asset Register","icon":"book","href":"/endpoints/asset-register/introduction"},{"group":"Pledges","pages":[{"title":"List Pledges","api":"GET /lending-external-securities-v2/api/pledges/{marketAddress}","href":"/endpoints/asset-register/list-pledges"}]}]},{"group":"Vaults","pages":[{"title":"Vaults","icon":"vault","href":"/endpoints/vaults/introduction"},{"group":"Queries","pages":[{"title":"List Vaults","api":"GET /lending-external-securities-v2/api/vaults","href":"/endpoints/vaults/list-vaults"},{"title":"Get Vault","api":"GET /lending-external-securities-v2/api/vaults/{vaultId}","href":"/endpoints/vaults/get-vault"}]},{"group":"Vault Groups","pages":[{"title":"Get Vault Group","api":"GET /lending-external-securities-v2/api/vaults/groups/{groupId}","href":"/endpoints/vaults/get-vault-group"},{"title":"Deposit to Vault Group","api":"POST /lending-external-securities-v2/api/vaults/groups/{groupId}/deposit","href":"/endpoints/vaults/deposit-to-vault-group"}]},{"group":"Positions","pages":[{"title":"Get Position","api":"GET /lending-external-securities-v2/api/vaults/{vaultId}/position/{holderAddress}","href":"/endpoints/vaults/get-position"},{"title":"List Transactions","api":"GET /lending-external-securities-v2/api/vaults/{vaultId}/transactions","href":"/endpoints/vaults/list-vault-transactions"}]},{"group":"Deposits \u0026 Redemptions","pages":[{"title":"Deposit","api":"POST /lending-external-securities-v2/api/vaults/{vaultId}/deposit","href":"/endpoints/vaults/deposit"},{"title":"Redeem","api":"POST /lending-external-securities-v2/api/vaults/{vaultId}/redeem","href":"/endpoints/vaults/redeem"},{"title":"Confirm Transaction","api":"POST /lending-external-securities-v2/api/vaults/{vaultId}/confirm-tx","href":"/endpoints/vaults/confirm-transaction"}]},{"group":"Distributor Fees","pages":[{"title":"Get Earnings","api":"GET /lending-external-securities-v2/api/vaults/{vaultId}/earnings","href":"/endpoints/vaults/get-earnings"},{"title":"Collect Distributor Fees","api":"POST /lending-external-securities-v2/api/vaults/{vaultId}/distributor-fees/collect","href":"/endpoints/vaults/collect-distributor-fees"},{"title":"Pay Distributor","api":"POST /lending-external-securities-v2/api/vaults/{vaultId}/distributor-fees/pay","href":"/endpoints/vaults/pay-distributor"},{"title":"Pay Operator Fees","api":"POST /lending-external-securities-v2/api/vaults/{vaultId}/operator-fees/pay","href":"/endpoints/vaults/pay-operator-fees"},{"title":"Set Distributor Wallet","api":"POST /lending-external-securities-v2/api/vaults/{vaultId}/distributor-wallet","href":"/endpoints/vaults/set-distributor-wallet"},{"title":"Set Distributor Approval","api":"POST /lending-external-securities-v2/api/vaults/{vaultId}/distributor-approval","href":"/endpoints/vaults/set-distributor-approval"}]}]},{"group":"Seller Financing","pages":[{"title":"Seller Financing","icon":"handshake","href":"/endpoints/seller-financing/introduction"},{"group":"Markets","pages":[{"title":"List Markets","api":"GET /seller-financing/api/markets","href":"/endpoints/seller-financing/list-markets"},{"title":"Get Market","api":"GET /seller-financing/api/markets/{marketId}","href":"/endpoints/seller-financing/get-market"}]},{"group":"Deployment","pages":[{"title":"Get Deployment Options","api":"GET /seller-financing/api/markets/options","href":"/endpoints/seller-financing/get-deployment-options"},{"title":"Build Deployment","api":"POST /seller-financing/api/markets","href":"/endpoints/seller-financing/deploy-market"},{"title":"Record Deployment","api":"POST /seller-financing/api/markets/confirm","href":"/endpoints/seller-financing/confirm-deployment"},{"title":"Build Token Setup","api":"POST /seller-financing/api/markets/{marketId}/token-setup","href":"/endpoints/seller-financing/token-setup"},{"title":"Get Role Audit","api":"GET /seller-financing/api/markets/{marketId}/role-audit","href":"/endpoints/seller-financing/get-role-audit"},{"title":"Get Role Certificate","api":"GET /seller-financing/api/markets/{marketId}/role-audit/certificate","href":"/endpoints/seller-financing/get-role-certificate"}]},{"group":"Listings","pages":[{"title":"List Listings","api":"GET /seller-financing/api/markets/{marketId}/listings","href":"/endpoints/seller-financing/list-listings"},{"title":"Get Listing","api":"GET /seller-financing/api/markets/{marketId}/listings/{listingId}","href":"/endpoints/seller-financing/get-listing"},{"title":"Get Quote","api":"GET /seller-financing/api/markets/{marketId}/quote","href":"/endpoints/seller-financing/quote-terms"},{"title":"Create Listing","api":"POST /seller-financing/api/markets/{marketId}/listings","href":"/endpoints/seller-financing/create-listing"},{"title":"Cancel Listing","api":"POST /seller-financing/api/markets/{marketId}/listings/{listingId}/cancel","href":"/endpoints/seller-financing/cancel-listing"}]},{"group":"Loans","pages":[{"title":"Purchase","api":"POST /seller-financing/api/markets/{marketId}/listings/{listingId}/purchase","href":"/endpoints/seller-financing/purchase"},{"title":"Get Loan Status","api":"GET /seller-financing/api/markets/{marketId}/listings/{listingId}/status","href":"/endpoints/seller-financing/get-loan-status"},{"title":"Repay","api":"POST /seller-financing/api/markets/{marketId}/listings/{listingId}/repay","href":"/endpoints/seller-financing/repay"},{"title":"Claim Asset","api":"POST /seller-financing/api/markets/{marketId}/listings/{listingId}/claim-asset","href":"/endpoints/seller-financing/claim-asset"},{"title":"Liquidate","api":"POST /seller-financing/api/markets/{marketId}/listings/{listingId}/liquidate","href":"/endpoints/seller-financing/liquidate"}]},{"group":"Payouts","pages":[{"title":"Get Claimable","api":"GET /seller-financing/api/markets/{marketId}/claimable/{address}","href":"/endpoints/seller-financing/get-claimable"},{"title":"Withdraw","api":"POST /seller-financing/api/markets/{marketId}/withdraw","href":"/endpoints/seller-financing/withdraw"},{"title":"Claim Escrowed Collateral","api":"POST /seller-financing/api/markets/{marketId}/claim-escrowed-collateral","href":"/endpoints/seller-financing/claim-escrowed-collateral"}]},{"group":"Administration","pages":[{"title":"Update Configuration","api":"POST /seller-financing/api/markets/{marketId}/config","href":"/endpoints/seller-financing/update-config"},{"title":"Set Identity Register","api":"POST /seller-financing/api/markets/{marketId}/identity-registry","href":"/endpoints/seller-financing/set-identity-registry"},{"title":"Pause Market","api":"POST /seller-financing/api/markets/{marketId}/pause","href":"/endpoints/seller-financing/pause-market"},{"title":"Unpause Market","api":"POST /seller-financing/api/markets/{marketId}/unpause","href":"/endpoints/seller-financing/unpause-market"}]}]}]},{"tab":"Tools","pages":[{"title":"Tools","href":"/tools/kyc-starks/overview"}]},{"tab":"Security","pages":[{"title":"Security","href":"/security/overview"}]}]},"title":"Trusset Protocol - Infrastructure for Asset Tokenization","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":["c2aa737661","b0f84f53ff","2b790eda92"],"chunks":["OpenApiReferenceProvider-BRm_l__d.js","utils-f1l1Oc-G.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BlhqDhJO.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DHCB7rsC.js","snippetPresets-CYXLx6Hv.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-kQh739Uz.js","ApiExamples-B78P2dEq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C4YLPVAh.js","shallow-vlLnTDkQ.js","getApiPlaygroundDisplay-D_98hhvf.js","CodeSnippet-DtnZHGqq.js","CodeSnippets-CLFb8KJt.js","getPastedJson-Cq-zlbnU.js","icon-sN3t983t.js","MethodPill-P_YQ2s09.js","DuplicateIcon-BVzyNsGJ.js","createIcon-B3jqgqC6.js","DynamicMarkdown-Crwq6WG_.js","SectionHeading-C7pGS2Bb.js","axios-vUo_bRtp.js"]}