Create a one-time bridging deposit address for a selected origin→destination pair.
Returns a single-use address on the origin network for the origin asset. Funds must be
sent to that address on that chain; Mesh detects the deposit, executes the bridge, and delivers
to destination.address on the destination network.
Deposit-style (user pay-in): discover routes with POST /api/v1/bridging/routes/deposit.
The end user sends from their wallet to the returned deposit address.
Withdrawal-style (platform pay-in): discover routes with POST /api/v1/bridging/routes/withdrawal
to pair an omnibus origin with the user’s chosen destination. Your platform sends the origin
asset from that omnibus wallet to the deposit address; the user’s withdrawal address is destination.address.
Idempotency: a transactionId is single-use per userId. While the transfer is still
pending, re-submitting the same transactionId + userId with the same origin, destination and
address returns the previously created address unchanged (same transferId, same
expirationTime) rather than generating a new one, so network-error retries are safe. Re-submitting
with a different origin, destination or address is a 400. Once the transfer has reached a terminal
state (succeeded, failed or expired), the same transactionId returns 409; use a new
transactionId for a new address.
Expiry:constraints.expirationTime is fixed at creation (6 hours by default) and is the point at
which Mesh stops tracking the address. A transfer that has not been funded by then is marked failed; a
pay-in that arrives before then is bridged and the transfer moves to succeeded as soon as it settles. Do
not display or use the address after expirationTime: the provider may still bridge funds sent
later, but Mesh will not track them automatically.
Minimum amount:constraints.minimumAmount is the smallest pay-in (in the origin asset) Mesh
accepts on this route: the stricter of the route’s configured minimum and the platform USD floor
converted at the current price. It is the same value POST /api/v1/bridging/quote returns in its
constraints and enforces with amountBelowMinimum. constraints.maximumAmount is the
platform USD cap converted at the current price (enforced on /quote with amountExceedsMaximum);
the provider’s available liquidity may be lower and surfaces at quote time the same way.
Typical flow:
Discover routes (routes/deposit or routes/withdrawal) and fix origin + destination
(destination includes the recipient withdrawal address when applicable).
Call this endpoint with those values.
Show the deposit address, constraints (minimumAmount, expirationTime, singleUseAddress),
and warnings to whoever will broadcast the pay-in (end user or your custody system).
After the pay-in is sent on-chain, Mesh completes the bridge to the destination address.
Use transferId from tracking for webhooks or the transfer status API.
Important: the deposit address is single-use; do not reuse it.
POST
/
api
/
v1
/
bridging
/
address
Create a one-time bridging deposit address for a selected origin→destination pair.
Used for both pay-in (deposit) and platform-led pay-in (withdrawal-style) bridging: the address returned
is always on origin; funds must be sent there before Mesh can deliver to destination.
This endpoint is idempotent per transactionId scoped to userId and B2B client/environment:
retries with the same origin, destination (network, asset, and address),
and route return the same deposit address. Reusing the same transactionId with any different origin or
destination (network, asset, or address) returns an error and does not create a second transfer preview.
Your platform's unique identifier for this transfer attempt.
Use a stable, collision-free ID (e.g. an order ID or UUID).
Re-submitting the same value will return the previously created address rather than
generating a new one.
The pay-in leg: network and asset whose single-use deposit address is returned.
In deposit flows this is usually the end-user’s wallet chain and token; in withdrawal-style flows
it is the omnibus source chosen from POST /api/v1/bridging/routes/withdrawal.
Must match a configured route from deposit or withdrawal route discovery.
The payout leg: network, asset, and address where bridged funds are delivered (e.g. user’s receive
address in a deposit flow, or their withdrawal address in a platform-led flow).
Must match a route from deposit or withdrawal route discovery together with origin.
Show child attributes
Response
Bridging deposit address created or retrieved (idempotent hit).
Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.
Format: 2-character code (e.g., "7K", "M2"). Use for alerting/routing, not display.
Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.
All possible error types are available in the documentation.
Contains the deposit address on the origin chain, constraints, tracking IDs, and warnings so you can
either guide an end user to broadcast the pay-in or have your platform/custody system broadcast the
pay-in to the origin-chain deposit address in a withdrawal-style flow, then track delivery to the
destination address to completion.
Show child attributes
Was this page helpful?
⌘I
Create a one-time bridging deposit address for a selected origin→destination pair.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Mesh","colors":{"primary":"#F9FF4D","light":"#F9FF4D","dark":"#F9FF4D"},"logo":{"light":"https://mintcdn.com/mesh-40/xC8T3jgyIbITRgDa/logo/yellow-logo.svg?fit=max\u0026auto=format\u0026n=xC8T3jgyIbITRgDa\u0026q=85\u0026s=1cd02a0ba4a7d0f45f959161701ec02d","dark":"https://mintcdn.com/mesh-40/xC8T3jgyIbITRgDa/logo/yellow-logo.svg?fit=max\u0026auto=format\u0026n=xC8T3jgyIbITRgDa\u0026q=85\u0026s=1cd02a0ba4a7d0f45f959161701ec02d"},"favicon":"https://mintcdn.com/mesh-40/AvjtqKCGv95_YUUc/favicon-new.png?fit=max\u0026auto=format\u0026n=AvjtqKCGv95_YUUc\u0026q=85\u0026s=932699c8f94d0f777bdd1b1ac6f17f23","api":{"openapi":"https://integration-api.meshconnect.com/swagger/v1/swagger.json"},"appearance":{"default":"dark","strict":true},"navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.meshconnect.com/login"}},"footer":{"socials":{"twitter":"https://twitter.com/meshconnectapi","linkedin":"https://www.linkedin.com/company/meshconnectapi"}},"integrations":{"ga4":{"measurementId":"G-1QG55ZYBHD"}},"errors":{"404":{"redirect":false,"title":"Page not found","description":"The page you're looking for doesn't exist or has been moved. Try using the **search bar** above, or head back to the [Quickstart guide](/build/15min-quickstart) to get started."}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mesh-40","hasAudioNarration":false,"actualSubdomain":"mesh-40","customDomains":["docs.meshconnect.com"],"gitSource":{"type":"github","owner":"frontfin","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4d5376d5cc223f79e1a1b","collectionId":"64165158-1254-4b07-854c-eb141b68933c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4d5376d5cc223f79e1a1b"},"feedback":{"thumbs":true,"issues":false,"edits":false,"agentFeedback":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"DISABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4d5376d5cc223f79e1a1b","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"API Reference","count":35},{"language":"default","tag":"Guides","count":27},{"language":"default","tag":"Further resources","count":16},{"language":"default","tag":"Account Management endpoints","count":10},{"language":"default","tag":"Build your integration","count":8},{"language":"default","tag":"Registered Clients","count":7},{"language":"default","tag":"Deprecated","count":6},{"language":"default","tag":"Core endpoints","count":6},{"language":"default","tag":"Headless bridging endpoints","count":5},{"language":"default","tag":"User account endpoints","count":4}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","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},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@keyframes not-found-appear{0%{opacity:0}to{opacity:1}}.sdk-badge{display:inline-block;padding:.125rem .5rem;border-radius:.375rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.75rem;font-weight:500;line-height:1rem;white-space:nowrap;vertical-align:baseline;text-align:center}.sdk-live{color:#86efac;background-color:rgba(74,222,128,.1)}.sdk-backlog{color:#fca5a5;background-color:rgba(248,113,113,.1)}.sdk-coming-soon{color:#fcd34d;background-color:rgba(251,191,36,.1)}.sdk-default{color:#93c5fd;background-color:rgba(96,165,250,.1)}body:has(.not-found-container) #sidebar,body:has(.not-found-container) #table-of-contents{display:none!important}.not-found-container{position:fixed!important;top:64px!important;left:0!important;right:0!important;bottom:0!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;text-align:center!important;padding:1.5rem!important;pointer-events:none;z-index:0;animation:not-found-appear .15s ease both}.not-found-container>*{pointer-events:auto;max-width:36rem;width:100%}#error-badge,.not-found-status-code{font-size:8rem!important;font-weight:900!important;line-height:1!important;color:#f9ff4d!important;opacity:.4!important;margin-bottom:.5rem!important;padding:0!important}#error-title,.not-found-title{font-size:1.75rem!important;font-weight:700!important;margin-bottom:.5rem!important}.not-found-description{font-size:1.05rem;color:rgba(229,229,231,.7);max-width:28rem;margin:0 auto 2.5rem;line-height:1.7}.not-found-recommended-page-link,.sidebar-group-header{color:#f9ff4d!important;font-weight:500}.sidebar-group-header{font-size:1rem!important;font-weight:800!important;letter-spacing:.08em!important;text-transform:uppercase!important;opacity:1!important;margin-top:1.75rem!important}#navigation-items,#sidebar-content{padding-top:0!important}li[data-group-tag]>button{font-weight:700!important}.parameter-reference{background:rgba(168,85,247,.1);border:1px solid rgba(168,85,247,.28);border-radius:.75rem;padding:.25rem .9rem;margin:.75rem 0 1.25rem}.parameter-reference [class*=accordion],.parameter-reference details,.parameter-reference>div:first-child{background:0 0!important;border:0!important;box-shadow:none!important}.parameter-reference button,.parameter-reference summary{background:0 0!important;position:relative;padding-left:1.75rem!important}.parameter-reference button::before,.parameter-reference summary::before{content:\"📋\";position:absolute;left:0;top:50%;transform:translateY(-50%);font-size:1rem;line-height:1}.platform-list{display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.08);border-radius:.75rem;overflow:hidden;margin:1rem 0}.platform-list .platform-row{display:flex;align-items:center;gap:.6rem;padding:.9rem 1.1rem;border-bottom:1px solid rgba(255,255,255,.08)}.param-list .param-row:last-child,.platform-list .platform-row:last-child{border-bottom:none}.platform-list .platform-row img{width:18px;height:18px;flex-shrink:0;margin:0}.platform-list .platform-row span{font-weight:600}.param-list{display:flex;flex-direction:column;margin:1rem 0 .5rem}.param-list .param-row{padding:.9rem 0;border-bottom:1px solid rgba(255,255,255,.07)}.param-list .param-name{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem .65rem;margin-bottom:.4rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;font-weight:600;color:#f9ff4d;background:0 0}.param-list .param-name code{background:0 0;padding:0;border:0;font-size:inherit;font-weight:inherit;color:inherit}.param-list .param-name strong{font-weight:700}.param-list .param-body{font-size:.9em;color:rgba(229,229,231,.85);line-height:1.6}.param-list .param-body p{margin:0}.param-list .param-body p+p{margin-top:.55em}.param-list .param-body code{font-size:.88em}.param-list .param-tag{font-size:.7em;padding:.08em .5em}.parameter-reference table td:first-child,.parameter-reference table th:first-child{white-space:nowrap;min-width:14rem;vertical-align:top}.parameter-reference table td{vertical-align:top;padding-top:.6em;padding-bottom:.6em}.param-tag{display:inline-block;padding:.125rem .5rem;border-radius:.375rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.75rem;font-weight:500;line-height:1rem;white-space:nowrap;vertical-align:baseline;margin-bottom:.5rem}.param-tag-required{color:#86efac;background-color:rgba(74,222,128,.1)}.param-tag-optional{color:#fcd34d;background-color:rgba(251,191,36,.1)}:root{--sidebar-width:18rem;--content-edge-buffer:4.5rem;--content-max-width:56rem}@media (min-width:1024px){#sidebar-content{width:var(--sidebar-width)!important}#body-content{padding-left:var(--sidebar-width)!important}[class*=\"max-w-[696px]\"]{box-sizing:border-box!important;width:100%!important;max-width:min(var(--content-max-width),calc(100vw - var(--sidebar-width) - var(--content-edge-buffer)),100%)!important;margin-left:auto!important;margin-right:auto!important}}@media (min-width:1280px){:root{--content-edge-buffer:6.5rem}}@media (min-width:1520px){:root{--content-max-width:80rem}}#body-content :is(.frame, [class*=\"frame\"]){max-width:min(100%,48rem);margin-left:auto;margin-right:auto}#body-content :is(.frame, [class*=\"frame\"]) :is(img, picture, source){max-width:100%;height:auto;margin-left:auto;margin-right:auto;border-radius:.5rem}img.inline-icon{display:inline-block;width:1em;height:1em;max-width:none;margin:0 .3em 0 0;vertical-align:-.15em}"}],"page":{"pagePath":"api-reference/headless-bridging/create-bridged-address","slug":"/api-reference/headless-bridging/create-bridged-address","pageMetadata":{"openapi":"post /api/v1/bridging/address","title":"Create a one-time bridging deposit address for a selected origin→destination pair.","description":"Returns a single-use address on the \u003cb>origin\u003c/b> network for the \u003cb>origin\u003c/b> asset. Funds must be\r\nsent to that address on that chain; Mesh detects the deposit, executes the bridge, and delivers\r\nto `destination.address` on the destination network.\r\n \r\n**Deposit-style (user pay-in):** discover routes with `POST /api/v1/bridging/routes/deposit`.\r\nThe end user sends from their wallet to the returned deposit address.\r\n \r\n**Withdrawal-style (platform pay-in):** discover routes with `POST /api/v1/bridging/routes/withdrawal`\r\nto pair an omnibus `origin` with the user’s chosen destination. Your platform sends the origin\r\nasset from that omnibus wallet to the deposit address; the user’s withdrawal address is `destination.address`.\r\n \r\n**Idempotency:** a `transactionId` is single-use per `userId`. While the transfer is still\r\npending, re-submitting the same `transactionId` + `userId` with the same origin, destination and\r\naddress returns the previously created address unchanged (same `transferId`, same\r\n`expirationTime`) rather than generating a new one, so network-error retries are safe. Re-submitting\r\nwith a different origin, destination or address is a `400`. Once the transfer has reached a terminal\r\nstate (succeeded, failed or expired), the same `transactionId` returns `409`; use a new\r\n`transactionId` for a new address.\r\n \r\n**Expiry:** `constraints.expirationTime` is fixed at creation (6 hours by default) and is the point at\r\nwhich Mesh stops tracking the address. A transfer that has not been funded by then is marked failed; a\r\npay-in that arrives before then is bridged and the transfer moves to succeeded as soon as it settles. Do\r\nnot display or use the address after `expirationTime`: the provider may still bridge funds sent\r\nlater, but Mesh will not track them automatically.\r\n \r\n**Minimum amount:** `constraints.minimumAmount` is the smallest pay-in (in the origin asset) Mesh\r\naccepts on this route: the stricter of the route's configured minimum and the platform USD floor\r\nconverted at the current price. It is the same value `POST /api/v1/bridging/quote` returns in its\r\n`constraints` and enforces with `amountBelowMinimum`. `constraints.maximumAmount` is the\r\nplatform USD cap converted at the current price (enforced on `/quote` with `amountExceedsMaximum`);\r\nthe provider's available liquidity may be lower and surfaces at quote time the same way.\r\n \r\n**Typical flow:**\r\n1. Discover routes (`routes/deposit` or `routes/withdrawal`) and fix `origin` + `destination`\r\n (destination includes the recipient withdrawal address when applicable).\r\n2. Call this endpoint with those values.\r\n3. Show the deposit address, constraints (`minimumAmount`, `expirationTime`, `singleUseAddress`),\r\n and warnings to whoever will broadcast the pay-in (end user or your custody system).\r\n4. After the pay-in is sent on-chain, Mesh completes the bridge to the destination address.\r\n5. Use `transferId` from `tracking` for webhooks or the transfer status API.\r\n \r\n**Important:** the deposit address is single-use; do not reuse it.","href":"/api-reference/headless-bridging/create-bridged-address"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Returns a single-use address on the \", _jsx(\"b\", {\n children: \"origin\"\n }), \" network for the \", _jsx(\"b\", {\n children: \"origin\"\n }), \" asset. Funds must be\\r\\nsent to that address on that chain; Mesh detects the deposit, executes the bridge, and delivers\\r\\nto \", _jsx(_components.code, {\n children: \"destination.address\"\n }), \" on the destination network.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Deposit-style (user pay-in):\"\n }), \" discover routes with \", _jsx(_components.code, {\n children: \"POST /api/v1/bridging/routes/deposit\"\n }), \".\\r\\nThe end user sends from their wallet to the returned deposit address.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Withdrawal-style (platform pay-in):\"\n }), \" discover routes with \", _jsx(_components.code, {\n children: \"POST /api/v1/bridging/routes/withdrawal\"\n }), \"\\r\\nto pair an omnibus \", _jsx(_components.code, {\n children: \"origin\"\n }), \" with the user’s chosen destination. Your platform sends the origin\\r\\nasset from that omnibus wallet to the deposit address; the user’s withdrawal address is \", _jsx(_components.code, {\n children: \"destination.address\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Idempotency:\"\n }), \" a \", _jsx(_components.code, {\n children: \"transactionId\"\n }), \" is single-use per \", _jsx(_components.code, {\n children: \"userId\"\n }), \". While the transfer is still\\r\\npending, re-submitting the same \", _jsx(_components.code, {\n children: \"transactionId\"\n }), \" + \", _jsx(_components.code, {\n children: \"userId\"\n }), \" with the same origin, destination and\\r\\naddress returns the previously created address unchanged (same \", _jsx(_components.code, {\n children: \"transferId\"\n }), \", same\\r\\n\", _jsx(_components.code, {\n children: \"expirationTime\"\n }), \") rather than generating a new one, so network-error retries are safe. Re-submitting\\r\\nwith a different origin, destination or address is a \", _jsx(_components.code, {\n children: \"400\"\n }), \". Once the transfer has reached a terminal\\r\\nstate (succeeded, failed or expired), the same \", _jsx(_components.code, {\n children: \"transactionId\"\n }), \" returns \", _jsx(_components.code, {\n children: \"409\"\n }), \"; use a new\\r\\n\", _jsx(_components.code, {\n children: \"transactionId\"\n }), \" for a new address.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Expiry:\"\n }), \" \", _jsx(_components.code, {\n children: \"constraints.expirationTime\"\n }), \" is fixed at creation (6 hours by default) and is the point at\\r\\nwhich Mesh stops tracking the address. A transfer that has not been funded by then is marked failed; a\\r\\npay-in that arrives before then is bridged and the transfer moves to succeeded as soon as it settles. Do\\r\\nnot display or use the address after \", _jsx(_components.code, {\n children: \"expirationTime\"\n }), \": the provider may still bridge funds sent\\r\\nlater, but Mesh will not track them automatically.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Minimum amount:\"\n }), \" \", _jsx(_components.code, {\n children: \"constraints.minimumAmount\"\n }), \" is the smallest pay-in (in the origin asset) Mesh\\r\\naccepts on this route: the stricter of the route’s configured minimum and the platform USD floor\\r\\nconverted at the current price. It is the same value \", _jsx(_components.code, {\n children: \"POST /api/v1/bridging/quote\"\n }), \" returns in its\\r\\n\", _jsx(_components.code, {\n children: \"constraints\"\n }), \" and enforces with \", _jsx(_components.code, {\n children: \"amountBelowMinimum\"\n }), \". \", _jsx(_components.code, {\n children: \"constraints.maximumAmount\"\n }), \" is the\\r\\nplatform USD cap converted at the current price (enforced on \", _jsx(_components.code, {\n children: \"/quote\"\n }), \" with \", _jsx(_components.code, {\n children: \"amountExceedsMaximum\"\n }), \");\\r\\nthe provider’s available liquidity may be lower and surfaces at quote time the same way.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Typical flow:\"\n })\n }), \"\\n\", _jsxs(_components.ol, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Discover routes (\", _jsx(_components.code, {\n children: \"routes/deposit\"\n }), \" or \", _jsx(_components.code, {\n children: \"routes/withdrawal\"\n }), \") and fix \", _jsx(_components.code, {\n children: \"origin\"\n }), \" + \", _jsx(_components.code, {\n children: \"destination\"\n }), \"\\r\\n(destination includes the recipient withdrawal address when applicable).\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Call this endpoint with those values.\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Show the deposit address, constraints (\", _jsx(_components.code, {\n children: \"minimumAmount\"\n }), \", \", _jsx(_components.code, {\n children: \"expirationTime\"\n }), \", \", _jsx(_components.code, {\n children: \"singleUseAddress\"\n }), \"),\\r\\nand warnings to whoever will broadcast the pay-in (end user or your custody system).\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"After the pay-in is sent on-chain, Mesh completes the bridge to the destination address.\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Use \", _jsx(_components.code, {\n children: \"transferId\"\n }), \" from \", _jsx(_components.code, {\n children: \"tracking\"\n }), \" for webhooks or the transfer status API.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Important:\"\n }), \" the deposit address is single-use; do not reuse it.\"]\n })]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"post /api/v1/bridging/address","title":"Create a one-time bridging deposit address for a selected origin→destination pair.","description":"Returns a single-use address on the \u003cb>origin\u003c/b> network for the \u003cb>origin\u003c/b> asset. Funds must be\r\nsent to that address on that chain; Mesh detects the deposit, executes the bridge, and delivers\r\nto `destination.address` on the destination network.\r\n \r\n**Deposit-style (user pay-in):** discover routes with `POST /api/v1/bridging/routes/deposit`.\r\nThe end user sends from their wallet to the returned deposit address.\r\n \r\n**Withdrawal-style (platform pay-in):** discover routes with `POST /api/v1/bridging/routes/withdrawal`\r\nto pair an omnibus `origin` with the user’s chosen destination. Your platform sends the origin\r\nasset from that omnibus wallet to the deposit address; the user’s withdrawal address is `destination.address`.\r\n \r\n**Idempotency:** a `transactionId` is single-use per `userId`. While the transfer is still\r\npending, re-submitting the same `transactionId` + `userId` with the same origin, destination and\r\naddress returns the previously created address unchanged (same `transferId`, same\r\n`expirationTime`) rather than generating a new one, so network-error retries are safe. Re-submitting\r\nwith a different origin, destination or address is a `400`. Once the transfer has reached a terminal\r\nstate (succeeded, failed or expired), the same `transactionId` returns `409`; use a new\r\n`transactionId` for a new address.\r\n \r\n**Expiry:** `constraints.expirationTime` is fixed at creation (6 hours by default) and is the point at\r\nwhich Mesh stops tracking the address. A transfer that has not been funded by then is marked failed; a\r\npay-in that arrives before then is bridged and the transfer moves to succeeded as soon as it settles. Do\r\nnot display or use the address after `expirationTime`: the provider may still bridge funds sent\r\nlater, but Mesh will not track them automatically.\r\n \r\n**Minimum amount:** `constraints.minimumAmount` is the smallest pay-in (in the origin asset) Mesh\r\naccepts on this route: the stricter of the route's configured minimum and the platform USD floor\r\nconverted at the current price. It is the same value `POST /api/v1/bridging/quote` returns in its\r\n`constraints` and enforces with `amountBelowMinimum`. `constraints.maximumAmount` is the\r\nplatform USD cap converted at the current price (enforced on `/quote` with `amountExceedsMaximum`);\r\nthe provider's available liquidity may be lower and surfaces at quote time the same way.\r\n \r\n**Typical flow:**\r\n1. Discover routes (`routes/deposit` or `routes/withdrawal`) and fix `origin` + `destination`\r\n (destination includes the recipient withdrawal address when applicable).\r\n2. Call this endpoint with those values.\r\n3. Show the deposit address, constraints (`minimumAmount`, `expirationTime`, `singleUseAddress`),\r\n and warnings to whoever will broadcast the pay-in (end user or your custody system).\r\n4. After the pay-in is sent on-chain, Mesh completes the bridge to the destination address.\r\n5. Use `transferId` from `tracking` for webhooks or the transfer status API.\r\n \r\n**Important:** the deposit address is single-use; do not reuse it.","href":"/api-reference/headless-bridging/create-bridged-address"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Headless Bridging"],"summary":"Create a one-time bridging deposit address for a selected origin→destination pair.","description":"Returns a single-use address on the \u003cb>origin\u003c/b> network for the \u003cb>origin\u003c/b> asset. Funds must be\r\nsent to that address on that chain; Mesh detects the deposit, executes the bridge, and delivers\r\nto `destination.address` on the destination network.\r\n \r\n**Deposit-style (user pay-in):** discover routes with `POST /api/v1/bridging/routes/deposit`.\r\nThe end user sends from their wallet to the returned deposit address.\r\n \r\n**Withdrawal-style (platform pay-in):** discover routes with `POST /api/v1/bridging/routes/withdrawal`\r\nto pair an omnibus `origin` with the user’s chosen destination. Your platform sends the origin\r\nasset from that omnibus wallet to the deposit address; the user’s withdrawal address is `destination.address`.\r\n \r\n**Idempotency:** a `transactionId` is single-use per `userId`. While the transfer is still\r\npending, re-submitting the same `transactionId` + `userId` with the same origin, destination and\r\naddress returns the previously created address unchanged (same `transferId`, same\r\n`expirationTime`) rather than generating a new one, so network-error retries are safe. Re-submitting\r\nwith a different origin, destination or address is a `400`. Once the transfer has reached a terminal\r\nstate (succeeded, failed or expired), the same `transactionId` returns `409`; use a new\r\n`transactionId` for a new address.\r\n \r\n**Expiry:** `constraints.expirationTime` is fixed at creation (6 hours by default) and is the point at\r\nwhich Mesh stops tracking the address. A transfer that has not been funded by then is marked failed; a\r\npay-in that arrives before then is bridged and the transfer moves to succeeded as soon as it settles. Do\r\nnot display or use the address after `expirationTime`: the provider may still bridge funds sent\r\nlater, but Mesh will not track them automatically.\r\n \r\n**Minimum amount:** `constraints.minimumAmount` is the smallest pay-in (in the origin asset) Mesh\r\naccepts on this route: the stricter of the route's configured minimum and the platform USD floor\r\nconverted at the current price. It is the same value `POST /api/v1/bridging/quote` returns in its\r\n`constraints` and enforces with `amountBelowMinimum`. `constraints.maximumAmount` is the\r\nplatform USD cap converted at the current price (enforced on `/quote` with `amountExceedsMaximum`);\r\nthe provider's available liquidity may be lower and surfaces at quote time the same way.\r\n \r\n**Typical flow:**\r\n1. Discover routes (`routes/deposit` or `routes/withdrawal`) and fix `origin` + `destination`\r\n (destination includes the recipient withdrawal address when applicable).\r\n2. Call this endpoint with those values.\r\n3. Show the deposit address, constraints (`minimumAmount`, `expirationTime`, `singleUseAddress`),\r\n and warnings to whoever will broadcast the pay-in (end user or your custody system).\r\n4. After the pay-in is sent on-chain, Mesh completes the bridge to the destination address.\r\n5. Use `transferId` from `tracking` for webhooks or the transfer status API.\r\n \r\n**Important:** the deposit address is single-use; do not reuse it.","requestBody":"f287a54f-69d8-4716-87e5-5b0935583289","responses":{"200":"f89696bf-3b11-49ab-9e4c-4aa83f1fec59","400":"acd0aa91-4917-4830-bc41-5384938db67b","401":"ea8f448c-9bfa-41f7-9a4d-cdf87a539562","403":"bc9ed6ef-600f-4313-921f-937d2699548f","409":"306a1206-fd12-4c8e-99b5-b4f7f1250f04","503":"9c990146-4007-4337-98ed-aa7dedaac615"},"method":"post","type":"path","servers":["8208eed4-8164-4d93-b101-01f89c9bee01","2408a598-01ce-463c-ac8c-2da0b07f067d"],"security":["d76c5d14-23f1-4b2e-8ebf-5430952f53df"],"path":"/api/v1/bridging/address","baseUrlOptions":["https://integration-api.meshconnect.com","https://sandbox-integration-api.meshconnect.com"],"title":"Create a one-time bridging deposit address for a selected origin→destination pair.","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Request body for `POST /api/v1/bridging/address`.\r\n\n\r\nUsed for both pay-in (deposit) and platform-led pay-in (withdrawal-style) bridging: the address returned\r\nis always on `origin`; funds must be sent there before Mesh can deliver to `destination`.\r\n\n\r\nThis endpoint is idempotent per `transactionId` scoped to `userId` and B2B client/environment:\r\nretries with the same origin, destination (network, asset, and `address`),\r\nand route return the same deposit address. Reusing the same `transactionId` with any different origin or\r\ndestination (network, asset, or address) returns an error and does not create a second transfer preview.\r\n","required":["destination","origin","transactionId","userId"],"properties":{"userId":{"maxLength":384,"minLength":1,"type":"string","description":"Your platform's unique identifier for the end user initiating this transfer.\r\nCombined with `transactionId` to enforce idempotency.","isRequired":true,"uniqueKey":"userId","typeLabel":"string"},"transactionId":{"maxLength":128,"minLength":1,"type":"string","description":"Your platform's unique identifier for this transfer attempt.\r\nUse a stable, collision-free ID (e.g. an order ID or UUID).\r\nRe-submitting the same value will return the previously created address rather than\r\ngenerating a new one.","isRequired":true,"uniqueKey":"transactionId","typeLabel":"string"},"origin":{"type":"object","description":"The pay-in leg: network and asset whose single-use deposit address is returned.\r\nIn deposit flows this is usually the end-user’s wallet chain and token; in withdrawal-style flows\r\nit is the omnibus source chosen from `POST /api/v1/bridging/routes/withdrawal`.\r\nMust match a configured route from deposit or withdrawal route discovery.","required":["asset","network"],"properties":{"network":{"minLength":1,"type":"string","description":"CAIP-2 network identifier for the token's network.\r\n\nExamples: `eip155:1` (Ethereum Mainnet), `eip155:137` (Polygon),\r\n`eip155:8453` (Base), `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` (Solana Mainnet).","isRequired":true,"uniqueKey":"origin.network","typeLabel":"string"},"asset":{"minLength":1,"type":"string","description":"Token symbol, case-insensitive (e.g. `USDC`, `ETH`, `MATIC`).","isRequired":true,"uniqueKey":"origin.asset","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"origin","typeLabel":"object"},"destination":{"type":"object","description":"The payout leg: network, asset, and address where bridged funds are delivered (e.g. user’s receive\r\naddress in a deposit flow, or their withdrawal address in a platform-led flow).\r\nMust match a route from deposit or withdrawal route discovery together with `origin`.","required":["address","asset","network"],"properties":{"network":{"minLength":1,"type":"string","description":"CAIP-2 network identifier for the token's network.\r\n\nExamples: `eip155:1` (Ethereum Mainnet), `eip155:137` (Polygon),\r\n`eip155:8453` (Base), `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` (Solana Mainnet).","isRequired":true,"uniqueKey":"destination.network","typeLabel":"string"},"asset":{"minLength":1,"type":"string","description":"Token symbol, case-insensitive (e.g. `USDC`, `ETH`, `MATIC`).","isRequired":true,"uniqueKey":"destination.asset","typeLabel":"string"},"address":{"maxLength":200,"minLength":1,"type":"string","description":"On-chain wallet address on the destination network that will receive the bridged funds.\r\nMust be a valid address for the specified `network`.","isRequired":true,"uniqueKey":"destination.address","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"destination","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"userId":"\u003cstring>","transactionId":"\u003cstring>","origin":{"network":"\u003cstring>","asset":"\u003cstring>"},"destination":{"network":"\u003cstring>","asset":"\u003cstring>","address":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"f89696bf-3b11-49ab-9e4c-4aa83f1fec59":{"description":"Bridging deposit address created or retrieved (idempotent hit).","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok","serverFailure","permissionDenied","badRequest","notFound","conflict","tooManyRequest","locked","unavailableForLegalReasons","serviceUnavailable"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"oneOf":[{"type":"string","description":"A message generated by the API","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"A message generated by the API","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"displayMessage":{"oneOf":[{"type":"string","description":"User-friendly display message that can be presented to the end user","uniqueKey":"displayMessage.oneOf.0","typeLabel":"string"},{"type":"null","description":"User-friendly display message that can be presented to the end user","uniqueKey":"displayMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"displayMessage","typeLabel":"string | null"},"errorHash":{"oneOf":[{"type":"string","description":"An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping","readOnly":true,"uniqueKey":"errorHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping","readOnly":true,"uniqueKey":"errorHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorHash","typeLabel":"string | null"},"teamCode":{"oneOf":[{"type":"string","description":"Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display.","readOnly":true,"uniqueKey":"teamCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display.","readOnly":true,"uniqueKey":"teamCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"teamCode","typeLabel":"string | null"},"errorType":{"oneOf":[{"type":"string","description":"Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation.","uniqueKey":"errorType.oneOf.0","typeLabel":"string"},{"type":"null","description":"Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation.","uniqueKey":"errorType.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorType","typeLabel":"string | null"},"errorData":{"oneOf":[{"readOnly":true},{"readOnly":true,"type":"null","uniqueKey":"errorData.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorData","typeLabel":"null"},"content":{"oneOf":[{"type":"object","description":"Response body for `POST /api/v1/bridging/address`.\r\n\n\r\nContains the deposit address on the origin chain, constraints, tracking IDs, and warnings so you can\r\neither guide an end user to broadcast the pay-in or have your platform/custody system broadcast the\r\npay-in to the origin-chain deposit address in a withdrawal-style flow, then track delivery to the\r\ndestination address to completion.\r\n","required":["constraints","selectedRoute","tracking","warnings"],"properties":{"selectedRoute":{"oneOf":[{"type":"object","description":"The confirmed route for this bridge: origin token/network, the deposit address to send to,\r\nand the destination token/network/address that will receive the funds.","required":["bridgingAddress","destination","origin"],"properties":{"origin":{"oneOf":[{"type":"object","description":"The pay-in token and network (deposit address is valid for this asset on this chain).\r\nWho broadcasts the transfer depends on your product (end user or platform omnibus).","required":["asset","network"],"properties":{"network":{"minLength":1,"type":"string","description":"CAIP-2 network identifier for the token's network.\r\n\nExamples: `eip155:1` (Ethereum Mainnet), `eip155:137` (Polygon),\r\n`eip155:8453` (Base), `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` (Solana Mainnet).","isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.origin.oneOf.0.network","typeLabel":"string"},"asset":{"minLength":1,"type":"string","description":"Token symbol, case-insensitive (e.g. `USDC`, `ETH`, `MATIC`).","isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.origin.oneOf.0.asset","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.origin.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.origin.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.origin","typeLabel":"object | null"},"bridgingAddress":{"oneOf":[{"type":"object","description":"The one-time deposit address: the pay-in amount must be sent here on the origin network to initiate the bridge.","required":["address"],"properties":{"address":{"oneOf":[{"type":"string","description":"The on-chain deposit address to send source funds to.\r\nThis address is single-use — do not reuse it across transfers.","isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.bridgingAddress.oneOf.0.address.oneOf.0","typeLabel":"string"},{"type":"null","description":"The on-chain deposit address to send source funds to.\r\nThis address is single-use — do not reuse it across transfers.","isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.bridgingAddress.oneOf.0.address.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.bridgingAddress.oneOf.0.address","typeLabel":"string | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.bridgingAddress.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.bridgingAddress.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.bridgingAddress","typeLabel":"object | null"},"destination":{"oneOf":[{"type":"object","description":"The destination token, network, and wallet address where bridged funds will be delivered.","required":["address","asset","network"],"properties":{"network":{"minLength":1,"type":"string","description":"CAIP-2 network identifier for the token's network.\r\n\nExamples: `eip155:1` (Ethereum Mainnet), `eip155:137` (Polygon),\r\n`eip155:8453` (Base), `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` (Solana Mainnet).","isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.destination.oneOf.0.network","typeLabel":"string"},"asset":{"minLength":1,"type":"string","description":"Token symbol, case-insensitive (e.g. `USDC`, `ETH`, `MATIC`).","isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.destination.oneOf.0.asset","typeLabel":"string"},"address":{"maxLength":200,"minLength":1,"type":"string","description":"On-chain wallet address on the destination network that will receive the bridged funds.\r\nMust be a valid address for the specified `network`.","isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.destination.oneOf.0.address","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.destination.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.destination.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0.destination","typeLabel":"object | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"content.oneOf.0.selectedRoute","typeLabel":"object | null"},"constraints":{"oneOf":[{"type":"object","description":"Operational constraints for this deposit address — minimum amount, expiry, and address reuse policy.\r\nSurface these before the pay-in is broadcast (end user or your custody system).","properties":{"minimumAmount":{"oneOf":[{"type":"string","description":"Minimum amount the user must send, expressed as a decimal string in the source asset: the stricter of the\r\nroute's configured minimum and the platform USD floor converted at the current price.\r\n`\"0\"` when neither applies (e.g. price unavailable and no route minimum).","uniqueKey":"content.oneOf.0.constraints.oneOf.0.minimumAmount.oneOf.0","typeLabel":"string"},{"type":"null","description":"Minimum amount the user must send, expressed as a decimal string in the source asset: the stricter of the\r\nroute's configured minimum and the platform USD floor converted at the current price.\r\n`\"0\"` when neither applies (e.g. price unavailable and no route minimum).","uniqueKey":"content.oneOf.0.constraints.oneOf.0.minimumAmount.oneOf.1","typeLabel":"null"}],"uniqueKey":"content.oneOf.0.constraints.oneOf.0.minimumAmount","typeLabel":"string | null"},"maximumAmount":{"oneOf":[{"type":"string","description":"Maximum amount the user may send, expressed as a decimal string in the source asset: the platform USD cap\r\nconverted at the current price. `null` if no maximum can be expressed, e.g. price unavailable\r\n(serialized as JSON `null` despite global omit-null settings).","uniqueKey":"content.oneOf.0.constraints.oneOf.0.maximumAmount.oneOf.0","typeLabel":"string"},{"type":"null","description":"Maximum amount the user may send, expressed as a decimal string in the source asset: the platform USD cap\r\nconverted at the current price. `null` if no maximum can be expressed, e.g. price unavailable\r\n(serialized as JSON `null` despite global omit-null settings).","uniqueKey":"content.oneOf.0.constraints.oneOf.0.maximumAmount.oneOf.1","typeLabel":"null"}],"uniqueKey":"content.oneOf.0.constraints.oneOf.0.maximumAmount","typeLabel":"string | null"},"expirationTime":{"oneOf":[{"type":"integer","description":"Unix timestamp (seconds) at which the deposit address expires.\r\n`null` if the address does not expire.\r\nFunds sent after this time may not be processed.","format":"int64","uniqueKey":"content.oneOf.0.constraints.oneOf.0.expirationTime.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","description":"Unix timestamp (seconds) at which the deposit address expires.\r\n`null` if the address does not expire.\r\nFunds sent after this time may not be processed.","format":"int64","uniqueKey":"content.oneOf.0.constraints.oneOf.0.expirationTime.oneOf.1","typeLabel":"null"}],"uniqueKey":"content.oneOf.0.constraints.oneOf.0.expirationTime","typeLabel":"integer\u003cint64> | null"},"singleUseAddress":{"type":"boolean","description":"When `true`, this deposit address is single-use and must not be reused across transfers.\r\nSending funds to an already-used address may result in loss of funds.","uniqueKey":"content.oneOf.0.constraints.oneOf.0.singleUseAddress","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"content.oneOf.0.constraints.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"content.oneOf.0.constraints.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"content.oneOf.0.constraints","typeLabel":"object | null"},"tracking":{"oneOf":[{"type":"object","description":"Internal IDs for tracking this bridge transfer. Store these to correlate webhook events\r\nand status updates back to this specific transfer.","required":["transactionId","transferId","userId"],"properties":{"userId":{"oneOf":[{"type":"string","description":"The end-user identifier supplied in the originating request.\r\nEchoed back for client-side reconciliation.","isRequired":true,"uniqueKey":"content.oneOf.0.tracking.oneOf.0.userId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The end-user identifier supplied in the originating request.\r\nEchoed back for client-side reconciliation.","isRequired":true,"uniqueKey":"content.oneOf.0.tracking.oneOf.0.userId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"content.oneOf.0.tracking.oneOf.0.userId","typeLabel":"string | null"},"transactionId":{"oneOf":[{"type":"string","description":"The transfer identifier supplied in the originating request.\r\nEchoed back for client-side reconciliation.","isRequired":true,"uniqueKey":"content.oneOf.0.tracking.oneOf.0.transactionId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The transfer identifier supplied in the originating request.\r\nEchoed back for client-side reconciliation.","isRequired":true,"uniqueKey":"content.oneOf.0.tracking.oneOf.0.transactionId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"content.oneOf.0.tracking.oneOf.0.transactionId","typeLabel":"string | null"},"transferId":{"type":"string","description":"Mesh-internal unique identifier for this transfer record.\r\nUse this ID when querying transfer status or matching incoming webhook payloads.","format":"uuid","isRequired":true,"uniqueKey":"content.oneOf.0.tracking.oneOf.0.transferId","typeLabel":"string\u003cuuid>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"content.oneOf.0.tracking.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"content.oneOf.0.tracking.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"content.oneOf.0.tracking","typeLabel":"object | null"},"warnings":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"content.oneOf.0.warnings.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Operational warnings to show before the pay-in is sent (single-use address, correct source network, fees, minimums).","isRequired":true,"uniqueKey":"content.oneOf.0.warnings.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"Operational warnings to show before the pay-in is sent (single-use address, correct source network, fees, minimums).","isRequired":true,"uniqueKey":"content.oneOf.0.warnings.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"content.oneOf.0.warnings","typeLabel":"string[] | null"}},"additionalProperties":false,"uniqueKey":"content.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"content.oneOf.1","typeLabel":"null"}],"uniqueKey":"content","typeLabel":"object | null"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"ok","message":"\u003cstring>","displayMessage":"\u003cstring>","errorHash":"\u003cstring>","teamCode":"\u003cstring>","errorType":"\u003cstring>","errorData":"\u003cunknown>","content":{"selectedRoute":{"origin":{"network":"\u003cstring>","asset":"\u003cstring>"},"bridgingAddress":{"address":"\u003cstring>"},"destination":{"network":"\u003cstring>","asset":"\u003cstring>","address":"\u003cstring>"}},"constraints":{"minimumAmount":"\u003cstring>","maximumAmount":"\u003cstring>","expirationTime":123,"singleUseAddress":true},"tracking":{"userId":"\u003cstring>","transactionId":"\u003cstring>","transferId":"3c90c3cc-0d44-4b50-8888-8dd25736052a"},"warnings":["\u003cstring>"]}}}},"exampleType":"generated"}},"exampleType":"generated"},"acd0aa91-4917-4830-bc41-5384938db67b":{"description":"Request is missing required fields, the network is unknown, the bridging provider rejected the destination address as not valid for the destination network (`invalidDestinationAddress`), no route exists for the given origin/destination pair, or the `transactionId` was already used with a different origin, destination or address.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok","serverFailure","permissionDenied","badRequest","notFound","conflict","tooManyRequest","locked","unavailableForLegalReasons","serviceUnavailable"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"oneOf":[{"type":"string","description":"A message generated by the API","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"A message generated by the API","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"displayMessage":{"oneOf":[{"type":"string","description":"User-friendly display message that can be presented to the end user","uniqueKey":"displayMessage.oneOf.0","typeLabel":"string"},{"type":"null","description":"User-friendly display message that can be presented to the end user","uniqueKey":"displayMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"displayMessage","typeLabel":"string | null"},"errorHash":{"oneOf":[{"type":"string","description":"An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping","readOnly":true,"uniqueKey":"errorHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping","readOnly":true,"uniqueKey":"errorHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorHash","typeLabel":"string | null"},"teamCode":{"oneOf":[{"type":"string","description":"Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display.","readOnly":true,"uniqueKey":"teamCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display.","readOnly":true,"uniqueKey":"teamCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"teamCode","typeLabel":"string | null"},"errorType":{"oneOf":[{"type":"string","description":"Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation.","uniqueKey":"errorType.oneOf.0","typeLabel":"string"},{"type":"null","description":"Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation.","uniqueKey":"errorType.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorType","typeLabel":"string | null"},"errorData":{"oneOf":[{"readOnly":true},{"readOnly":true,"type":"null","uniqueKey":"errorData.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorData","typeLabel":"null"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"status":"ok","message":"","errorHash":"014bffeb","teamCode":"Q9","errorType":""},"examples":{"Example":{"title":"Example","value":{"status":"ok","message":"","errorHash":"014bffeb","teamCode":"Q9","errorType":""}}},"exampleType":"examples"}},"exampleType":"examples"},"ea8f448c-9bfa-41f7-9a4d-cdf87a539562":{"description":"Unauthorized — Client ID or Client Secret are missing or incorrect.","content":{"application/json":{"schema":{}}},"exampleType":"generated"},"bc9ed6ef-600f-4313-921f-937d2699548f":{"description":"Headless bridging is not enabled for this client (`permissionDenied`), or the API key does not have the write scope required for this endpoint.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok","serverFailure","permissionDenied","badRequest","notFound","conflict","tooManyRequest","locked","unavailableForLegalReasons","serviceUnavailable"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"oneOf":[{"type":"string","description":"A message generated by the API","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"A message generated by the API","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"displayMessage":{"oneOf":[{"type":"string","description":"User-friendly display message that can be presented to the end user","uniqueKey":"displayMessage.oneOf.0","typeLabel":"string"},{"type":"null","description":"User-friendly display message that can be presented to the end user","uniqueKey":"displayMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"displayMessage","typeLabel":"string | null"},"errorHash":{"oneOf":[{"type":"string","description":"An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping","readOnly":true,"uniqueKey":"errorHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping","readOnly":true,"uniqueKey":"errorHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorHash","typeLabel":"string | null"},"teamCode":{"oneOf":[{"type":"string","description":"Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display.","readOnly":true,"uniqueKey":"teamCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display.","readOnly":true,"uniqueKey":"teamCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"teamCode","typeLabel":"string | null"},"errorType":{"oneOf":[{"type":"string","description":"Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation.","uniqueKey":"errorType.oneOf.0","typeLabel":"string"},{"type":"null","description":"Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation.","uniqueKey":"errorType.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorType","typeLabel":"string | null"},"errorData":{"oneOf":[{"readOnly":true},{"readOnly":true,"type":"null","uniqueKey":"errorData.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorData","typeLabel":"null"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"status":"ok","message":"","errorHash":"014bffeb","teamCode":"Q9","errorType":""},"examples":{"Example":{"title":"Example","value":{"status":"ok","message":"","errorHash":"014bffeb","teamCode":"Q9","errorType":""}}},"exampleType":"examples"}},"exampleType":"examples"},"306a1206-fd12-4c8e-99b5-b4f7f1250f04":{"description":"The `transactionId` was already used for a transfer that has since completed, failed or expired. Use a new `transactionId`.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok","serverFailure","permissionDenied","badRequest","notFound","conflict","tooManyRequest","locked","unavailableForLegalReasons","serviceUnavailable"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"oneOf":[{"type":"string","description":"A message generated by the API","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"A message generated by the API","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"displayMessage":{"oneOf":[{"type":"string","description":"User-friendly display message that can be presented to the end user","uniqueKey":"displayMessage.oneOf.0","typeLabel":"string"},{"type":"null","description":"User-friendly display message that can be presented to the end user","uniqueKey":"displayMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"displayMessage","typeLabel":"string | null"},"errorHash":{"oneOf":[{"type":"string","description":"An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping","readOnly":true,"uniqueKey":"errorHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping","readOnly":true,"uniqueKey":"errorHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorHash","typeLabel":"string | null"},"teamCode":{"oneOf":[{"type":"string","description":"Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display.","readOnly":true,"uniqueKey":"teamCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display.","readOnly":true,"uniqueKey":"teamCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"teamCode","typeLabel":"string | null"},"errorType":{"oneOf":[{"type":"string","description":"Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation.","uniqueKey":"errorType.oneOf.0","typeLabel":"string"},{"type":"null","description":"Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation.","uniqueKey":"errorType.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorType","typeLabel":"string | null"},"errorData":{"oneOf":[{"readOnly":true},{"readOnly":true,"type":"null","uniqueKey":"errorData.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorData","typeLabel":"null"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"status":"ok","message":"","errorHash":"014bffeb","teamCode":"Q9","errorType":""},"examples":{"Example":{"title":"Example","value":{"status":"ok","message":"","errorHash":"014bffeb","teamCode":"Q9","errorType":""}}},"exampleType":"examples"}},"exampleType":"examples"},"9c990146-4007-4337-98ed-aa7dedaac615":{"description":"The bridging provider cannot price this route right now (`serverFailureRetryable`), typically a temporary liquidity gap — BTC routes in particular can be intermittently unavailable. Nothing was created; retry with the same `transactionId` after a short delay.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok","serverFailure","permissionDenied","badRequest","notFound","conflict","tooManyRequest","locked","unavailableForLegalReasons","serviceUnavailable"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"oneOf":[{"type":"string","description":"A message generated by the API","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"A message generated by the API","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"displayMessage":{"oneOf":[{"type":"string","description":"User-friendly display message that can be presented to the end user","uniqueKey":"displayMessage.oneOf.0","typeLabel":"string"},{"type":"null","description":"User-friendly display message that can be presented to the end user","uniqueKey":"displayMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"displayMessage","typeLabel":"string | null"},"errorHash":{"oneOf":[{"type":"string","description":"An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping","readOnly":true,"uniqueKey":"errorHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"An error grouping hash from string components and caller information. Used by bugsnag on FE for correct error grouping","readOnly":true,"uniqueKey":"errorHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorHash","typeLabel":"string | null"},"teamCode":{"oneOf":[{"type":"string","description":"Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display.","readOnly":true,"uniqueKey":"teamCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Opaque team code for error routing. Resolved from exception origin or caller file path via CODEOWNERS.\r\nFormat: 2-character code (e.g., \"7K\", \"M2\"). Use for alerting/routing, not display.","readOnly":true,"uniqueKey":"teamCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"teamCode","typeLabel":"string | null"},"errorType":{"oneOf":[{"type":"string","description":"Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation.","uniqueKey":"errorType.oneOf.0","typeLabel":"string"},{"type":"null","description":"Strictly-typed error type that is explaining the reason of an unsuccessful status of the operation.\r\nAll possible error types are available in the documentation.","uniqueKey":"errorType.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorType","typeLabel":"string | null"},"errorData":{"oneOf":[{"readOnly":true},{"readOnly":true,"type":"null","uniqueKey":"errorData.oneOf.1","typeLabel":"null"}],"uniqueKey":"errorData","typeLabel":"null"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"status":"ok","message":"","errorHash":"014bffeb","teamCode":"Q9","errorType":""},"examples":{"Example":{"title":"Example","value":{"status":"ok","message":"","errorHash":"014bffeb","teamCode":"Q9","errorType":""}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"d76c5d14-23f1-4b2e-8ebf-5430952f53df":{"Client-Secret":{"type":"apiKey","description":"Contact Mesh to get client Secret","name":"X-Client-Secret","in":"header","scopes":[],"schemeName":"Client-Secret"},"Client-Id":{"type":"apiKey","description":"Contact Mesh to get client Id","name":"X-Client-Id","in":"header","scopes":[],"schemeName":"Client-Id"}}},"servers":{"8208eed4-8164-4d93-b101-01f89c9bee01":{"url":"https://integration-api.meshconnect.com"},"2408a598-01ce-463c-ac8c-2da0b07f067d":{"url":"https://sandbox-integration-api.meshconnect.com"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","description":"Contact Mesh to get client Secret","name":"X-Client-Secret","in":"header","scopes":[],"schemeName":"Client-Secret"},"schema":{"title":"X-Client-Secret","type":"string","description":"Contact Mesh to get client Secret","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"Client-Secret","name":"X-Client-Secret"},{"scheme":{"type":"apiKey","description":"Contact Mesh to get client Id","name":"X-Client-Id","in":"header","scopes":[],"schemeName":"Client-Id"},"schema":{"title":"X-Client-Id","type":"string","description":"Contact Mesh to get client Id","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"Client-Id","name":"X-Client-Id"}],"title":"Client-Secret \u0026 Client-Id"}]},"originalFileLocation":"https://integration-api.meshconnect.com/swagger/v1/swagger.json"},"subdomain":"mesh-40","siteName":"Mesh","title":"Create a one-time bridging deposit address for a selected origin→destination pair. - Mesh","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T22:51:56.233Z","originalFileLocation":"api-reference/headless-bridging/create-bridged-address.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";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=\"dark\"}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=\"Returns a single-use address on the origin network for the origin asset. Funds must be sent to that address on that chain; Mesh detects the deposit, executes the bridge, and delivers to destination.address on the destination network. Deposit-style (user pay-in): discover routes with POST /api/v1/bridging/routes/deposit. The end user sends from their wallet to the returned deposit address. Withdrawal-style (platform pay-in): discover routes with POST /api/v1/bridging/routes/withdrawal to pair an omnibus origin with the user’s chosen destination. Your platform sends the origin asset from that omnibus wallet to the deposit address; the user’s withdrawal address is destination.address. Idempotency: a transactionId is single-use per userId. While the transfer is still pending, re-submitting the same transactionId + userId with the same origin, destination and address returns the previously created address unchanged (same transferId, same expirationTime) rather than generating a new one, so network-error retries are safe. Re-submitting with a different origin, destination or address is a 400. Once the transfer has reached a terminal state (succeeded, failed or expired), the same transactionId returns 409; use a new transactionId for a new address. Expiry: constraints.expirationTime is fixed at creation (6 hours by default) and is the point at which Mesh stops tracking the address. A transfer that has not been funded by then is marked failed; a pay-in that arrives before then is bridged and the transfer moves to succeeded as soon as it settles. Do not display or use the address after expirationTime: the provider may still bridge funds sent later, but Mesh will not track them automatically. Minimum amount: constraints.minimumAmount is the smallest pay-in (in the origin asset) Mesh accepts on this route: the stricter of the route\u0026#x27;s configured minimum and the platform USD floor converted at the current price. It is the same value POST /api/v1/bridging/quote returns in its constraints and enforces with amountBelowMinimum. constraints.maximumAmount is the platform USD cap converted at the current price (enforced on /quote with amountExceedsMaximum); the provider\u0026#x27;s available liquidity may be lower and surfaces at quote time the same way. Typical flow: 1. Discover routes (routes/deposit or routes/withdrawal) and fix origin + destination (destination includes the recipient withdrawal address when applicable). 2. Call this endpoint with those values. 3. Show the deposit address, constraints (minimumAmount, expirationTime, singleUseAddress), and warnings to whoever will broadcast the pay-in (end user or your custody system). 4. After the pay-in is sent on-chain, Mesh completes the bridge to the destination address. 5. Use transferId from tracking for webhooks or the transfer status API. Important: the deposit address is single-use; do not reuse it.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Mesh\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mesh-40/p00HcmipLgvMhble/_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/mesh-40/p00HcmipLgvMhble/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mesh-40/p00HcmipLgvMhble/_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/mesh-40/p00HcmipLgvMhble/_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/mesh-40/p00HcmipLgvMhble/_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/mesh-40/p00HcmipLgvMhble/_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/mesh-40/p00HcmipLgvMhble/_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/mesh-40/p00HcmipLgvMhble/_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/mesh-40/p00HcmipLgvMhble/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a one-time bridging deposit address for a selected origin→destination pair. - Mesh\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns a single-use address on the origin network for the origin asset. Funds must be sent to that address on that chain; Mesh detects the deposit, executes the bridge, and delivers to destination.address on the destination network. Deposit-style (user pay-in): discover routes with POST /api/v1/bridging/routes/deposit. The end user sends from their wallet to the returned deposit address. Withdrawal-style (platform pay-in): discover routes with POST /api/v1/bridging/routes/withdrawal to pair an omnibus origin with the user’s chosen destination. Your platform sends the origin asset from that omnibus wallet to the deposit address; the user’s withdrawal address is destination.address. Idempotency: a transactionId is single-use per userId. While the transfer is still pending, re-submitting the same transactionId + userId with the same origin, destination and address returns the previously created address unchanged (same transferId, same expirationTime) rather than generating a new one, so network-error retries are safe. Re-submitting with a different origin, destination or address is a 400. Once the transfer has reached a terminal state (succeeded, failed or expired), the same transactionId returns 409; use a new transactionId for a new address. Expiry: constraints.expirationTime is fixed at creation (6 hours by default) and is the point at which Mesh stops tracking the address. A transfer that has not been funded by then is marked failed; a pay-in that arrives before then is bridged and the transfer moves to succeeded as soon as it settles. Do not display or use the address after expirationTime: the provider may still bridge funds sent later, but Mesh will not track them automatically. Minimum amount: constraints.minimumAmount is the smallest pay-in (in the origin asset) Mesh accepts on this route: the stricter of the route\u0026#x27;s configured minimum and the platform USD floor converted at the current price. It is the same value POST /api/v1/bridging/quote returns in its constraints and enforces with amountBelowMinimum. constraints.maximumAmount is the platform USD cap converted at the current price (enforced on /quote with amountExceedsMaximum); the provider\u0026#x27;s available liquidity may be lower and surfaces at quote time the same way. Typical flow: 1. Discover routes (routes/deposit or routes/withdrawal) and fix origin + destination (destination includes the recipient withdrawal address when applicable). 2. Call this endpoint with those values. 3. Show the deposit address, constraints (minimumAmount, expirationTime, singleUseAddress), and warnings to whoever will broadcast the pay-in (end user or your custody system). 4. After the pay-in is sent on-chain, Mesh completes the bridge to the destination address. 5. Use transferId from tracking for webhooks or the transfer status API. Important: the deposit address is single-use; do not reuse it.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Mesh\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.meshconnect.com/api-reference/headless-bridging/create-bridged-address\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mesh-40.mintlify.app/_mintlify/api/og/v2?division=Headless+bridging+endpoints\u0026amp;title=Create+a+one-time+bridging+deposit+address+for+a+selected+origin%E2%86%92destination+pair.\u0026amp;description=Returns+a+single-use+address+on+the+%3Cb%3Eorigin%3C%2Fb%3E+network+for+the+%3Cb%3Eorigin%3C%2Fb%3E+asset.+Funds+must+be%0D%0Asent+to+that+address+on+that+chain%3B+Mesh+detects+the+depos\u0026amp;theme=9eeaacc453403c39c4dc5090\u0026amp;signature=a96b34df409af0ad82886178faa21e72e1621ec023692509ab85987598152b68\">\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=\"Create a one-time bridging deposit address for a selected origin→destination pair. - Mesh\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns a single-use address on the origin network for the origin asset. Funds must be sent to that address on that chain; Mesh detects the deposit, executes the bridge, and delivers to destination.address on the destination network. Deposit-style (user pay-in): discover routes with POST /api/v1/bridging/routes/deposit. The end user sends from their wallet to the returned deposit address. Withdrawal-style (platform pay-in): discover routes with POST /api/v1/bridging/routes/withdrawal to pair an omnibus origin with the user’s chosen destination. Your platform sends the origin asset from that omnibus wallet to the deposit address; the user’s withdrawal address is destination.address. Idempotency: a transactionId is single-use per userId. While the transfer is still pending, re-submitting the same transactionId + userId with the same origin, destination and address returns the previously created address unchanged (same transferId, same expirationTime) rather than generating a new one, so network-error retries are safe. Re-submitting with a different origin, destination or address is a 400. Once the transfer has reached a terminal state (succeeded, failed or expired), the same transactionId returns 409; use a new transactionId for a new address. Expiry: constraints.expirationTime is fixed at creation (6 hours by default) and is the point at which Mesh stops tracking the address. A transfer that has not been funded by then is marked failed; a pay-in that arrives before then is bridged and the transfer moves to succeeded as soon as it settles. Do not display or use the address after expirationTime: the provider may still bridge funds sent later, but Mesh will not track them automatically. Minimum amount: constraints.minimumAmount is the smallest pay-in (in the origin asset) Mesh accepts on this route: the stricter of the route\u0026#x27;s configured minimum and the platform USD floor converted at the current price. It is the same value POST /api/v1/bridging/quote returns in its constraints and enforces with amountBelowMinimum. constraints.maximumAmount is the platform USD cap converted at the current price (enforced on /quote with amountExceedsMaximum); the provider\u0026#x27;s available liquidity may be lower and surfaces at quote time the same way. Typical flow: 1. Discover routes (routes/deposit or routes/withdrawal) and fix origin + destination (destination includes the recipient withdrawal address when applicable). 2. Call this endpoint with those values. 3. Show the deposit address, constraints (minimumAmount, expirationTime, singleUseAddress), and warnings to whoever will broadcast the pay-in (end user or your custody system). 4. After the pay-in is sent on-chain, Mesh completes the bridge to the destination address. 5. Use transferId from tracking for webhooks or the transfer status API. Important: the deposit address is single-use; do not reuse it.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mesh-40.mintlify.app/_mintlify/api/og/v2?division=Headless+bridging+endpoints\u0026amp;title=Create+a+one-time+bridging+deposit+address+for+a+selected+origin%E2%86%92destination+pair.\u0026amp;description=Returns+a+single-use+address+on+the+%3Cb%3Eorigin%3C%2Fb%3E+network+for+the+%3Cb%3Eorigin%3C%2Fb%3E+asset.+Funds+must+be%0D%0Asent+to+that+address+on+that+chain%3B+Mesh+detects+the+depos\u0026amp;theme=9eeaacc453403c39c4dc5090\u0026amp;signature=a96b34df409af0ad82886178faa21e72e1621ec023692509ab85987598152b68\">\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/mesh-40/p00HcmipLgvMhble/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Mesh\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#F9FF4D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.meshconnect.com/api-reference/headless-bridging/create-bridged-address\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/headless-bridging/create-bridged-address.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.meshconnect.com/#organization\",\"name\":\"Mesh\",\"url\":\"https://docs.meshconnect.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mesh-40/xC8T3jgyIbITRgDa/logo/yellow-logo.svg?fit=max\u0026auto=format\u0026n=xC8T3jgyIbITRgDa\u0026q=85\u0026s=1cd02a0ba4a7d0f45f959161701ec02d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.meshconnect.com#website\",\"name\":\"Mesh\",\"url\":\"https://docs.meshconnect.com\",\"publisher\":{\"@id\":\"https://docs.meshconnect.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.meshconnect.com/api-reference/headless-bridging/create-bridged-address#webpage\",\"url\":\"https://docs.meshconnect.com/api-reference/headless-bridging/create-bridged-address\",\"name\":\"Create a one-time bridging deposit address for a selected origin→destination pair.\",\"description\":\"Returns a single-use address on the origin network for the origin asset. Funds must be sent to that address on that chain; Mesh detects the deposit, executes the bridge, and delivers to destination.address on the destination network. Deposit-style (user pay-in): discover routes with POST /api/v1/bridging/routes/deposit. The end user sends from their wallet to the returned deposit address. Withdrawal-style (platform pay-in): discover routes with POST /api/v1/bridging/routes/withdrawal to pair an omnibus origin with the user’s chosen destination. Your platform sends the origin asset from that omnibus wallet to the deposit address; the user’s withdrawal address is destination.address. Idempotency: a transactionId is single-use per userId. While the transfer is still pending, re-submitting the same transactionId + userId with the same origin, destination and address returns the previously created address unchanged (same transferId, same expirationTime) rather than generating a new one, so network-error retries are safe. Re-submitting with a different origin, destination or address is a 400. Once the transfer has reached a terminal state (succeeded, failed or expired), the same transactionId returns 409; use a new transactionId for a new address. Expiry: constraints.expirationTime is fixed at creation (6 hours by default) and is the point at which Mesh stops tracking the address. A transfer that has not been funded by then is marked failed; a pay-in that arrives before then is bridged and the transfer moves to succeeded as soon as it settles. Do not display or use the address after expirationTime: the provider may still bridge funds sent later, but Mesh will not track them automatically. Minimum amount: constraints.minimumAmount is the smallest pay-in (in the origin asset) Mesh accepts on this route: the stricter of the route's configured minimum and the platform USD floor converted at the current price. It is the same value POST /api/v1/bridging/quote returns in its constraints and enforces with amountBelowMinimum. constraints.maximumAmount is the platform USD cap converted at the current price (enforced on /quote with amountExceedsMaximum); the provider's available liquidity may be lower and surfaces at quote time the same way. Typical flow: 1. Discover routes (routes/deposit or routes/withdrawal) and fix origin + destination (destination includes the recipient withdrawal address when applicable). 2. Call this endpoint with those values. 3. Show the deposit address, constraints (minimumAmount, expirationTime, singleUseAddress), and warnings to whoever will broadcast the pay-in (end user or your custody system). 4. After the pay-in is sent on-chain, Mesh completes the bridge to the destination address. 5. Use transferId from tracking for webhooks or the transfer status API. Important: the deposit address is single-use; do not reuse it.\",\"dateModified\":\"2026-10-14T22:51:56.233Z\",\"isPartOf\":{\"@id\":\"https://docs.meshconnect.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.meshconnect.com/api-reference/headless-bridging/create-bridged-address#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.meshconnect.com/api-reference/headless-bridging/create-bridged-address#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.meshconnect.com/api-reference/managed-account-authentication/get-link-token-with-parameters\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Headless bridging endpoints\",\"item\":\"https://docs.meshconnect.com/api-reference/headless-bridging/get-deposit-routes\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a one-time bridging deposit address for a selected origin→destination pair.\",\"item\":\"https://docs.meshconnect.com/api-reference/headless-bridging/create-bridged-address\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.meshconnect.com/api-reference/headless-bridging/create-bridged-address#apireference\",\"headline\":\"Create a one-time bridging deposit address for a selected origin→destination pair.\",\"name\":\"Create a one-time bridging deposit address for a selected origin→destination pair.\",\"description\":\"Returns a single-use address on the origin network for the origin asset. Funds must be sent to that address on that chain; Mesh detects the deposit, executes the bridge, and delivers to destination.address on the destination network. Deposit-style (user pay-in): discover routes with POST /api/v1/bridging/routes/deposit. The end user sends from their wallet to the returned deposit address. Withdrawal-style (platform pay-in): discover routes with POST /api/v1/bridging/routes/withdrawal to pair an omnibus origin with the user’s chosen destination. Your platform sends the origin asset from that omnibus wallet to the deposit address; the user’s withdrawal address is destination.address. Idempotency: a transactionId is single-use per userId. While the transfer is still pending, re-submitting the same transactionId + userId with the same origin, destination and address returns the previously created address unchanged (same transferId, same expirationTime) rather than generating a new one, so network-error retries are safe. Re-submitting with a different origin, destination or address is a 400. Once the transfer has reached a terminal state (succeeded, failed or expired), the same transactionId returns 409; use a new transactionId for a new address. Expiry: constraints.expirationTime is fixed at creation (6 hours by default) and is the point at which Mesh stops tracking the address. A transfer that has not been funded by then is marked failed; a pay-in that arrives before then is bridged and the transfer moves to succeeded as soon as it settles. Do not display or use the address after expirationTime: the provider may still bridge funds sent later, but Mesh will not track them automatically. Minimum amount: constraints.minimumAmount is the smallest pay-in (in the origin asset) Mesh accepts on this route: the stricter of the route's configured minimum and the platform USD floor converted at the current price. It is the same value POST /api/v1/bridging/quote returns in its constraints and enforces with amountBelowMinimum. constraints.maximumAmount is the platform USD cap converted at the current price (enforced on /quote with amountExceedsMaximum); the provider's available liquidity may be lower and surfaces at quote time the same way. Typical flow: 1. Discover routes (routes/deposit or routes/withdrawal) and fix origin + destination (destination includes the recipient withdrawal address when applicable). 2. Call this endpoint with those values. 3. Show the deposit address, constraints (minimumAmount, expirationTime, singleUseAddress), and warnings to whoever will broadcast the pay-in (end user or your custody system). 4. After the pay-in is sent on-chain, Mesh completes the bridge to the destination address. 5. Use transferId from tracking for webhooks or the transfer status API. Important: the deposit address is single-use; do not reuse it.\",\"url\":\"https://docs.meshconnect.com/api-reference/headless-bridging/create-bridged-address\",\"mainEntityOfPage\":{\"@id\":\"https://docs.meshconnect.com/api-reference/headless-bridging/create-bridged-address#webpage\"},\"dateModified\":\"2026-10-14T22:51:56.233Z\",\"publisher\":{\"@id\":\"https://docs.meshconnect.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.meshconnect.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Mesh\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Mesh","nav":{"global":null,"groups":[{"group":"Guides","pages":[{"group":"Build your integration","pages":[{"title":"15min Quickstart","href":"/build/15min-quickstart"},{"title":"Prepare to build","href":"/build/prepare-to-build"},{"title":"Fetch a Link Token","href":"/build/fetch-link-token"},{"title":"Launch the Mesh SDK","href":"/build/launch-sdk"},{"title":"Use Mesh's callback functions","href":"/build/callbacks"},{"title":"Supercharge return-users","href":"/build/return-users"},{"title":"Polish the experience","href":"/build/polish"},{"title":"Prepare for go-live","href":"/build/go-live"}]},{"group":"Extend your integration","pages":[{"title":"Add Mesh onramp integrations to your \"Buy\" lineup","href":"/extend/onramp"},{"title":"Add Mesh to your withdrawal flow","href":"/extend/withdrawal"},{"title":"Verify self-hosted wallets","href":"/extend/verify-wallets"}]},{"group":"Further resources","pages":[{"title":"How it all fits together","href":"/resources/how-it-fits"},{"title":"Concepts","href":"/resources/concepts"},{"title":"SDK release notes \u0026 versioning","href":"/resources/sdk-release-notes"},{"title":"Transfer status webhooks","href":"/resources/webhooks"},{"title":"Multi-language support","href":"/resources/multi-language"},{"title":"Fiat currency support","href":"/resources/fiat-currency"},{"title":"Mesh SDK events","href":"/resources/sdk-events"},{"title":"Manual deposits","href":"/resources/manual-deposits"},{"title":"Headless bridging","href":"/resources/headless-bridging"},{"title":"SDK backup mode","href":"/resources/sdk-backup-mode"},{"title":"Just-in-time address fetching","href":"/resources/jit-address-fetching"},{"title":"Managing sub-clients","href":"/resources/sub-clients"},{"title":"Intelligent catalog filtering","href":"/resources/catalog-filtering"},{"title":"Sandbox \u0026 Testnets","href":"/resources/sandbox-testnets"},{"title":"Network and token support","href":"/resources/supported-tokens"},{"title":"Common errors","href":"/resources/common-errors"}]}]},{"group":"API Reference","pages":[{"group":"Core endpoints","pages":[{"openapi":"post /api/v1/linktoken","title":"Get Link token","href":"/api-reference/managed-account-authentication/get-link-token-with-parameters"},{"openapi":"get /api/v1/transfers/managed/mesh","title":"Get Mesh transfers","href":"/api-reference/managed-transfers/get-transfers-initiated-by-mesh"},{"openapi":"get /api/v1/transfers/managed/networks","title":"Get networks","href":"/api-reference/managed-transfers/get-networks"},{"openapi":"get /api/v1/transfers/managed/integrations","title":"Get integrations","href":"/api-reference/managed-transfers/get-integrations"},{"openapi":"get /api/v1/transfers/managed/tokens","title":"Get supported tokens","href":"/api-reference/managed-transfers/get-supported-tokens-list"},{"openapi":"post /api/v1/transfers/managed/quote","title":"Get quote","href":"/api-reference/managed-transfers/quote-transfer"}]},{"group":"Headless bridging endpoints","pages":[{"openapi":"post /api/v1/bridging/routes/deposit","title":"Discover pay-in (source) bridging routes for one or more payout destinations.","href":"/api-reference/headless-bridging/get-deposit-routes"},{"openapi":"post /api/v1/bridging/routes/withdrawal","title":"Discover payout (destination) bridging routes for fixed omnibus (source) legs.","href":"/api-reference/headless-bridging/get-withdrawal-routes"},{"openapi":"post /api/v1/bridging/quote","title":"Get an indicative quote for bridging a given pay-in amount on a configured origin→destination route.","description":"Stateless: no deposit address is minted and no transfer is created. Use this while the end user is\r\nchoosing an amount, then call `POST /api/v1/bridging/address` once they confirm.\r\n \r\n`amount` is denominated in the `origin` asset (what will be sent to the deposit address).\r\nThe response returns `destination.estimatedAmount` (net of provider fees), `destination.minimumAmount`\r\n(the provider's indicative minimum for this quote at the configured slippage, when reported), and the fee\r\nlines that produced the estimate. The quote is not bound to a later `/address` call, which obtains a\r\nfresh quote that may differ.\r\n \r\n`constraints.minimumAmount` is the smallest pay-in Mesh accepts on this route (in the origin asset);\r\nan `amount` below it is rejected with `400 amountBelowMinimum` before the provider is consulted,\r\nand the same value is returned by `POST /api/v1/bridging/address`. `constraints.maximumAmount` is\r\nthe platform USD cap converted at the current price; an amount above it, or above the provider's available\r\nliquidity, is rejected with `400 amountExceedsMaximum`.\r\n \r\n**Important:** the estimate is indicative. The deposit address accepts any amount and the bridge is\r\npriced on what actually arrives, so fees and rates can move between quoting and settlement.","href":"/api-reference/headless-bridging/get-quote"},{"openapi":"post /api/v1/bridging/address","title":"Create a one-time bridging deposit address for a selected origin→destination pair.","href":"/api-reference/headless-bridging/create-bridged-address"},{"openapi":"post /api/v1/bridging/notify","title":"Report a native (non-bridged) deposit your platform has already detected on one of its own deposit addresses.","description":"For deposits that do not need bridging — the end user sent an asset you accept natively to the deposit\r\naddress your platform shows them — there is no `POST /api/v1/bridging/address` call and Mesh is not\r\nin the payment path. Call this endpoint once you have seen the transaction on chain so Mesh records it,\r\nverifies it independently and sends the same transfer webhooks a bridged deposit produces, giving you one\r\nrecord and one reconciliation stream for every deposit.\r\n \r\n**What happens:** Mesh creates the transfer as `pending` with the reported hash, then verifies on\r\nchain that the transaction is confirmed and credited `destination.address` in `destination.asset`.\r\nOn verification the transfer moves to `succeeded` and the `succeeded` webhook fires (with the\r\ntransaction hash and the on-chain amount). A transaction that conclusively did not deliver (it reverted, or\r\nmoved none of the asset to the address), or one whose credit cannot be verified by `expirationTime`,\r\nmarks the transfer `failed` and a `failed` webhook is sent. No `pending` webhook is sent. This endpoint does not return transfer status; use webhooks or the\r\ntransfers API with `tracking.transferId`.\r\n \r\n**One call per on-chain transaction.** The transaction hash is the deposit's identity: a player who\r\ndeposits several times to the same saved address produces several transactions, and each needs its own\r\ncall with its own `transactionId`. Call it after detection, not when the address is displayed.\r\n \r\n**Idempotency:** a `transactionId` is single-use per `userId`. Re-submitting the same\r\n`transactionId` + `userId` with the same destination and `transactionHash` returns the\r\noriginal record (same `transferId`) in any state, so retries are safe. Re-submitting it with a\r\ndifferent destination or hash, or with a `transactionId` already used for a bridged address, is a\r\n`400` (and a `transactionId` used here cannot later mint a bridged address). Reporting a\r\n`transactionHash` already tracked for the same destination under another `transactionId` is a\r\n`409` (`transferAlreadyRequested`) naming the existing transfer; the same hash crediting a\r\ndifferent address of yours (one transaction paying several users) is a separate deposit and is accepted.\r\n \r\n**Networks and assets:** `destination.network` is a CAIP-2 id of an EVM, Solana, Tron, Bitcoin or XRP Ledger\r\nnetwork and `destination.asset` a token symbol Mesh knows on that network; any other network type is a\r\n`400`, and an asset Mesh cannot verify on that network is a `400` (`symbolNotSupported`).\r\n`destination.address` must be a well-formed address for that network\r\n(`invalidDestinationAddress` otherwise) and `transactionHash` a well-formed transaction id for it\r\n(EVM, Tron, Bitcoin, XRP Ledger: 32 bytes hex, `0x` optional; Solana: base58 signature). `amount` is informational: the\r\non-chain credit is authoritative and is what the `succeeded` webhook carries, so a differing\r\n`amount` is logged but does not fail the deposit.","href":"/api-reference/headless-bridging/notify-native-deposit"}]},{"group":"User account endpoints","pages":[{"openapi":"post /api/v1/transfers/managed/address/list","title":"Get deposit addresses","href":"/api-reference/managed-transfers/get-list-of-deposit-addresses"},{"openapi":"post /api/v1/holdings/get","title":"Get crypto holdings","href":"/api-reference/portfolio/get-holdings"},{"openapi":"post /api/v1/holdings/value","title":"Get holdings values","href":"/api-reference/portfolio/get-holdings-values"},{"openapi":"post /api/v1/balance/get","title":"Get fiat holdings","href":"/api-reference/balance/get-account-balance"}]},{"group":"Verify endpoints","pages":[{"openapi":"post /api/v1/exchange/verify","title":"Get profile data","href":"/api-reference/verify/verify"},{"openapi":"get /api/v1/wallets/verify","title":"Get verified addresses","href":"/api-reference/verify/wallet"}]},{"group":"Token management endpoints","pages":[{"openapi":"post /api/v1/token/refresh","title":"Refresh auth token","href":"/api-reference/managed-account-authentication/refresh-auth-token"},{"openapi":"delete /api/v1/account","title":"Remove connection","href":"/api-reference/managed-account-authentication/remove-connection"}]},{"group":"Account Management endpoints","pages":[{"group":"Auth Token","pages":[{"title":"Generate Auth token","deprecated":null,"version":null,"openapi":"https://admin-api.meshconnect.com/swagger/AdminAPI/swagger.json post /admin/api/v1/Token","href":"/api-reference/auth-token/generate-auth-token"}]},{"group":"Main Clients","pages":[{"title":"Get Main Client callback urls","deprecated":null,"version":null,"openapi":"https://admin-api.meshconnect.com/swagger/AdminAPI/swagger.json get /admin/api/v1/Client/callbackUrls","href":"/api-reference/main-clients/get-main-client-callback-urls"},{"title":"Update Main Client callback urls","deprecated":null,"version":null,"openapi":"https://admin-api.meshconnect.com/swagger/AdminAPI/swagger.json post /admin/api/v1/Client/callbackUrls","href":"/api-reference/main-clients/update-main-client-callback-urls"}]},{"group":"Registered Clients","pages":[{"title":"Get all Registered clients","deprecated":null,"version":null,"openapi":"https://admin-api.meshconnect.com/swagger/AdminAPI/swagger.json get /admin/api/v1/SubClient","href":"/api-reference/registered-clients/get-all-registered-clients"},{"title":"Add new Registered client","deprecated":null,"version":null,"openapi":"https://admin-api.meshconnect.com/swagger/AdminAPI/swagger.json post /admin/api/v1/SubClient","href":"/api-reference/registered-clients/add-new-registered-client"},{"title":"Get Registered client","deprecated":null,"version":null,"openapi":"https://admin-api.meshconnect.com/swagger/AdminAPI/swagger.json get /admin/api/v1/SubClient/{id}","href":"/api-reference/registered-clients/get-registered-client"},{"title":"Update Registered client","deprecated":null,"version":null,"openapi":"https://admin-api.meshconnect.com/swagger/AdminAPI/swagger.json put /admin/api/v1/SubClient/{id}","href":"/api-reference/registered-clients/update-registered-client"},{"title":"Delete Registered client","deprecated":null,"version":null,"openapi":"https://admin-api.meshconnect.com/swagger/AdminAPI/swagger.json delete /admin/api/v1/SubClient/{id}","href":"/api-reference/registered-clients/delete-registered-client"},{"title":"Update Registered client Logo","deprecated":null,"version":null,"openapi":"https://admin-api.meshconnect.com/swagger/AdminAPI/swagger.json post /admin/api/v1/SubClient/{id}/logo","href":"/api-reference/registered-clients/update-registered-client-logo"},{"title":"Remove Registered client Logo","deprecated":null,"version":null,"openapi":"https://admin-api.meshconnect.com/swagger/AdminAPI/swagger.json delete /admin/api/v1/SubClient/{id}/logo","href":"/api-reference/registered-clients/remove-registered-client-logo"}]}]},{"group":"Deprecated","pages":[{"openapi":"get /api/v1/integrations","title":"Get available integrations","href":"/api-reference/managed-account-authentication/retrieve-the-list-of-all-available-integrations"},{"openapi":"get /api/v1/status","title":"Get integrations health status","href":"/api-reference/managed-account-authentication/get-health-status"},{"openapi":"post /api/v1/transfers/managed/address/get","title":"Get deposit address","href":"/api-reference/managed-transfers/get-deposit-address"},{"openapi":"post /api/v1/transfers/address/get","title":"Get deposit address","href":"/api-reference/transfers/get-deposit-address"},{"openapi":"get /api/v1/holdings/portfolio","title":"Get aggregated portfolio","href":"/api-reference/portfolio/get-aggregated-portfolio"},{"openapi":"get /api/v1/balance/portfolio","title":"Get aggregated portfolio fiat balances","href":"/api-reference/balance/get-aggregated-portfolio-fiat-balances"}]}]}]},"basePath":"","title":"Create a one-time bridging deposit address for a selected origin→destination pair. - Mesh","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-Bevw23-4.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}