{"openapi":"3.0.0","info":{"version":"1.0.0","title":"Swagger API"},"servers":[{"url":"/","description":"ZKP2P API"}],"externalDocs":{"description":"View the raw OpenAPI Specification in JSON format","url":"/docs/swagger.json"},"paths":{"/providers/providers.json":{"get":{"tags":["Providers"],"summary":"Get stable provider manifest","description":"Returns the backend-maintained stable providers.json manifest.","security":[],"responses":{"200":{"description":"Provider manifest JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderManifest"}}}},"404":{"description":"Provider template not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderErrorResponse"}}}}}}},"/providers/mobile/providers.json":{"get":{"tags":["Providers"],"summary":"Get mobile provider manifest","description":"Returns the backend-maintained mobile providers.json manifest.","security":[],"responses":{"200":{"description":"Provider manifest JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderManifest"}}}},"404":{"description":"Provider template not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderErrorResponse"}}}}}}},"/providers/{platform}/{actionType}.json":{"get":{"tags":["Providers"],"summary":"Get stable provider template","description":"Returns a backend-maintained stable provider template JSON file.","security":[],"parameters":[{"name":"platform","in":"path","required":true,"schema":{"type":"string"},"description":"Provider platform directory, for example paypal.","example":"paypal"},{"name":"actionType","in":"path","required":true,"schema":{"type":"string"},"description":"Provider action type without the .json suffix.","example":"transfer_paypal"}],"responses":{"200":{"description":"Provider template JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderTemplate"}}}},"404":{"description":"Provider template not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderErrorResponse"}}}}}}},"/providers/mobile/{platform}/{actionType}.json":{"get":{"tags":["Providers"],"summary":"Get mobile provider template","description":"Returns a backend-maintained mobile provider template JSON file.","security":[],"parameters":[{"name":"platform","in":"path","required":true,"schema":{"type":"string"},"description":"Provider platform directory, for example paypal.","example":"paypal"},{"name":"actionType","in":"path","required":true,"schema":{"type":"string"},"description":"Provider action type without the .json suffix.","example":"transfer_paypal"}],"responses":{"200":{"description":"Provider template JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderTemplate"}}}},"404":{"description":"Provider template not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderErrorResponse"}}}}}}},"/v1/health-check":{"get":{"tags":["Health Check"],"responses":{"200":{"description":"Health check status","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"status":{"type":"string","enum":["healthy","degraded","unhealthy"]},"timestamp":{"type":"string"},"uptime":{"type":"number"},"environment":{"type":"string"},"version":{"type":"string"},"services":{"type":"object","properties":{"database":{"type":"object","properties":{"status":{"type":"string","enum":["connected","disconnected"]},"responseTime":{"type":"number"}},"required":["status"]},"redis":{"type":"object","properties":{"status":{"type":"string","enum":["connected","disconnected"]},"responseTime":{"type":"number"}},"required":["status"]}},"required":["database","redis"]},"memory":{"type":"object","properties":{"used":{"type":"number"},"total":{"type":"number"},"percentage":{"type":"number"}},"required":["used","total","percentage"]}},"required":["status","timestamp","uptime","environment","version","services","memory"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v1/makers/validate":{"post":{"tags":["Maker (v1)"],"description":"Validate maker data using legacy depositData format. Use POST /v2/makers/validate for the new format.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"processorName":{"type":"string"},"depositData":{"type":"object","additionalProperties":{"nullable":true}}},"required":["processorName","depositData"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"boolean"},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v1/makers/create":{"post":{"tags":["Maker (v1)"],"description":"Create a new maker using legacy depositData format. Alipay has no legacy depositData shape. Use POST /v2/makers/create for the new format.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"processorName":{"type":"string"},"depositData":{"type":"object","additionalProperties":{"nullable":true}}},"required":["processorName","depositData"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v1/makers/{processorName}/{payeeDetails}":{"get":{"tags":["Maker (v1)"],"description":"Get maker data by processor and payee details in legacy format.","security":[],"parameters":[{"name":"processorName","in":"path","required":true,"schema":{"type":"string"}},{"name":"payeeDetails","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v1/v1/me/referral":{"get":{"tags":["Maker Referrals"],"security":[{"bearerAuth":[]}],"responses":{}}},"/v1/v1/me/referral/code":{"patch":{"tags":["Maker Referrals"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]}}}},"responses":{}}},"/v1/v1/redeem":{"post":{"tags":["Maker Referrals"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]}}}},"responses":{}}},"/v2/leaderboard":{"get":{"tags":["Leaderboard"],"summary":"Get paginated maker leaderboard","description":"Returns a paginated list of makers sorted by profit, volume, or liquidity. When window is not lifetime, totalAmountTaken and realizedProfitUsd are window-scoped while liquidity, success rate, and counts remain lifetime.","parameters":[{"name":"sortBy","in":"query","required":false,"schema":{"type":"string","enum":["profit","volume","liquidity"],"default":"profit"},"description":"Sort field: profit (realized profit), volume (filled volume), or liquidity (gross deposited)"},{"name":"sortOrder","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"description":"Sort direction"},{"name":"window","in":"query","required":false,"schema":{"type":"string","enum":["lifetime","7d","30d","90d"],"default":"lifetime"},"description":"Time window for volume and profit metrics"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Page size (max: 100)"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Pagination offset"}],"responses":{"200":{"description":"Leaderboard retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"$ref":"#/components/schemas/LeaderboardResponse"},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/leaderboard/summary":{"get":{"tags":["Leaderboard"],"summary":"Get aggregated leaderboard statistics","description":"Returns aggregate statistics across all makers including total profit, volume, deposits, and average success rate.","responses":{"200":{"description":"Summary retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"$ref":"#/components/schemas/SummaryResponse"},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/leaderboard/rank/{makerId}":{"get":{"tags":["Leaderboard"],"summary":"Get a maker's rank across all metrics","description":"Returns the maker's descending rank (1 = top) for profit, volume, and liquidity in a single call, plus the total maker count and the maker's row. When window is not lifetime, totalAmountTaken and realizedProfitUsd are window-scoped while liquidity, success rate, and counts remain lifetime.","parameters":[{"name":"makerId","in":"path","required":true,"schema":{"type":"string"},"description":"Composite maker ID in format: {chainId}_{makerAddress}","example":"8453_0x1234567890abcdef1234567890abcdef12345678"},{"name":"window","in":"query","required":false,"schema":{"type":"string","enum":["lifetime","7d","30d","90d"],"default":"lifetime"},"description":"Time window for volume and profit metrics"}],"responses":{"200":{"description":"Rank retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"$ref":"#/components/schemas/RankResponse"},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/leaderboard/maker/{makerId}":{"get":{"tags":["Leaderboard"],"summary":"Get detailed statistics for a single maker","description":"Returns comprehensive statistics for a specific maker including platform breakdowns, currency breakdowns, and recent profit snapshots.","parameters":[{"name":"makerId","in":"path","required":true,"schema":{"type":"string"},"description":"Composite maker ID in format: {chainId}_{makerAddress}","example":"8453_0x1234567890abcdef1234567890abcdef12345678"}],"responses":{"200":{"description":"Maker detail retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"$ref":"#/components/schemas/MakerDetailResponse"},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"404":{"description":"Maker not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number","enum":[404]}},"required":["success","message","responseObject","statusCode"]}}}}}}},"/v2/transaction-history/{chain}/{token}":{"get":{"tags":["Transaction History"],"summary":"Get Base USDC transfer history for authenticated wallet","description":"Returns all confirmed direct USDC transfers (ERC-20 Transfer events) for the authenticated wallet and given chain+token supported by this endpoint.","parameters":[{"schema":{"type":"string","description":"Readable chain key","example":"base"},"required":true,"name":"chain","in":"path"},{"schema":{"type":"string","description":"Readable symbol","example":"USDC"},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Transaction history retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"walletAddress":{"type":"string"},"chain":{"type":"string"},"chainId":{"type":"number"},"tokenContract":{"type":"string"},"assetTransfers":{"type":"array","items":{"type":"object","properties":{"chain":{"type":"string"},"tokenContract":{"type":"string"},"txHash":{"type":"string"},"blockNumber":{"type":"integer"},"timestamp":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"type":{"type":"string","enum":["SEND","DEPOSIT"],"description":"Transfer direction from the authenticated wallet perspective","example":"SEND"},"amountRaw":{"type":"string"},"amountFormatted":{"type":"string"}},"required":["chain","tokenContract","txHash","blockNumber","timestamp","from","to","type","amountRaw","amountFormatted"]}}},"required":["walletAddress","chain","chainId","tokenContract","assetTransfers"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"429":{"description":"Too many transaction history requests, please try again later.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/webhooks/privy":{"post":{"tags":["Webhooks"],"summary":"Receive Privy balance webhook","description":"Ingests Privy webhook payloads and stores canonical USDC transfer events after verifying webhook signature.","parameters":[{"name":"svix-id","in":"header","required":true,"schema":{"type":"string","description":"Svix message ID"}},{"name":"svix-timestamp","in":"header","required":true,"schema":{"type":"string","description":"Svix message timestamp"}},{"name":"svix-signature","in":"header","required":true,"schema":{"type":"string","description":"Svix signature"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"202":{"description":"Webhook accepted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{}},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/orderbook":{"get":{"tags":["Orderbook V2"],"description":"Fetch the denormalized orderbook for a fiat currency, including maker details when available. Set publicOnly=true to exclude whitelist-gated deposits.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency code","example":"USD"},"required":true,"name":"currency","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Optional payment platform filter","example":"venmo"},"required":false,"name":"paymentPlatform","in":"query"},{"schema":{"type":"string","enum":["price","available","limits","apr"],"default":"price","description":"Sort field","example":"price"},"required":false,"name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"description":"Optional sort direction. Defaults to asc for price and desc for available/limits/apr.","example":"asc"},"required":false,"name":"sortDirection","in":"query"},{"schema":{"type":"integer","nullable":true,"default":8453,"description":"Destination chain ID","example":8453},"required":false,"name":"chainId","in":"query"},{"schema":{"type":"string","default":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","description":"Destination token address","example":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"required":false,"name":"token","in":"query"},{"schema":{"type":"boolean","default":false,"description":"When true, exclude whitelist-gated deposits from the orderbook response","example":false},"required":false,"name":"publicOnly","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200,"description":"Maximum number of orderbook rows to return","example":200},"required":false,"name":"limit","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0,"description":"Number of matching rows to skip before returning entries","example":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","pattern":"^[0-9]+$","description":"Optional requested USDC amount used to filter rows by min, max, and available limits","example":"100"},"required":false,"name":"amount","in":"query"},{"schema":{"type":"boolean","default":false,"description":"When true, include rows whose available notional value is below the dust threshold","example":false},"required":false,"name":"showSmallOrders","in":"query"},{"schema":{"type":"boolean","default":true,"description":"When true, hide rows whose absolute spread exceeds the extreme-spread threshold","example":true},"required":false,"name":"hideExtremeSpread","in":"query"},{"schema":{"type":"string","enum":["include","exclude","only"],"default":"include","description":"Seller automated release filter. include returns all rows, exclude omits SAR rows, only returns SAR rows.","example":"exclude"},"required":false,"name":"sellerAutomatedRelease","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"chainId":{"type":"integer"},"token":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"paymentPlatform":{"type":"string","nullable":true},"publicOnly":{"type":"boolean","description":"Whether whitelist-gated deposits were excluded from this response","example":false},"sortBy":{"type":"string","enum":["price","available","limits","apr"]},"sortDirection":{"type":"string","enum":["asc","desc"]},"sellerAutomatedRelease":{"type":"string","enum":["include","exclude","only"]},"internalDetailsIncluded":{"type":"boolean"},"generatedAt":{"type":"string","format":"date-time","description":"Timestamp when curator generated the current orderbook snapshot. Responses may be served from cache and can reflect data from up to 60 seconds earlier.","example":"2026-04-09T00:00:00.000Z"},"entries":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer"},"depositIdOnContract":{"type":"string"},"depositId":{"type":"string"},"escrowAddress":{"type":"string"},"depositor":{"type":"string"},"token":{"type":"string"},"paymentMethodHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"paymentPlatform":{"type":"string"},"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"price":{"type":"string"},"apr":{"type":"number","nullable":true},"spread":{"type":"number","nullable":true},"conversionRate":{"type":"string"},"rateManagerId":{"type":"string","nullable":true},"availableTokenAmount":{"type":"string"},"availableFiatAmount":{"type":"string"},"intentAmountMin":{"type":"string"},"intentAmountMax":{"type":"string"},"minFiatSupported":{"type":"string"},"maxFiatSupported":{"type":"string"},"payeeDetailsHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"successRateBps":{"type":"integer","minimum":0,"maximum":10000},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"ZKP2P protocol fee in basis points, deducted from the delivered token amount at fulfillment. Clients can use it to show net output without recomputing it. Net token received = availableTokenAmount * (10000 - feeBps) / 10000. 0 when fee enforcement is disabled.","example":95},"sellerAutomatedReleaseAvailable":{"type":"boolean"},"sellerAutomatedReleaseEnabled":{"type":"boolean","description":"Whether seller automated release (autopilot) is enabled for this deposit's maker (the seller credential is active), independent of current liveness. sellerAutomatedReleaseAvailable is the stricter live check (active AND not expired).","example":true},"updatedAt":{"type":"string"},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"]}},"required":["chainId","depositIdOnContract","depositId","escrowAddress","depositor","token","paymentMethodHash","paymentPlatform","currencyCode","currency","price","apr","spread","conversionRate","rateManagerId","availableTokenAmount","availableFiatAmount","intentAmountMin","intentAmountMax","minFiatSupported","maxFiatSupported","payeeDetailsHash","successRateBps","feeBps","sellerAutomatedReleaseAvailable","sellerAutomatedReleaseEnabled","updatedAt"]}}},"required":["chainId","token","currency","paymentPlatform","publicOnly","sortBy","sortDirection","sellerAutomatedRelease","internalDetailsIncluded","generatedAt","entries"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/orderbook/table":{"get":{"tags":["Orderbook V2"],"description":"Fetch public orderbook rows in the table format, including pagination metadata and enriched pricing fields.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency code","example":"USD"},"required":true,"name":"currency","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Optional payment platform filter","example":"venmo"},"required":false,"name":"paymentPlatform","in":"query"},{"schema":{"type":"string","enum":["price","available","limits","apr"],"default":"price","description":"Sort field","example":"price"},"required":false,"name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"description":"Optional sort direction. Defaults to asc for price and desc for available/limits/apr.","example":"asc"},"required":false,"name":"sortDirection","in":"query"},{"schema":{"type":"integer","nullable":true,"default":8453,"description":"Destination chain ID","example":8453},"required":false,"name":"chainId","in":"query"},{"schema":{"type":"string","default":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","description":"Destination token address","example":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"required":false,"name":"token","in":"query"},{"schema":{"type":"boolean","default":false,"description":"When true, exclude whitelist-gated deposits from the orderbook response","example":false},"required":false,"name":"publicOnly","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200,"description":"Maximum number of orderbook rows to return","example":200},"required":false,"name":"limit","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0,"description":"Number of matching rows to skip before returning entries","example":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","pattern":"^[0-9]+$","description":"Optional requested USDC amount used to filter rows by min, max, and available limits","example":"100"},"required":false,"name":"amount","in":"query"},{"schema":{"type":"boolean","default":false,"description":"When true, include rows whose available notional value is below the dust threshold","example":false},"required":false,"name":"showSmallOrders","in":"query"},{"schema":{"type":"boolean","default":true,"description":"When true, hide rows whose absolute spread exceeds the extreme-spread threshold","example":true},"required":false,"name":"hideExtremeSpread","in":"query"},{"schema":{"type":"string","enum":["include","exclude","only"],"default":"include","description":"Seller automated release filter. include returns all rows, exclude omits SAR rows, only returns SAR rows.","example":"exclude"},"required":false,"name":"sellerAutomatedRelease","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"chainId":{"type":"integer"},"token":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"paymentPlatform":{"type":"string","nullable":true},"publicOnly":{"type":"boolean","description":"Whether whitelist-gated deposits were excluded from this response","example":false},"sortBy":{"type":"string","enum":["price","available","limits","apr"]},"sortDirection":{"type":"string","enum":["asc","desc"]},"sellerAutomatedRelease":{"type":"string","enum":["include","exclude","only"]},"generatedAt":{"type":"string","format":"date-time","description":"Timestamp when curator generated the current orderbook table snapshot. Responses may be served from cache and can reflect data from up to 60 seconds earlier.","example":"2026-04-09T00:00:00.000Z"},"pagination":{"type":"object","properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"total":{"type":"integer"},"hasMore":{"type":"boolean"}},"required":["limit","offset","total","hasMore"]},"rows":{"type":"array","items":{"type":"object","properties":{"depositId":{"type":"string"},"depositIdOnContract":{"type":"string"},"depositor":{"type":"string"},"escrowAddress":{"type":"string"},"chainId":{"type":"integer"},"token":{"type":"string"},"paymentPlatform":{"type":"string"},"paymentMethodHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"supportedMethodHashes":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"}},"payeeDetailsHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"conversionRate":{"type":"string"},"takerConversionRate":{"type":"string"},"rateManagerId":{"type":"string","nullable":true},"availableTokenAmount":{"type":"string"},"intentAmountMin":{"type":"string"},"intentAmountMax":{"type":"string"},"minFiatSupported":{"type":"string"},"maxFiatSupported":{"type":"string"},"successRateBps":{"type":"integer","minimum":0,"maximum":10000},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"ZKP2P protocol fee in basis points, deducted from the delivered token amount at fulfillment. Clients can use it to show net output without recomputing it. Net token received = availableTokenAmount * (10000 - feeBps) / 10000. 0 when fee enforcement is disabled.","example":95},"apr":{"type":"number","nullable":true},"spread":{"type":"number","nullable":true},"sellerAutomatedReleaseAvailable":{"type":"boolean"},"sellerAutomatedReleaseEnabled":{"type":"boolean","description":"Whether seller automated release (autopilot) is enabled for this deposit's maker (the seller credential is active), independent of current liveness. sellerAutomatedReleaseAvailable is the stricter live check (active AND not expired).","example":true},"isPrivate":{"type":"boolean"},"updatedAt":{"type":"string"}},"required":["depositId","depositIdOnContract","depositor","escrowAddress","chainId","token","paymentPlatform","paymentMethodHash","supportedMethodHashes","payeeDetailsHash","currency","currencyCode","conversionRate","takerConversionRate","rateManagerId","availableTokenAmount","intentAmountMin","intentAmountMax","minFiatSupported","maxFiatSupported","successRateBps","feeBps","apr","spread","sellerAutomatedReleaseAvailable","sellerAutomatedReleaseEnabled","isPrivate","updatedAt"]}}},"required":["chainId","token","currency","paymentPlatform","publicOnly","sortBy","sortDirection","sellerAutomatedRelease","generatedAt","pagination","rows"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/deposits/{depositId}/bundle":{"get":{"tags":["Deposits"],"summary":"Get a full deposit detail bundle","description":"Returns the deposit, intents, on-chain fund events, profit snapshots, fund activity, and daily snapshots in a single response.","parameters":[{"schema":{"type":"integer","nullable":true,"minimum":0},"required":false,"name":"depositId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"escrowAddress","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":366},"required":false,"name":"dailySnapshotLimit","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Bypass the short-lived server cache and refetch the bundle from the indexer","example":false},"required":false,"name":"forceRefresh","in":"query"}],"responses":{"200":{"description":"Deposit bundle retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"$ref":"#/components/schemas/DepositBundleResponse"},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/deposits/atomic-create":{"post":{"security":[{"bearerAuth":[]}],"tags":["Deposits"],"summary":"Atomically create and configure a deposit from a Privy embedded wallet","description":"Validates prepared calldata against fixed protocol targets, reserves the next EscrowV2 deposit id server-side, inserts that id into setup calls, and submits one sponsored wallet_sendCalls batch guarded by pre/post on-chain assertions.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid"},"calls":{"type":"object","properties":{"approve":{"type":"string","pattern":"^0x(?:[a-fA-F0-9]{2}){4,}$"},"createDeposit":{"type":"string","pattern":"^0x(?:[a-fA-F0-9]{2}){4,}$"},"setRateManager":{"type":"string","pattern":"^0x(?:[a-fA-F0-9]{2}){4,}$"},"configureDeposit":{"type":"string","pattern":"^0x(?:[a-fA-F0-9]{2}){4,}$"},"setDisputeProtectionEnabled":{"type":"string","pattern":"^0x(?:[a-fA-F0-9]{2}){4,}$"},"configureDeposits":{"type":"array","items":{"type":"string","pattern":"^0x(?:[a-fA-F0-9]{2}){4,}$"},"minItems":1,"maxItems":32},"setDisputeProtectionEnabledCalls":{"type":"array","items":{"type":"string","pattern":"^0x(?:[a-fA-F0-9]{2}){4,}$"},"minItems":1,"maxItems":32}},"required":["createDeposit"],"additionalProperties":false}},"required":["requestId","calls"],"additionalProperties":false}}}},"responses":{"201":{"description":"Atomic deposit created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"depositId":{"type":"string","pattern":"^\\d+$"},"escrowAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"}},"required":["chainId","depositId","escrowAddress","transactionHash"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"400":{"description":"Invalid or unsafe calldata","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"404":{"description":"Embedded wallet not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"409":{"description":"requestId payload conflict","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"502":{"description":"Atomic deposit submission failed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"503":{"description":"Atomic deposit temporarily unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/deposits/atomic-create/{requestId}":{"get":{"security":[{"bearerAuth":[]}],"tags":["Deposits"],"summary":"Get the authenticated caller's atomic deposit request status","description":"Resolves an idempotent request id to its reserved deposit id and, once confirmed, the final transaction hash.","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"requestId","in":"path"}],"responses":{"200":{"description":"Atomic deposit request status","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","enum":["pending"]},"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"depositId":{"type":"string","pattern":"^\\d+$"},"escrowAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"transactionHash":{"nullable":true}},"required":["status","chainId","depositId","escrowAddress","transactionHash"]},{"type":"object","properties":{"status":{"type":"string","enum":["confirmed"]},"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"depositId":{"type":"string","pattern":"^\\d+$"},"escrowAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"}},"required":["status","chainId","depositId","escrowAddress","transactionHash"]}]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"404":{"description":"Atomic deposit request not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"503":{"description":"Atomic deposit status temporarily unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/referral":{"get":{"tags":["Maker Referrals V2"],"description":"Public when ?address= is provided (Authorization ignored); bearer-token mode without address returns the caller's own data.","security":[{"bearerAuth":[]},{}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"address","in":"query"}],"responses":{}}},"/v2/referral/earnings":{"get":{"tags":["Maker Referrals V2"],"description":"Public when ?address= is provided (Authorization ignored); bearer-token mode without address returns the caller's own data.","security":[{"bearerAuth":[]},{}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"address","in":"query"}],"responses":{}}},"/v2/referral/code/{code}":{"get":{"tags":["Maker Referrals V2"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":32},"required":true,"name":"code","in":"path"}],"responses":{}}},"/v2/referral/code":{"post":{"tags":["Maker Referrals V2"],"description":"Authenticate with EITHER a Privy bearer token OR the signature body object -- providing both or neither is a 400.","security":[{"bearerAuth":[]},{}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"signature":{"type":"object","properties":{"walletAddress":{"type":"string"},"signature":{"type":"string","maxLength":66000,"pattern":"^0x[0-9a-fA-F]+$"},"issuedAt":{"type":"integer","minimum":0,"exclusiveMinimum":true},"audience":{"type":"string","minLength":1,"maxLength":64}},"required":["walletAddress","signature","issuedAt","audience"]}},"default":{}}}}},"responses":{}},"patch":{"tags":["Maker Referrals V2"],"description":"Authenticate with EITHER a Privy bearer token OR the signature body object -- providing both or neither is a 400.","security":[{"bearerAuth":[]},{}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1},"signature":{"type":"object","properties":{"walletAddress":{"type":"string"},"signature":{"type":"string","maxLength":66000,"pattern":"^0x[0-9a-fA-F]+$"},"issuedAt":{"type":"integer","minimum":0,"exclusiveMinimum":true},"audience":{"type":"string","minLength":1,"maxLength":64},"oldCode":{"type":"string","pattern":"^[A-Z0-9]{6}$"}},"required":["walletAddress","signature","issuedAt","audience","oldCode"]}},"required":["code"]}}}},"responses":{}}},"/v2/referral/redeem":{"post":{"tags":["Maker Referrals V2"],"description":"Authenticate with EITHER a Privy bearer token OR the signature body object -- providing both or neither is a 400.","security":[{"bearerAuth":[]},{}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1},"signature":{"type":"object","properties":{"walletAddress":{"type":"string"},"signature":{"type":"string","maxLength":66000,"pattern":"^0x[0-9a-fA-F]+$"},"issuedAt":{"type":"integer","minimum":0,"exclusiveMinimum":true},"audience":{"type":"string","minLength":1,"maxLength":64},"referrer":{"type":"string"}},"required":["walletAddress","signature","issuedAt","audience","referrer"]}},"required":["code"]}}}},"responses":{}}},"/v2/earn/deposit":{"get":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"responses":{"200":{"description":"Earn deposit retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"status":{"type":"string","enum":["NONE","PENDING","ACTIVE","CLOSING","FAILED"]},"depositId":{"type":"string","nullable":true},"walletAddress":{"type":"string","nullable":true},"autoSweepEnabled":{"type":"boolean"},"autoSweepMinAmount":{"type":"string"},"trustedTakerEnabled":{"type":"boolean"},"oracleSpreadBps":{"type":"integer","nullable":true},"failureCode":{"type":"string","nullable":true,"enum":["AMOUNT_BELOW_MIN","UNSUPPORTED_PROCESSOR","ON_CHAIN_REVERT","TX_TIMEOUT","INTERNAL"]},"failureMessage":{"type":"string","nullable":true},"maxIntentAmount":{"type":"string"},"minIntentAmount":{"type":"string"},"failureDetail":{"type":"string","nullable":true},"depositStats":{"type":"object","nullable":true,"properties":{"pnlUsdCents":{"type":"number"},"pnlReturnBps":{"type":"number"},"aprBps":{"type":"number"},"idleBalance":{"type":"string"},"inFlightBalance":{"type":"string"},"totalInEscrow":{"type":"string"},"totalVolume":{"type":"string"},"fulfilledOrders":{"type":"number"},"successRateBps":{"type":"number"},"utilizationBps":{"type":"number"},"avgOrderSizeUsdc":{"type":"string","nullable":true},"depositAgeDays":{"type":"number"}},"required":["pnlUsdCents","pnlReturnBps","aprBps","idleBalance","inFlightBalance","totalInEscrow","totalVolume","fulfilledOrders","successRateBps","utilizationBps","avgOrderSizeUsdc","depositAgeDays"]}},"required":["status","depositId","walletAddress","autoSweepEnabled","autoSweepMinAmount","trustedTakerEnabled","oracleSpreadBps","failureCode","failureMessage","maxIntentAmount","minIntentAmount","failureDetail","depositStats"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}},"post":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"responses":{"410":{"description":"Earn deposit creation discontinued","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/earn/payment-methods":{"post":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"object","additionalProperties":{"nullable":true}},"offchainId":{"type":"string","minLength":1},"processorName":{"type":"string","minLength":1},"spreadBps":{"type":"integer","minimum":0,"maximum":5000}},"required":["offchainId","processorName"],"additionalProperties":false}}}},"responses":{"200":{"description":"Earn payment method added","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"depositId":{"type":"string"},"paymentMethod":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"txHash":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]{64}$"},"whitelistEnrolled":{"type":"boolean"}},"required":["depositId","paymentMethod","txHash","whitelistEnrolled"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"202":{"description":"Earn payment method enrollment submitted but unconfirmed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"depositId":{"type":"string"},"paymentMethod":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"txHash":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]{64}$"},"whitelistEnrolled":{"type":"boolean"}},"required":["depositId","paymentMethod","txHash","whitelistEnrolled"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"400":{"description":"Earn payment method request invalid","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"409":{"description":"Earn deposit update conflict","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"502":{"description":"Earn payment method upstream failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/earn/payment-methods/{platform}/deactivate":{"post":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"platform","in":"path"}],"responses":{"200":{"description":"Earn payment method deactivated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"depositId":{"type":"string"},"paymentMethod":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"txHash":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]{64}$"},"whitelistEnrolled":{"type":"boolean"},"activePaymentMethods":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"}}},"required":["depositId","paymentMethod","txHash","whitelistEnrolled","activePaymentMethods"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"202":{"description":"Earn payment method deactivation or policy update submitted but unconfirmed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"depositId":{"type":"string"},"paymentMethod":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"txHash":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]{64}$"},"whitelistEnrolled":{"type":"boolean"},"activePaymentMethods":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"}}},"required":["depositId","paymentMethod","txHash","whitelistEnrolled","activePaymentMethods"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"400":{"description":"Earn payment method request invalid","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"409":{"description":"Earn deposit update conflict","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"502":{"description":"Earn payment method upstream failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/earn/config":{"patch":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"autoSweepEnabled":{"type":"boolean"},"autoSweepMinAmount":{"type":"string","pattern":"^[0-9]+$"}}}}}},"responses":{"200":{"description":"Earn config updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"status":{"type":"string","enum":["NONE","PENDING","ACTIVE","CLOSING","FAILED"]},"depositId":{"type":"string","nullable":true},"walletAddress":{"type":"string","nullable":true},"autoSweepEnabled":{"type":"boolean"},"autoSweepMinAmount":{"type":"string"},"trustedTakerEnabled":{"type":"boolean"},"oracleSpreadBps":{"type":"integer","nullable":true},"failureCode":{"type":"string","nullable":true,"enum":["AMOUNT_BELOW_MIN","UNSUPPORTED_PROCESSOR","ON_CHAIN_REVERT","TX_TIMEOUT","INTERNAL"]},"failureMessage":{"type":"string","nullable":true},"maxIntentAmount":{"type":"string"},"minIntentAmount":{"type":"string"},"failureDetail":{"type":"string","nullable":true},"depositStats":{"type":"object","nullable":true,"properties":{"pnlUsdCents":{"type":"number"},"pnlReturnBps":{"type":"number"},"aprBps":{"type":"number"},"idleBalance":{"type":"string"},"inFlightBalance":{"type":"string"},"totalInEscrow":{"type":"string"},"totalVolume":{"type":"string"},"fulfilledOrders":{"type":"number"},"successRateBps":{"type":"number"},"utilizationBps":{"type":"number"},"avgOrderSizeUsdc":{"type":"string","nullable":true},"depositAgeDays":{"type":"number"}},"required":["pnlUsdCents","pnlReturnBps","aprBps","idleBalance","inFlightBalance","totalInEscrow","totalVolume","fulfilledOrders","successRateBps","utilizationBps","avgOrderSizeUsdc","depositAgeDays"]}},"required":["status","depositId","walletAddress","autoSweepEnabled","autoSweepMinAmount","trustedTakerEnabled","oracleSpreadBps","failureCode","failureMessage","maxIntentAmount","minIntentAmount","failureDetail","depositStats"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"400":{"description":"Earn config update not applied","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"404":{"description":"Earn deposit not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"409":{"description":"Earn deposit update conflict","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"502":{"description":"Earn config update upstream failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}},"get":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"responses":{"200":{"description":"Earn config retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"minDepositAmount":{"type":"string","description":"Minimum earn deposit amount in USDC base units (6-decimal micros).","example":"25000000"},"intentAmount":{"type":"object","properties":{"defaultMax":{"type":"string"},"defaultMin":{"type":"string"}},"required":["defaultMax","defaultMin"]},"spreadBps":{"type":"object","properties":{"min":{"type":"integer"},"max":{"type":"integer"},"default":{"type":"integer"}},"required":["min","max","default"]}},"required":["minDepositAmount","intentAmount","spreadBps"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/earn/spread":{"patch":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"spreadBps":{"type":"integer","minimum":0,"maximum":5000}},"required":["spreadBps"]}}}},"responses":{"200":{"description":"Earn spread updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"depositId":{"type":"string"},"spreadBps":{"type":"integer"},"txHash":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]{64}$"}},"required":["depositId","spreadBps","txHash"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"202":{"description":"Earn spread update pending - verify via GET","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"depositId":{"type":"string"},"spreadBps":{"type":"integer"},"txHash":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]{64}$"}},"required":["depositId","spreadBps","txHash"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"400":{"description":"Earn spread update not applied","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"409":{"description":"Earn deposit update conflict","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"502":{"description":"Earn spread update upstream failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/earn/intent-range":{"patch":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"maxIntentAmount":{"type":"string","pattern":"^[0-9]+$"},"minIntentAmount":{"type":"string","pattern":"^[0-9]+$"}},"required":["maxIntentAmount","minIntentAmount"]}}}},"responses":{"200":{"description":"Earn intent range updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"depositId":{"type":"string"},"maxIntentAmount":{"type":"string"},"minIntentAmount":{"type":"string"},"txHash":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]{64}$"}},"required":["depositId","maxIntentAmount","minIntentAmount","txHash"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"202":{"description":"Earn intent range update pending - verify via GET","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"depositId":{"type":"string"},"maxIntentAmount":{"type":"string"},"minIntentAmount":{"type":"string"},"txHash":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]{64}$"}},"required":["depositId","maxIntentAmount","minIntentAmount","txHash"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"400":{"description":"Earn intent range update not applied","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"409":{"description":"Earn deposit update conflict","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"502":{"description":"Earn intent range update upstream failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/earn/close":{"post":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"responses":{"202":{"description":"Earn deposit close started","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"status":{"type":"string","enum":["NONE","PENDING","ACTIVE","CLOSING","FAILED"]},"depositId":{"type":"string","nullable":true},"walletAddress":{"type":"string","nullable":true},"autoSweepEnabled":{"type":"boolean"},"autoSweepMinAmount":{"type":"string"},"trustedTakerEnabled":{"type":"boolean"},"oracleSpreadBps":{"type":"integer","nullable":true},"failureCode":{"type":"string","nullable":true,"enum":["AMOUNT_BELOW_MIN","UNSUPPORTED_PROCESSOR","ON_CHAIN_REVERT","TX_TIMEOUT","INTERNAL"]},"failureMessage":{"type":"string","nullable":true},"maxIntentAmount":{"type":"string"},"minIntentAmount":{"type":"string"},"failureDetail":{"type":"string","nullable":true},"depositStats":{"type":"object","nullable":true,"properties":{"pnlUsdCents":{"type":"number"},"pnlReturnBps":{"type":"number"},"aprBps":{"type":"number"},"idleBalance":{"type":"string"},"inFlightBalance":{"type":"string"},"totalInEscrow":{"type":"string"},"totalVolume":{"type":"string"},"fulfilledOrders":{"type":"number"},"successRateBps":{"type":"number"},"utilizationBps":{"type":"number"},"avgOrderSizeUsdc":{"type":"string","nullable":true},"depositAgeDays":{"type":"number"}},"required":["pnlUsdCents","pnlReturnBps","aprBps","idleBalance","inFlightBalance","totalInEscrow","totalVolume","fulfilledOrders","successRateBps","utilizationBps","avgOrderSizeUsdc","depositAgeDays"]}},"required":["status","depositId","walletAddress","autoSweepEnabled","autoSweepMinAmount","trustedTakerEnabled","oracleSpreadBps","failureCode","failureMessage","maxIntentAmount","minIntentAmount","failureDetail","depositStats"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/earn/relay-address":{"post":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"inputToken":{"type":"string"},"inputChainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"inputTokenDecimals":{"type":"integer","minimum":0,"maximum":36}},"required":["inputToken","inputChainId"]}}}},"responses":{"200":{"description":"Earn relay address retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"relayDepositAddress":{"type":"string"}},"required":["relayDepositAddress"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/earn/onramp/coinbase":{"post":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"paymentAmount":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"},"paymentCurrency":{"type":"string","enum":["USD","EUR"],"default":"USD"},"country":{"type":"string","nullable":true,"minLength":2,"maxLength":3},"subdivision":{"type":"string","nullable":true,"minLength":1,"maxLength":20},"redirectUrl":{"type":"string","nullable":true,"minLength":1}},"required":["paymentAmount"],"additionalProperties":false}}}},"responses":{"201":{"description":"Coinbase onramp session created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"onrampUrl":{"type":"string","format":"uri"},"purchaseAmountUsdc":{"type":"string","nullable":true}},"required":["onrampUrl","purchaseAmountUsdc"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/earn/platform-stats":{"get":{"security":[{"bearerAuth":[]}],"tags":["Earn"],"responses":{"200":{"description":"Earn platform stats retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"windowDays":{"type":"number","enum":[30]},"computedAt":{"type":"string","format":"date-time"},"caller":{"type":"object","properties":{"configuredSpreadBps":{"type":"integer","nullable":true}},"required":["configuredSpreadBps"]},"vault":{"type":"object","properties":{"rateManagerId":{"type":"string"},"feeBps":{"type":"integer","nullable":true},"realizedAprBps":{"type":"integer","nullable":true},"volume30d":{"type":"string"},"avgCapitalUsdCents":{"type":"string"},"configuredSpreadBps":{"type":"integer"}},"required":["rateManagerId","feeBps","realizedAprBps","volume30d","avgCapitalUsdCents","configuredSpreadBps"]},"platforms":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string"},"volume30d":{"type":"string"},"fillCount30d":{"type":"integer","minimum":0},"avgCapitalUsdCents":{"type":"string"},"realizedMarginBps":{"type":"integer","nullable":true},"avgFillTimeSeconds":{"type":"integer","nullable":true},"medianFillTimeSeconds":{"type":"integer","nullable":true},"avgDaysToFill":{"type":"number","nullable":true},"estAprBps":{"type":"integer","nullable":true},"currencies":{"type":"array","items":{"type":"object","properties":{"currencyCode":{"type":"string"},"onchainRate1e18":{"type":"string"},"marketRate1e18":{"type":"string","nullable":true},"vaultSpreadBps":{"type":"integer","nullable":true},"effectiveSpreadBps":{"type":"integer","nullable":true}},"required":["currencyCode","onchainRate1e18","marketRate1e18","vaultSpreadBps","effectiveSpreadBps"]}}},"required":["platform","volume30d","fillCount30d","avgCapitalUsdCents","realizedMarginBps","avgFillTimeSeconds","medianFillTimeSeconds","avgDaysToFill","estAprBps","currencies"]}}},"required":["windowDays","computedAt","caller","vault","platforms"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/compliance/wallet-screening":{"post":{"tags":["Compliance"],"security":[{"apiKeyAuth":[]},{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"walletAddress":{"type":"string"},"context":{"type":"string","maxLength":128}},"required":["walletAddress"]}}}},"responses":{"200":{"description":"Wallet screening result","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"walletAddress":{"type":"string"},"allowed":{"type":"boolean"},"blocked":{"type":"boolean"},"source":{"type":"string","enum":["disabled","blocked_wallet","chainalysis","unavailable"]}},"required":["walletAddress","allowed","blocked","source"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/me":{"get":{"tags":["Maker Profile"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Maker profile fetched","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"profile":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"privyUserId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","privyUserId","telegramUsername","createdAt","updatedAt"]},"connectedAccounts":{"type":"array","items":{"type":"object","properties":{"sellerCredentialId":{"type":"integer"},"makerId":{"type":"integer"},"platform":{"type":"string"},"payeeIdHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"offchainId":{"type":"string"},"isBusiness":{"type":"boolean"},"revoked":{"type":"boolean"},"credentialStatus":{"type":"string","enum":["active","inactive"]},"credentialType":{"type":"string"}},"required":["sellerCredentialId","makerId","platform","payeeIdHash","offchainId","isBusiness","revoked","credentialStatus","credentialType"]}}},"required":["profile","connectedAccounts"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}},"patch":{"tags":["Maker Profile"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"telegramUsername":{"anyOf":[{"type":"string","maxLength":64},{"nullable":true},{"nullable":true}]}},"required":["telegramUsername"]}}}},"responses":{"200":{"description":"Maker profile updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"profile":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"privyUserId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","privyUserId","telegramUsername","createdAt","updatedAt"]},"connectedAccounts":{"type":"array","items":{"type":"object","properties":{"sellerCredentialId":{"type":"integer"},"makerId":{"type":"integer"},"platform":{"type":"string"},"payeeIdHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"offchainId":{"type":"string"},"isBusiness":{"type":"boolean"},"revoked":{"type":"boolean"},"credentialStatus":{"type":"string","enum":["active","inactive"]},"credentialType":{"type":"string"}},"required":["sellerCredentialId","makerId","platform","payeeIdHash","offchainId","isBusiness","revoked","credentialStatus","credentialType"]}}},"required":["profile","connectedAccounts"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/quote/exact-token":{"post":{"tags":["Quotes V2"],"description":"Quote minimum fiat input for an exact token output amount.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"paymentPlatforms":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Payment platforms"},"fiatCurrency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency"},"user":{"type":"string","description":"User submitting transactions"},"recipient":{"type":"string","description":"Final recipient address"},"destinationChainId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Destination chain ID"},"destinationToken":{"type":"string","description":"Destination token address"},"referrer":{"type":"string","description":"Referrer"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string","description":"Referral fee recipient address"},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Referral fee in basis points"}},"required":["recipient","feeBps"]},"maxItems":5,"description":"Caller-provided referral fees that will be sent at intent time. Curator uses the sum to gross up signalIntentAmount, and uses the entry whose recipient matches serviceFee.recipient as the donor for maker-referrer carve."},"useMultihop":{"type":"boolean","description":"Use multihop from a base asset"},"escrowAddresses":{"type":"array","items":{"type":"string"},"minItems":1,"description":"List of escrow contract addresses to search (e.g., ['0xabc...', '0xdef...'])."},"supportBusinessAccounts":{"type":"boolean","description":"Whether quotes may include business accounts (default: false)"},"minDepositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Minimum historical deposit success rate in basis points (0–10000). Defaults to 0 when omitted"},"intentGatingService":{"type":"string","description":"Optional intent gating service address. When provided, only quotes from that service are returned."},"includePrivateOrderbooks":{"type":"boolean","default":false,"description":"Include whitelist-gated private orderbook deposits (default: false)"},"maxTakerConversionRate":{"type":"string","pattern":"^\\d+$","description":"Maximum acceptable taker conversion rate, scaled by 1e18. Candidates quoting above this are excluded from both exact and nearby searches. Omit for no ceiling."},"quotePreference":{"type":"string","enum":["EXCLUSIVE_SAR","PREFER_SAR","PREFER_BUYER_TEE","EXCLUSIVE_BUYER_TEE"],"description":"Preferred quote pool and fallback behavior"},"excludedPayToValues":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Payee values to exclude from quote selection"},"exactTokenAmount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Exact amount of tokens user wants to receive"},"includeNearbyQuotes":{"type":"boolean","default":false,"description":"Include nearby quote suggestions when no exact match"},"nearbySearchRange":{"type":"number","minimum":1,"maximum":100,"description":"Max percentage deviation to search (1-100%). Unlimited if omitted"},"nearbyQuotesCount":{"type":"number","minimum":1,"maximum":10,"default":3,"description":"Max quotes per direction (default: 3, max: 10)"}},"required":["paymentPlatforms","fiatCurrency","user","recipient","destinationChainId","destinationToken","escrowAddresses","exactTokenAmount"],"description":"Request for quoting minimum fiat input for an exact token output"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"fiat":{"type":"object","properties":{"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$","description":"Hashed fiat currency code"},"currencyName":{"type":"string","description":"Fiat currency name"},"currencySymbol":{"type":"string","description":"Fiat currency symbol"},"countryCode":{"type":"string","description":"Fiat currency country code"}},"required":["currencyCode","currencyName","currencySymbol","countryCode"]},"token":{"type":"object","properties":{"token":{"type":"string","description":"Token address"},"decimals":{"type":"number","description":"Token amount decimals"},"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"chainId":{"type":"number","description":"Chain ID"}},"required":["token","decimals","name","symbol","chainId"]},"quotes":{"type":"array","items":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","intent"]}},"fees":{"type":"object","properties":{"zkp2pFee":{"type":"string","description":"Service fee in preciseUnits (1e18 = 100%, 1e16 = 1%). '0' when disabled."},"zkp2pFeeFormatted":{"type":"string","description":"Service fee as human-readable percentage (e.g. '1%')"},"swapFee":{"type":"string","description":"Swap fee"},"swapFeeFormatted":{"type":"string","description":"Swap fee formatted"}},"required":["zkp2pFee","zkp2pFeeFormatted","swapFee","swapFeeFormatted"]},"nearbySuggestions":{"type":"object","properties":{"below":{"type":"array","items":{"type":"object","properties":{"suggestedTokenAmount":{"type":"string","description":"Suggested token amount to request (raw, for exact-token mode)"},"suggestedTokenAmountFormatted":{"type":"string","description":"Human-readable suggested token amount"},"tokenPercentDifference":{"type":"string","description":"Token amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"suggestedFiatAmount":{"type":"string","description":"Suggested fiat amount to request (raw, for exact-fiat mode)"},"suggestedFiatAmountFormatted":{"type":"string","description":"Human-readable suggested fiat amount"},"fiatPercentDifference":{"type":"string","description":"Fiat amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"quote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","intent"],"description":"Full quote details at the suggested amount"}},"required":["quote"]},"description":"Quotes for amounts below requested (sorted by amount DESC, closest first)"},"above":{"type":"array","items":{"type":"object","properties":{"suggestedTokenAmount":{"type":"string","description":"Suggested token amount to request (raw, for exact-token mode)"},"suggestedTokenAmountFormatted":{"type":"string","description":"Human-readable suggested token amount"},"tokenPercentDifference":{"type":"string","description":"Token amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"suggestedFiatAmount":{"type":"string","description":"Suggested fiat amount to request (raw, for exact-fiat mode)"},"suggestedFiatAmountFormatted":{"type":"string","description":"Human-readable suggested fiat amount"},"fiatPercentDifference":{"type":"string","description":"Fiat amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"quote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","intent"],"description":"Full quote details at the suggested amount"}},"required":["quote"]},"description":"Quotes for amounts above requested (sorted by amount ASC, closest first)"}},"required":["below","above"],"description":"Nearby quote suggestions when no exact match found"},"quoteExpiresAt":{"type":"string","description":"ISO 8601 timestamp after which the quote should be re-fetched"}},"required":["fiat","token","quotes","fees","quoteExpiresAt"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/quote/exact-fiat":{"post":{"tags":["Quotes V2"],"description":"Quote maximum token output for an exact fiat input amount.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"paymentPlatforms":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Payment platforms"},"fiatCurrency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency"},"user":{"type":"string","description":"User submitting transactions"},"recipient":{"type":"string","description":"Final recipient address"},"destinationChainId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Destination chain ID"},"destinationToken":{"type":"string","description":"Destination token address"},"referrer":{"type":"string","description":"Referrer"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string","description":"Referral fee recipient address"},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Referral fee in basis points"}},"required":["recipient","feeBps"]},"maxItems":5,"description":"Caller-provided referral fees that will be sent at intent time. Curator uses the sum to gross up signalIntentAmount, and uses the entry whose recipient matches serviceFee.recipient as the donor for maker-referrer carve."},"useMultihop":{"type":"boolean","description":"Use multihop from a base asset"},"escrowAddresses":{"type":"array","items":{"type":"string"},"minItems":1,"description":"List of escrow contract addresses to search (e.g., ['0xabc...', '0xdef...'])."},"supportBusinessAccounts":{"type":"boolean","description":"Whether quotes may include business accounts (default: false)"},"minDepositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Minimum historical deposit success rate in basis points (0–10000). Defaults to 0 when omitted"},"intentGatingService":{"type":"string","description":"Optional intent gating service address. When provided, only quotes from that service are returned."},"includePrivateOrderbooks":{"type":"boolean","default":false,"description":"Include whitelist-gated private orderbook deposits (default: false)"},"maxTakerConversionRate":{"type":"string","pattern":"^\\d+$","description":"Maximum acceptable taker conversion rate, scaled by 1e18. Candidates quoting above this are excluded from both exact and nearby searches. Omit for no ceiling."},"quotePreference":{"type":"string","enum":["EXCLUSIVE_SAR","PREFER_SAR","PREFER_BUYER_TEE","EXCLUSIVE_BUYER_TEE"],"description":"Preferred quote pool and fallback behavior"},"excludedPayToValues":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Payee values to exclude from quote selection"},"exactFiatAmount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Exact fiat amount user wants to send"},"includeNearbyQuotes":{"type":"boolean","default":false,"description":"Include nearby quote suggestions when no exact match"},"nearbySearchRange":{"type":"number","minimum":1,"maximum":100,"description":"Max percentage deviation to search (1-100%). Unlimited if omitted"},"nearbyQuotesCount":{"type":"number","minimum":1,"maximum":10,"default":3,"description":"Max quotes per direction (default: 3, max: 10)"}},"required":["paymentPlatforms","fiatCurrency","user","recipient","destinationChainId","destinationToken","escrowAddresses","exactFiatAmount"],"description":"Request for quoting maximum token output for an exact fiat input"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"fiat":{"type":"object","properties":{"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$","description":"Hashed fiat currency code"},"currencyName":{"type":"string","description":"Fiat currency name"},"currencySymbol":{"type":"string","description":"Fiat currency symbol"},"countryCode":{"type":"string","description":"Fiat currency country code"}},"required":["currencyCode","currencyName","currencySymbol","countryCode"]},"token":{"type":"object","properties":{"token":{"type":"string","description":"Token address"},"decimals":{"type":"number","description":"Token amount decimals"},"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"chainId":{"type":"number","description":"Chain ID"}},"required":["token","decimals","name","symbol","chainId"]},"quotes":{"type":"array","items":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","intent"]}},"fees":{"type":"object","properties":{"zkp2pFee":{"type":"string","description":"Service fee in preciseUnits (1e18 = 100%, 1e16 = 1%). '0' when disabled."},"zkp2pFeeFormatted":{"type":"string","description":"Service fee as human-readable percentage (e.g. '1%')"},"swapFee":{"type":"string","description":"Swap fee"},"swapFeeFormatted":{"type":"string","description":"Swap fee formatted"}},"required":["zkp2pFee","zkp2pFeeFormatted","swapFee","swapFeeFormatted"]},"nearbySuggestions":{"type":"object","properties":{"below":{"type":"array","items":{"type":"object","properties":{"suggestedTokenAmount":{"type":"string","description":"Suggested token amount to request (raw, for exact-token mode)"},"suggestedTokenAmountFormatted":{"type":"string","description":"Human-readable suggested token amount"},"tokenPercentDifference":{"type":"string","description":"Token amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"suggestedFiatAmount":{"type":"string","description":"Suggested fiat amount to request (raw, for exact-fiat mode)"},"suggestedFiatAmountFormatted":{"type":"string","description":"Human-readable suggested fiat amount"},"fiatPercentDifference":{"type":"string","description":"Fiat amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"quote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","intent"],"description":"Full quote details at the suggested amount"}},"required":["quote"]},"description":"Quotes for amounts below requested (sorted by amount DESC, closest first)"},"above":{"type":"array","items":{"type":"object","properties":{"suggestedTokenAmount":{"type":"string","description":"Suggested token amount to request (raw, for exact-token mode)"},"suggestedTokenAmountFormatted":{"type":"string","description":"Human-readable suggested token amount"},"tokenPercentDifference":{"type":"string","description":"Token amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"suggestedFiatAmount":{"type":"string","description":"Suggested fiat amount to request (raw, for exact-fiat mode)"},"suggestedFiatAmountFormatted":{"type":"string","description":"Human-readable suggested fiat amount"},"fiatPercentDifference":{"type":"string","description":"Fiat amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"quote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","intent"],"description":"Full quote details at the suggested amount"}},"required":["quote"]},"description":"Quotes for amounts above requested (sorted by amount ASC, closest first)"}},"required":["below","above"],"description":"Nearby quote suggestions when no exact match found"},"quoteExpiresAt":{"type":"string","description":"ISO 8601 timestamp after which the quote should be re-fetched"}},"required":["fiat","token","quotes","fees","quoteExpiresAt"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/quote/best-by-platform":{"post":{"tags":["Quotes V2"],"description":"Best quote per payment platform for an exact fiat amount.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"fiatCurrency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency code (e.g., 'USD', 'EUR')"},"exactFiatAmount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Exact fiat amount in token units (e.g., '100000000' = $100)"},"user":{"type":"string","description":"User's Ethereum address (excluded from quotes)"},"recipient":{"type":"string","description":"Recipient Ethereum address"},"destinationChainId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Destination chain ID (e.g., 8453 for Base)"},"destinationToken":{"type":"string","description":"Token address (e.g., USDC on Base)"},"referrer":{"type":"string","description":"Optional referrer address"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string","description":"Referral fee recipient address"},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Referral fee in basis points"}},"required":["recipient","feeBps"]},"maxItems":5,"description":"Caller-provided referral fees that will be sent at intent time. Curator uses the sum to gross up signalIntentAmount, and uses the entry whose recipient matches serviceFee.recipient as the donor for maker-referrer carve."},"escrowAddresses":{"type":"array","items":{"type":"string"},"minItems":1,"description":"List of escrow contract addresses to search"},"minDepositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Minimum maker success rate in basis points (0-10000)"},"supportBusinessAccounts":{"type":"boolean","description":"Include business accounts in quotes (default: false)"},"intentGatingService":{"type":"string","description":"Optional intent gating service address. When provided, only quotes from that service are returned."},"includePrivateOrderbooks":{"type":"boolean","default":false,"description":"Include whitelist-gated private orderbook deposits (default: false)"},"quotePreference":{"type":"string","enum":["EXCLUSIVE_SAR","PREFER_SAR","PREFER_BUYER_TEE","EXCLUSIVE_BUYER_TEE"],"description":"Preferred quote pool and fallback behavior"},"excludedPayToValues":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Payee values to exclude from quote selection"}},"required":["fiatCurrency","exactFiatAmount","user","recipient","destinationChainId","destinationToken","escrowAddresses"],"description":"Request for best quote per payment platform"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"fiat":{"type":"object","properties":{"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$","description":"Hashed fiat currency code"},"currencyName":{"type":"string","description":"Fiat currency name"},"currencySymbol":{"type":"string","description":"Fiat currency symbol"},"countryCode":{"type":"string","description":"Fiat currency country code"}},"required":["currencyCode","currencyName","currencySymbol","countryCode"]},"token":{"type":"object","properties":{"token":{"type":"string","description":"Token address"},"decimals":{"type":"number","description":"Token amount decimals"},"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"chainId":{"type":"number","description":"Chain ID"}},"required":["token","decimals","name","symbol","chainId"]},"fees":{"type":"object","properties":{"zkp2pFee":{"type":"string","description":"Service fee in preciseUnits (1e18 = 100%, 1e16 = 1%). '0' when disabled."},"zkp2pFeeFormatted":{"type":"string","description":"Service fee as human-readable percentage (e.g. '1%')"},"swapFee":{"type":"string","description":"Swap fee"},"swapFeeFormatted":{"type":"string","description":"Swap fee formatted"}},"required":["zkp2pFee","zkp2pFeeFormatted","swapFee","swapFeeFormatted"]},"platformQuotes":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","description":"Payment platform name"},"supported":{"type":"boolean","description":"Whether this platform supports the requested currency"},"available":{"type":"boolean","description":"Whether a quote is available for this platform"},"bestQuote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","intent"],"description":"Best quote for this platform, if available"}},"required":["platform","supported","available"]},"description":"Best quote per payment platform"},"quoteExpiresAt":{"type":"string","description":"ISO 8601 timestamp after which the quote should be re-fetched"}},"required":["fiat","token","fees","platformQuotes","quoteExpiresAt"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/quote/best-by-platform-exact-token":{"post":{"tags":["Quotes V2"],"description":"Best quote per payment platform for an exact token amount.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"fiatCurrency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency code (e.g., 'USD', 'EUR')"},"user":{"type":"string","description":"User's Ethereum address (excluded from quotes)"},"recipient":{"type":"string","description":"Recipient Ethereum address"},"destinationChainId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Destination chain ID (e.g., 8453 for Base)"},"destinationToken":{"type":"string","description":"Token address (e.g., USDC on Base)"},"referrer":{"type":"string","description":"Optional referrer address"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string","description":"Referral fee recipient address"},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Referral fee in basis points"}},"required":["recipient","feeBps"]},"maxItems":5,"description":"Caller-provided referral fees that will be sent at intent time. Curator uses the sum to gross up signalIntentAmount, and uses the entry whose recipient matches serviceFee.recipient as the donor for maker-referrer carve."},"escrowAddresses":{"type":"array","items":{"type":"string"},"minItems":1,"description":"List of escrow contract addresses to search"},"minDepositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Minimum maker success rate in basis points (0-10000)"},"supportBusinessAccounts":{"type":"boolean","description":"Include business accounts in quotes (default: false)"},"intentGatingService":{"type":"string","description":"Optional intent gating service address. When provided, only quotes from that service are returned."},"includePrivateOrderbooks":{"type":"boolean","default":false,"description":"Include whitelist-gated private orderbook deposits (default: false)"},"quotePreference":{"type":"string","enum":["EXCLUSIVE_SAR","PREFER_SAR","PREFER_BUYER_TEE","EXCLUSIVE_BUYER_TEE"],"description":"Preferred quote pool and fallback behavior"},"excludedPayToValues":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Payee values to exclude from quote selection"},"exactTokenAmount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Exact token amount in base units (must be greater than zero)"}},"required":["fiatCurrency","user","recipient","destinationChainId","destinationToken","escrowAddresses","exactTokenAmount"],"description":"Request for best quote per payment platform with an exact token amount"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"fiat":{"type":"object","properties":{"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$","description":"Hashed fiat currency code"},"currencyName":{"type":"string","description":"Fiat currency name"},"currencySymbol":{"type":"string","description":"Fiat currency symbol"},"countryCode":{"type":"string","description":"Fiat currency country code"}},"required":["currencyCode","currencyName","currencySymbol","countryCode"]},"token":{"type":"object","properties":{"token":{"type":"string","description":"Token address"},"decimals":{"type":"number","description":"Token amount decimals"},"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"chainId":{"type":"number","description":"Chain ID"}},"required":["token","decimals","name","symbol","chainId"]},"fees":{"type":"object","properties":{"zkp2pFee":{"type":"string","description":"Service fee in preciseUnits (1e18 = 100%, 1e16 = 1%). '0' when disabled."},"zkp2pFeeFormatted":{"type":"string","description":"Service fee as human-readable percentage (e.g. '1%')"},"swapFee":{"type":"string","description":"Swap fee"},"swapFeeFormatted":{"type":"string","description":"Swap fee formatted"}},"required":["zkp2pFee","zkp2pFeeFormatted","swapFee","swapFeeFormatted"]},"platformQuotes":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","description":"Payment platform name"},"supported":{"type":"boolean","description":"Whether this platform supports the requested currency"},"available":{"type":"boolean","description":"Whether a quote is available for this platform"},"bestQuote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","intent"],"description":"Best quote for this platform, if available"}},"required":["platform","supported","available"]},"description":"Best quote per payment platform"},"quoteExpiresAt":{"type":"string","description":"ISO 8601 timestamp after which the quote should be re-fetched"}},"required":["fiat","token","fees","platformQuotes","quoteExpiresAt"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/relay/quote":{"post":{"tags":["Relay"],"description":"Create one Relay deposit-address quote, optionally with the canonical ZKP2P app fee. Eligible stablecoin routes use capped fee sponsorship and a fixed 1:1 rate, with app fees omitted. Curator authenticates to Relay server-side; callers must never provide a Relay API key.","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"string","minLength":1,"maxLength":256},"originChainId":{"type":"integer","minimum":-9007199254740991,"exclusiveMinimum":true,"maximum":9007199254740991},"originCurrency":{"type":"string","minLength":1,"maxLength":256},"destinationChainId":{"type":"number","enum":[8453]},"destinationCurrency":{"type":"string","minLength":1,"maxLength":256},"amount":{"type":"string","maxLength":80,"pattern":"^[0-9]+$"},"tradeType":{"type":"string","enum":["EXACT_INPUT","EXACT_OUTPUT"]},"recipient":{"type":"string","minLength":1,"maxLength":256},"useDepositAddress":{"type":"boolean","enum":[true]},"refundTo":{"type":"string","minLength":1,"maxLength":256},"recoveryAddress":{"type":"string","minLength":1,"maxLength":256},"referrer":{"type":"string","enum":["zkp2p.xyz"]},"appFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string","enum":["0xc5f63417FD8261e7219a0B51ef6e959EC0239e8E"]},"fee":{"type":"string","enum":["50"]}},"required":["recipient","fee"],"additionalProperties":false},"minItems":1,"maxItems":1}},"required":["user","originChainId","originCurrency","destinationChainId","destinationCurrency","amount","tradeType","recipient","useDepositAddress","refundTo","referrer"],"additionalProperties":false}}}},"responses":{"200":{"description":"Relay deposit-address quote","content":{"application/json":{"schema":{"type":"object","properties":{"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"depositAddress":{"type":"string"},"requestId":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"string"}}}}}}}},"required":["steps"]}}}},"400":{"description":"Invalid or rejected quote request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"401":{"description":"Missing or invalid Privy bearer token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Authenticated Privy user has no embedded EVM wallet","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"429":{"description":"Relay quote request rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"502":{"description":"Relay upstream failure","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"503":{"description":"Relay API key is not configured","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"504":{"description":"Relay upstream timeout","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/makers/validate":{"post":{"tags":["Maker"],"description":"Validate maker data (public endpoint, no auth required)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"processorName":{"type":"string"},"offchainId":{"type":"string"},"metadata":{"type":"object","additionalProperties":{"nullable":true}}},"required":["processorName","offchainId"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"boolean"},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/makers/create":{"post":{"tags":["Maker"],"description":"Create a new maker (public endpoint, no auth required)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string"},"metadata":{"type":"object","additionalProperties":{"nullable":true}}},"required":["processorName","offchainId"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/makers":{"get":{"tags":["Maker"],"description":"Get a paginated list of makers (internal endpoint, requires a privileged x-api-key)","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"array","nullable":true,"items":{"type":"string","minLength":1},"minItems":1,"description":"Optional comma-separated processor names","example":"venmo,wise"},"required":false,"name":"processorNames","in":"query"},{"schema":{"type":"integer","minimum":1,"default":1,"description":"1-based page number","example":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50,"description":"Page size (max 200)","example":50},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include revoked makers in the result set","example":false},"required":false,"name":"includeRevoked","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"$ref":"#/components/schemas/MakerListResponse"},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/makers/batch-lookup":{"post":{"tags":["Maker"],"description":"Batch look up makers by processor and hashed on-chain IDs (internal endpoint, requires a privileged x-api-key)","security":[{"apiKeyAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MakerBatchLookupBody"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"]},"description":"Map keyed by processorName|normalizedHash","example":{"venmo|0xabc":{"id":1,"processorName":"venmo","offchainId":"alice","telegramUsername":null,"hashedOnchainId":"0xabc","isBusiness":false,"revoked":false,"metadata":null,"createdAt":"2025-01-01T00:00:00.000Z"}}},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/makers/paypal/{payeeDetails}/seller-credential/google-oauth":{"post":{"tags":["Maker"],"description":"Complete PayPal seller onboarding from a CASA-approved Google OAuth Gmail grant. The caller supplies the seller PayPal email plus the one-time Google authorization code, Curator encrypts the upload for attestation-service, and stores the returned seller credential bundle.","security":[{"bearerAuth":[]},{}],"parameters":[{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"required":true,"name":"payeeDetails","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payeeEmail":{"type":"string","format":"email","description":"The seller's PayPal-registered receiving email address"},"authorizationCode":{"type":"string","minLength":1,"description":"One-time Google OAuth authorization code from the CASA-approved Gmail readonly app"},"redirectUri":{"type":"string","format":"uri","description":"Redirect URI used when the authorization code was minted"}},"required":["payeeEmail","authorizationCode","redirectUri"],"additionalProperties":false}}}},"responses":{"200":{"description":"PayPal seller credential status","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"platform":{"type":"string"},"payeeIdHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"status":{"type":"string","enum":["active","inactive","missing"]},"credentialType":{"type":"string","nullable":true}},"required":["platform","payeeIdHash","status","credentialType"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/makers/{processorName}/{payeeDetails}/seller-credential":{"post":{"tags":["Maker"],"description":"Attach a signed seller credential ciphertext bundle to a maker by processor and payee hash","security":[{"bearerAuth":[]},{}],"parameters":[{"schema":{"type":"string","enum":["venmo","cashapp","wise","paypal"]},"required":true,"name":"processorName","in":"path"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"required":true,"name":"payeeDetails","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["venmo","cashapp","wise","paypal"]},"payeeIdHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"credentialType":{"type":"string","minLength":1},"encryptedBlob":{"type":"string","minLength":1,"pattern":"^[A-Za-z0-9+/]+={0,2}$"},"encryptedDataKey":{"type":"string","minLength":1,"pattern":"^[A-Za-z0-9+/]+={0,2}$"},"nonce":{"type":"string","minLength":1,"pattern":"^[A-Za-z0-9+/]+={0,2}$"},"credentialValidatedAt":{"type":"string","pattern":"^[0-9]+$"},"credentialExpiresAt":{"type":"string","nullable":true,"pattern":"^[0-9]+$"},"bundleSignature":{"type":"string","minLength":1}},"required":["platform","payeeIdHash","credentialType","encryptedBlob","encryptedDataKey","nonce","credentialValidatedAt","credentialExpiresAt","bundleSignature"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"platform":{"type":"string"},"payeeIdHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"status":{"type":"string","enum":["active","inactive","missing"]},"credentialType":{"type":"string","nullable":true}},"required":["platform","payeeIdHash","status","credentialType"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/makers/{processorName}/{payeeDetails}/seller-credential/status":{"get":{"tags":["Maker"],"description":"Get seller credential status for a maker by processor and payee details","security":[],"parameters":[{"schema":{"type":"string","enum":["venmo","cashapp","wise","paypal"]},"required":true,"name":"processorName","in":"path"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"required":true,"name":"payeeDetails","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"platform":{"type":"string"},"payeeIdHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"status":{"type":"string","enum":["active","inactive","missing"]},"credentialType":{"type":"string","nullable":true}},"required":["platform","payeeIdHash","status","credentialType"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/makers/{makerId}/seller-credential/recent":{"post":{"tags":["Maker"],"description":"Support-triage peek: list the last N recipient-side payments on the maker's seller credential feed (internal API key required)","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true},"required":true,"name":"makerId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":25,"description":"Maximum number of newest-first credit-side payments to return (1..25)"},"metadata":{"type":"object","properties":{"nextId":{"type":"string","minLength":1,"description":"Opaque connector-owned pagination cursor. Pass back the previous response nextCursor value."},"after":{"type":"integer","minimum":0,"description":"Inclusive lower unix-second bound for caller-driven Gmail OAuth time-bucket pagination."},"before":{"type":"integer","minimum":0,"description":"Exclusive upper unix-second bound for caller-driven Gmail OAuth time-bucket pagination."}},"additionalProperties":false,"description":"Optional connector-specific request metadata validated before forwarding to the attestation service"}}}}}},"responses":{"200":{"description":"Recent seller payments (support-triage peek)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"platform":{"type":"string","enum":["venmo","cashapp","wise","paypal"]},"payments":{"type":"array","items":{"type":"object","properties":{"paymentId":{"type":"string"},"senderId":{"type":"string","minLength":1,"description":"Platform-native counterparty identifier: Venmo username, Cash App cashtag, or Wise sender display name as reported by the upstream feed"},"amountMinorUnits":{"type":"string","pattern":"^[0-9]+$"},"currency":{"type":"string"},"timestampMs":{"type":"integer","minimum":0},"status":{"type":"string"},"paymentType":{"type":"string","nullable":true},"memo":{"type":"string","nullable":true}},"required":["paymentId","senderId","amountMinorUnits","currency","timestampMs","status"]}},"nextCursor":{"type":"string","nullable":true}},"required":["platform","payments"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/makers/{processorName}/{payeeDetails}":{"get":{"tags":["Maker"],"description":"Get maker data by processor and payee details","security":[],"parameters":[{"name":"processorName","in":"path","required":true,"schema":{"type":"string"}},{"name":"payeeDetails","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v2/verify/seller/{platform}":{"post":{"tags":["Seller Credentials"],"description":"Proxy seller-credential verification through attestation-service (internal API key required)","security":[{"apiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["venmo","cashapp","wise","paypal"]},"required":true,"name":"platform","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"txId":{"type":"string","minLength":1},"metadata":{"type":"object","properties":{"nextId":{"type":"string","minLength":1,"description":"Opaque connector-owned pagination cursor. Pass back the previous response nextCursor value."},"after":{"type":"integer","minimum":0,"description":"Inclusive lower unix-second bound for caller-driven Gmail OAuth time-bucket pagination."},"before":{"type":"integer","minimum":0,"description":"Exclusive upper unix-second bound for caller-driven Gmail OAuth time-bucket pagination."}},"additionalProperties":false,"description":"Optional connector-specific request metadata validated before forwarding to the attestation service"},"memo":{"type":"string","minLength":1},"expectedAmountMinorUnits":{"type":"string","pattern":"^[1-9]\\d*$"},"resolutionMode":{"type":"string","enum":["memo","name"]},"payerHandle":{"type":"string","minLength":1},"chainId":{"type":"integer","minimum":0},"intent":{"type":"object","properties":{"intentHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"amount":{"type":"string","pattern":"^[0-9]+$"},"timestampMs":{"type":"string","pattern":"^[0-9]+$"},"paymentMethod":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"fiatCurrency":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"conversionRate":{"type":"string","pattern":"^[0-9]+$"},"payeeDetails":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"timestampBufferMs":{"type":"string","pattern":"^[0-9]+$"}},"required":["intentHash","amount","timestampMs","paymentMethod","fiatCurrency","conversionRate","payeeDetails"]}},"required":["chainId","intent"]}}}},"responses":{"200":{"description":"Seller payment attestation","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"signature":{"type":"string"},"signer":{"type":"string"},"domainSeparator":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"typeHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"typedDataValue":{"type":"object","properties":{"intentHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"releaseAmount":{"type":"string","pattern":"^[0-9]+$"},"dataHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"}},"required":["intentHash","releaseAmount","dataHash"]},"encodedPaymentDetails":{"type":"string"},"platform":{"type":"string","enum":["venmo","cashapp","wise","paypal"]},"actionType":{"type":"string"},"typedDataSpec":{"type":"object","properties":{"primaryType":{"type":"string"},"types":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"]}}}},"required":["primaryType","types"]},"proofInput":{"type":"string"},"metadata":{"type":"string"}},"required":["signature","signer","domainSeparator","typeHash","typedDataValue","encodedPaymentDetails"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}},"404":{"description":"Seller verify target not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"anyOf":[{"type":"object","properties":{"nextCursor":{"type":"string","nullable":true}},"required":["nextCursor"]},{"nullable":true},{"nullable":true}]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v3/intent/sign":{"post":{"tags":["Intent"],"deprecated":true,"summary":"Create a compatibility signature for a legacy gated deposit","description":"Deprecated compatibility endpoint. Only deposits whose indexed payment-method configuration still points at this curator signer are accepted. New deposits use on-chain risk enforcement and do not require this signature.","security":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"processorName":{"type":"string","minLength":1},"payeeDetails":{"type":"string","minLength":1},"depositId":{"type":"string","pattern":"^[0-9]+$"},"amount":{"type":"string","pattern":"^[0-9]+$"},"toAddress":{"type":"string"},"paymentMethod":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"fiatCurrency":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"conversionRate":{"type":"string","pattern":"^[0-9]+$"},"chainId":{"type":"string","pattern":"^[0-9]+$"},"orchestratorAddress":{"type":"string"},"escrowAddress":{"type":"string"},"callerAddress":{"type":"string"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string"},"fee":{"type":"string","pattern":"^[0-9]+$"}},"required":["recipient","fee"]},"maxItems":5}},"required":["processorName","payeeDetails","depositId","amount","toAddress","paymentMethod","fiatCurrency","conversionRate","chainId","orchestratorAddress","escrowAddress","callerAddress","referralFees"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"signedIntent":{"type":"string"},"intentData":{"type":"object","properties":{"orchestratorAddress":{"type":"string"},"escrowAddress":{"type":"string"},"depositId":{"type":"string"},"amount":{"type":"string"},"recipientAddress":{"type":"string"},"paymentMethod":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"fiatCurrency":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"conversionRate":{"type":"string"},"callerAddress":{"type":"string"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string"},"fee":{"type":"string","pattern":"^[0-9]+$"}},"required":["recipient","fee"]}},"signatureExpiration":{"type":"string"},"chainId":{"type":"string"},"gatingServiceSignature":{"type":"string"}},"required":["orchestratorAddress","escrowAddress","depositId","amount","recipientAddress","paymentMethod","fiatCurrency","conversionRate","callerAddress","referralFees","signatureExpiration","chainId","gatingServiceSignature"]},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true}},"required":["signedIntent","intentData","offchainId","telegramUsername"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v3/orderbook":{"get":{"tags":["Orderbook V3"],"description":"Fetch the public-only V3 denormalized orderbook for a fiat currency.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency code","example":"USD"},"required":true,"name":"currency","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Optional payment platform filter","example":"venmo"},"required":false,"name":"paymentPlatform","in":"query"},{"schema":{"type":"string","enum":["price","available","limits","apr"],"default":"price","description":"Sort field","example":"price"},"required":false,"name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"description":"Optional sort direction. Defaults to asc for price and desc for available/limits/apr.","example":"asc"},"required":false,"name":"sortDirection","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":8453,"description":"Destination chain ID","example":8453},"required":false,"name":"chainId","in":"query"},{"schema":{"type":"string","default":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","description":"Destination token address","example":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"required":false,"name":"token","in":"query"},{"schema":{"type":"string","enum":["all","eligible","eligible_with_chargeback"],"default":"all","description":"all returns every row curator could fill — rows gated by a foreign intent gating service are excluded from every mode, including this one; eligible returns rows the taker can reach via the direct route: whitelist-off deposits without dispute, plus whitelist-enabled deposits the taker is whitelisted for; eligible_with_chargeback also returns dispute-route rows (whitelist-off + dispute-on deposits are dispute-only, never public)","example":"all"},"required":false,"name":"mode","in":"query"},{"schema":{"type":"string","description":"Taker whose whitelist eligibility is evaluated in the eligible and eligible_with_chargeback modes. Ignored when mode=all, which does not apply the whitelist leg. Omitting it removes the taker-specific whitelist route. With a registered canonical IntentLifecycleHookV1, eligible and eligible_with_chargeback then return only open rows; protected rows require complete taker eligibility. With a registered predecessor WhitelistLifecycleHook, whitelist-disabled rows remain reachable. A verified no-hook state exposes only both-off rows; an unrecognized or unavailable lifecycle returns no rows.","example":"0x1111111111111111111111111111111111111111"},"required":false,"name":"takerAddress","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200,"description":"Maximum number of orderbook rows to return","example":200},"required":false,"name":"limit","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0,"description":"Number of matching rows to skip before returning entries","example":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","pattern":"^[0-9]+$","description":"Optional requested USDC amount used to filter rows by min, max, and available limits","example":"100"},"required":false,"name":"amount","in":"query"},{"schema":{"type":"boolean","default":false,"description":"When true, include rows whose available notional value is below the dust threshold","example":false},"required":false,"name":"showSmallOrders","in":"query"},{"schema":{"type":"boolean","default":true,"description":"When true, hide rows whose absolute spread exceeds the extreme-spread threshold","example":true},"required":false,"name":"hideExtremeSpread","in":"query"},{"schema":{"type":"string","enum":["include","exclude","only"],"default":"include","description":"Seller automated release filter. include returns all rows, exclude omits SAR rows, only returns SAR rows.","example":"exclude"},"required":false,"name":"sellerAutomatedRelease","in":"query"},{"schema":{"type":"string","description":"Optional env-configured Peer Pay service key"},"required":false,"description":"Optional env-configured Peer Pay service key","name":"x-pp-key","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"chainId":{"type":"integer"},"token":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"paymentPlatform":{"type":"string","nullable":true},"mode":{"type":"string","enum":["all","eligible","eligible_with_chargeback"]},"takerAddress":{"type":"string","nullable":true},"sortBy":{"type":"string","enum":["price","available","limits","apr"]},"sortDirection":{"type":"string","enum":["asc","desc"]},"sellerAutomatedRelease":{"type":"string","enum":["include","exclude","only"]},"internalDetailsIncluded":{"type":"boolean"},"generatedAt":{"type":"string","format":"date-time","description":"Timestamp when curator generated the current orderbook snapshot. Responses may be served from cache and can reflect data from up to 60 seconds earlier.","example":"2026-04-09T00:00:00.000Z"},"entries":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer"},"depositIdOnContract":{"type":"string"},"depositId":{"type":"string"},"escrowAddress":{"type":"string"},"depositor":{"type":"string"},"token":{"type":"string"},"paymentMethodHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"paymentPlatform":{"type":"string"},"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"price":{"type":"string"},"apr":{"type":"number","nullable":true},"spread":{"type":"number","nullable":true},"conversionRate":{"type":"string"},"rateManagerId":{"type":"string","nullable":true},"availableTokenAmount":{"type":"string"},"availableFiatAmount":{"type":"string"},"intentAmountMin":{"type":"string"},"intentAmountMax":{"type":"string"},"minFiatSupported":{"type":"string"},"maxFiatSupported":{"type":"string"},"payeeDetailsHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"successRateBps":{"type":"integer","minimum":0,"maximum":10000},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"ZKP2P protocol fee in basis points, deducted from the delivered token amount at fulfillment. Clients can use it to show net output without recomputing it. Net token received = availableTokenAmount * (10000 - feeBps) / 10000. 0 when the configured service fee is zero.","example":95},"sellerAutomatedReleaseAvailable":{"type":"boolean"},"sellerAutomatedReleaseEnabled":{"type":"boolean","description":"Whether seller automated release (autopilot) is enabled for this deposit's maker (the seller credential is active), independent of current liveness. sellerAutomatedReleaseAvailable is the stricter live check (active AND not expired).","example":true},"whitelistEnabled":{"type":"boolean","description":"Whether the deposit's V3 whitelist policy is enabled, copied from the indexer.","example":false},"allowedGroupIds":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Allowed V3 address-group identifiers. Empty unless whitelistEnabled. May also be empty while whitelistEnabled — a deposit gated only by direct grants. whitelistEnabled, not this array, is the gate signal.","example":[]},"disputeProtectionOptedOut":{"type":"boolean","description":"Depositor explicitly opted this deposit/payment-method tuple out of default-on dispute protection on the active policy.","example":false},"disputeProtectionRequiresStake":{"type":"boolean","description":"Active policy routes non-whitelisted takers through stake-backed admission for this tuple (not opted out and nonzero risk window). Neither field proves request-level routing, locked stake, or live coverage.","example":false},"updatedAt":{"type":"string"},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"]}},"required":["chainId","depositIdOnContract","depositId","escrowAddress","depositor","token","paymentMethodHash","paymentPlatform","currencyCode","currency","price","apr","spread","conversionRate","rateManagerId","availableTokenAmount","availableFiatAmount","intentAmountMin","intentAmountMax","minFiatSupported","maxFiatSupported","payeeDetailsHash","successRateBps","feeBps","sellerAutomatedReleaseAvailable","sellerAutomatedReleaseEnabled","whitelistEnabled","allowedGroupIds","disputeProtectionOptedOut","disputeProtectionRequiresStake","updatedAt"]}}},"required":["chainId","token","currency","paymentPlatform","mode","takerAddress","sortBy","sortDirection","sellerAutomatedRelease","internalDetailsIncluded","generatedAt","entries"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v3/orderbook/table":{"get":{"tags":["Orderbook V3"],"description":"Fetch public orderbook rows in the table format, including pagination metadata and enriched pricing fields.","parameters":[{"schema":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency code","example":"USD"},"required":true,"name":"currency","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Optional payment platform filter","example":"venmo"},"required":false,"name":"paymentPlatform","in":"query"},{"schema":{"type":"string","enum":["price","available","limits","apr"],"default":"price","description":"Sort field","example":"price"},"required":false,"name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"description":"Optional sort direction. Defaults to asc for price and desc for available/limits/apr.","example":"asc"},"required":false,"name":"sortDirection","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":8453,"description":"Destination chain ID","example":8453},"required":false,"name":"chainId","in":"query"},{"schema":{"type":"string","default":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","description":"Destination token address","example":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"required":false,"name":"token","in":"query"},{"schema":{"type":"string","enum":["all","eligible","eligible_with_chargeback"],"default":"all","description":"all returns every row curator could fill — rows gated by a foreign intent gating service are excluded from every mode, including this one; eligible returns rows the taker can reach via the direct route: whitelist-off deposits without dispute, plus whitelist-enabled deposits the taker is whitelisted for; eligible_with_chargeback also returns dispute-route rows (whitelist-off + dispute-on deposits are dispute-only, never public)","example":"all"},"required":false,"name":"mode","in":"query"},{"schema":{"type":"string","description":"Taker whose whitelist eligibility is evaluated in the eligible and eligible_with_chargeback modes. Ignored when mode=all, which does not apply the whitelist leg. Omitting it removes the taker-specific whitelist route. With a registered canonical IntentLifecycleHookV1, eligible and eligible_with_chargeback then return only open rows; protected rows require complete taker eligibility. With a registered predecessor WhitelistLifecycleHook, whitelist-disabled rows remain reachable. A verified no-hook state exposes only both-off rows; an unrecognized or unavailable lifecycle returns no rows.","example":"0x1111111111111111111111111111111111111111"},"required":false,"name":"takerAddress","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200,"description":"Maximum number of orderbook rows to return","example":200},"required":false,"name":"limit","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0,"description":"Number of matching rows to skip before returning entries","example":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","pattern":"^[0-9]+$","description":"Optional requested USDC amount used to filter rows by min, max, and available limits","example":"100"},"required":false,"name":"amount","in":"query"},{"schema":{"type":"boolean","default":false,"description":"When true, include rows whose available notional value is below the dust threshold","example":false},"required":false,"name":"showSmallOrders","in":"query"},{"schema":{"type":"boolean","default":true,"description":"When true, hide rows whose absolute spread exceeds the extreme-spread threshold","example":true},"required":false,"name":"hideExtremeSpread","in":"query"},{"schema":{"type":"string","enum":["include","exclude","only"],"default":"include","description":"Seller automated release filter. include returns all rows, exclude omits SAR rows, only returns SAR rows.","example":"exclude"},"required":false,"name":"sellerAutomatedRelease","in":"query"},{"schema":{"type":"string","description":"Optional env-configured Peer Pay service key"},"required":false,"description":"Optional env-configured Peer Pay service key","name":"x-pp-key","in":"header"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"chainId":{"type":"integer"},"token":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"paymentPlatform":{"type":"string","nullable":true},"mode":{"type":"string","enum":["all","eligible","eligible_with_chargeback"]},"takerAddress":{"type":"string","nullable":true},"sortBy":{"type":"string","enum":["price","available","limits","apr"]},"sortDirection":{"type":"string","enum":["asc","desc"]},"sellerAutomatedRelease":{"type":"string","enum":["include","exclude","only"]},"generatedAt":{"type":"string","format":"date-time","description":"Timestamp when curator generated the current orderbook table snapshot. Responses may be served from cache and can reflect data from up to 60 seconds earlier.","example":"2026-04-09T00:00:00.000Z"},"pagination":{"type":"object","properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"total":{"type":"integer"},"hasMore":{"type":"boolean"}},"required":["limit","offset","total","hasMore"]},"rows":{"type":"array","items":{"type":"object","properties":{"depositId":{"type":"string"},"depositIdOnContract":{"type":"string"},"depositor":{"type":"string"},"escrowAddress":{"type":"string"},"chainId":{"type":"integer"},"token":{"type":"string"},"paymentPlatform":{"type":"string"},"paymentMethodHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"supportedMethodHashes":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"}},"payeeDetailsHash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"conversionRate":{"type":"string"},"takerConversionRate":{"type":"string"},"rateManagerId":{"type":"string","nullable":true},"availableTokenAmount":{"type":"string"},"intentAmountMin":{"type":"string"},"intentAmountMax":{"type":"string"},"minFiatSupported":{"type":"string"},"maxFiatSupported":{"type":"string"},"successRateBps":{"type":"integer","minimum":0,"maximum":10000},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"ZKP2P protocol fee in basis points, deducted from the delivered token amount at fulfillment. Clients can use it to show net output without recomputing it. Net token received = availableTokenAmount * (10000 - feeBps) / 10000. 0 when the configured service fee is zero.","example":95},"apr":{"type":"number","nullable":true},"spread":{"type":"number","nullable":true},"sellerAutomatedReleaseAvailable":{"type":"boolean"},"sellerAutomatedReleaseEnabled":{"type":"boolean","description":"Whether seller automated release (autopilot) is enabled for this deposit's maker (the seller credential is active), independent of current liveness. sellerAutomatedReleaseAvailable is the stricter live check (active AND not expired).","example":true},"isPrivate":{"type":"boolean","description":"Legacy privacy projection from the request's mounted-lifecycle snapshot. It is not a fixed whitelistEnabled || disputeProtectionRequiresStake alias."},"whitelistEnabled":{"type":"boolean","description":"Whether the deposit's V3 whitelist policy is enabled, copied from the indexer.","example":false},"allowedGroupIds":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Allowed V3 address-group identifiers. Empty unless whitelistEnabled. May also be empty while whitelistEnabled — a deposit gated only by direct grants. whitelistEnabled, not this array, is the gate signal.","example":[]},"disputeProtectionOptedOut":{"type":"boolean","description":"Depositor explicitly opted this deposit/payment-method tuple out of default-on dispute protection on the active policy.","example":false},"disputeProtectionRequiresStake":{"type":"boolean","description":"Active policy routes non-whitelisted takers through stake-backed admission for this tuple (not opted out and nonzero risk window). Neither field proves request-level routing, locked stake, or live coverage.","example":false},"updatedAt":{"type":"string"}},"required":["depositId","depositIdOnContract","depositor","escrowAddress","chainId","token","paymentPlatform","paymentMethodHash","supportedMethodHashes","payeeDetailsHash","currency","currencyCode","conversionRate","takerConversionRate","rateManagerId","availableTokenAmount","intentAmountMin","intentAmountMax","minFiatSupported","maxFiatSupported","successRateBps","feeBps","apr","spread","sellerAutomatedReleaseAvailable","sellerAutomatedReleaseEnabled","isPrivate","whitelistEnabled","allowedGroupIds","disputeProtectionOptedOut","disputeProtectionRequiresStake","updatedAt"]}}},"required":["chainId","token","currency","paymentPlatform","mode","takerAddress","sortBy","sortDirection","sellerAutomatedRelease","generatedAt","pagination","rows"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v3/quote/exact-token":{"post":{"tags":["Quotes V3"],"description":"Quote minimum fiat input for an exact token output amount.","parameters":[{"schema":{"type":"string","description":"Optional env-configured Peer Pay service key"},"required":false,"description":"Optional env-configured Peer Pay service key","name":"x-pp-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"paymentPlatforms":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Payment platforms"},"fiatCurrency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency"},"user":{"type":"string","description":"User submitting transactions"},"recipient":{"type":"string","description":"Final recipient address"},"destinationChainId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Destination chain ID"},"destinationToken":{"type":"string","description":"Destination token address"},"referrer":{"type":"string","description":"Referrer"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string","description":"Referral fee recipient address"},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Referral fee in basis points"}},"required":["recipient","feeBps"]},"maxItems":5,"description":"Caller-provided referral fees that will be sent at intent time. Curator uses the sum to gross up signalIntentAmount, and uses the entry whose recipient matches serviceFee.recipient as the donor for maker-referrer carve."},"useMultihop":{"type":"boolean","description":"Use multihop from a base asset"},"escrowAddresses":{"type":"array","items":{"type":"string"},"minItems":1,"description":"List of escrow contract addresses to search (e.g., ['0xabc...', '0xdef...'])."},"supportBusinessAccounts":{"type":"boolean","description":"Whether quotes may include business accounts (default: false)"},"minDepositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Minimum historical deposit success rate in basis points (0–10000). Defaults to 0 when omitted"},"mode":{"type":"string","enum":["eligible","eligible_with_chargeback","eligible_with_chargeback_staked"],"default":"eligible","description":"eligible returns quotes the user can take via the direct route: whitelist-off deposits without dispute, plus whitelist-enabled deposits the user is whitelisted for (whitelisted takers bypass dispute staking); eligible_with_chargeback also returns dispute-route quotes, where stake is locked at signal; eligible_with_chargeback_staked returns dispute-route quotes only when the user's free stake covers the signal amount"},"maxTakerConversionRate":{"type":"string","pattern":"^\\d+$","description":"Maximum acceptable taker conversion rate, scaled by 1e18. Candidates quoting above this are excluded from both exact and nearby searches. Omit for no ceiling."},"quotePreference":{"type":"string","enum":["EXCLUSIVE_SAR","PREFER_SAR","PREFER_BUYER_TEE","EXCLUSIVE_BUYER_TEE"],"description":"Preferred quote pool and fallback behavior"},"excludedPayToValues":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Payee values to exclude from quote selection"},"exactTokenAmount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Exact amount of tokens user wants to receive"},"includeNearbyQuotes":{"type":"boolean","default":false,"description":"Include nearby quote suggestions when no exact match"},"nearbySearchRange":{"type":"number","minimum":1,"maximum":100,"description":"Max percentage deviation to search (1-100%). Unlimited if omitted"},"nearbyQuotesCount":{"type":"number","minimum":1,"maximum":10,"default":3,"description":"Max quotes per direction (default: 3, max: 10)"}},"required":["paymentPlatforms","fiatCurrency","user","recipient","destinationChainId","destinationToken","escrowAddresses","exactTokenAmount"],"description":"Request for quoting minimum fiat input for an exact token output"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"fiat":{"type":"object","properties":{"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$","description":"Hashed fiat currency code"},"currencyName":{"type":"string","description":"Fiat currency name"},"currencySymbol":{"type":"string","description":"Fiat currency symbol"},"countryCode":{"type":"string","description":"Fiat currency country code"}},"required":["currencyCode","currencyName","currencySymbol","countryCode"]},"token":{"type":"object","properties":{"token":{"type":"string","description":"Token address"},"decimals":{"type":"number","description":"Token amount decimals"},"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"chainId":{"type":"number","description":"Chain ID"}},"required":["token","decimals","name","symbol","chainId"]},"quotes":{"type":"array","items":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"whitelistEnabled":{"type":"boolean","description":"Whether the deposit's V3 whitelist policy is enabled, copied from the indexer without reinterpretation."},"allowedGroupIds":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Allowed V3 address-group identifiers. Empty unless whitelistEnabled."},"disputeProtectionOptedOut":{"type":"boolean","description":"Depositor explicitly opted this deposit/payment-method tuple out of default-on dispute protection on the active policy."},"disputeProtectionRequiresStake":{"type":"boolean","description":"Active policy routes non-whitelisted takers through stake-backed admission for this tuple (not opted out and nonzero risk window). Neither field proves request-level routing, locked stake, or live coverage."},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","whitelistEnabled","allowedGroupIds","disputeProtectionOptedOut","disputeProtectionRequiresStake","intent"]}},"fees":{"type":"object","properties":{"zkp2pFee":{"type":"string","description":"Service fee in preciseUnits (1e18 = 100%, 1e16 = 1%). '0' when disabled."},"zkp2pFeeFormatted":{"type":"string","description":"Service fee as human-readable percentage (e.g. '1%')"},"swapFee":{"type":"string","description":"Swap fee"},"swapFeeFormatted":{"type":"string","description":"Swap fee formatted"}},"required":["zkp2pFee","zkp2pFeeFormatted","swapFee","swapFeeFormatted"]},"nearbySuggestions":{"type":"object","properties":{"below":{"type":"array","items":{"type":"object","properties":{"suggestedTokenAmount":{"type":"string","description":"Suggested token amount to request (raw, for exact-token mode)"},"suggestedTokenAmountFormatted":{"type":"string","description":"Human-readable suggested token amount"},"tokenPercentDifference":{"type":"string","description":"Token amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"suggestedFiatAmount":{"type":"string","description":"Suggested fiat amount to request (raw, for exact-fiat mode)"},"suggestedFiatAmountFormatted":{"type":"string","description":"Human-readable suggested fiat amount"},"fiatPercentDifference":{"type":"string","description":"Fiat amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"quote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"whitelistEnabled":{"type":"boolean","description":"Whether the deposit's V3 whitelist policy is enabled, copied from the indexer without reinterpretation."},"allowedGroupIds":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Allowed V3 address-group identifiers. Empty unless whitelistEnabled."},"disputeProtectionOptedOut":{"type":"boolean","description":"Depositor explicitly opted this deposit/payment-method tuple out of default-on dispute protection on the active policy."},"disputeProtectionRequiresStake":{"type":"boolean","description":"Active policy routes non-whitelisted takers through stake-backed admission for this tuple (not opted out and nonzero risk window). Neither field proves request-level routing, locked stake, or live coverage."},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","whitelistEnabled","allowedGroupIds","disputeProtectionOptedOut","disputeProtectionRequiresStake","intent"],"description":"Full quote details at the suggested amount"}},"required":["quote"]},"description":"Quotes for amounts below requested (sorted by amount DESC, closest first)"},"above":{"type":"array","items":{"type":"object","properties":{"suggestedTokenAmount":{"type":"string","description":"Suggested token amount to request (raw, for exact-token mode)"},"suggestedTokenAmountFormatted":{"type":"string","description":"Human-readable suggested token amount"},"tokenPercentDifference":{"type":"string","description":"Token amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"suggestedFiatAmount":{"type":"string","description":"Suggested fiat amount to request (raw, for exact-fiat mode)"},"suggestedFiatAmountFormatted":{"type":"string","description":"Human-readable suggested fiat amount"},"fiatPercentDifference":{"type":"string","description":"Fiat amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"quote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"whitelistEnabled":{"type":"boolean","description":"Whether the deposit's V3 whitelist policy is enabled, copied from the indexer without reinterpretation."},"allowedGroupIds":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Allowed V3 address-group identifiers. Empty unless whitelistEnabled."},"disputeProtectionOptedOut":{"type":"boolean","description":"Depositor explicitly opted this deposit/payment-method tuple out of default-on dispute protection on the active policy."},"disputeProtectionRequiresStake":{"type":"boolean","description":"Active policy routes non-whitelisted takers through stake-backed admission for this tuple (not opted out and nonzero risk window). Neither field proves request-level routing, locked stake, or live coverage."},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","whitelistEnabled","allowedGroupIds","disputeProtectionOptedOut","disputeProtectionRequiresStake","intent"],"description":"Full quote details at the suggested amount"}},"required":["quote"]},"description":"Quotes for amounts above requested (sorted by amount ASC, closest first)"}},"required":["below","above"],"description":"Nearby quote suggestions when no exact match found"},"quoteExpiresAt":{"type":"string","description":"ISO 8601 timestamp after which the quote should be re-fetched"},"orchestratorAddress":{"type":"string"},"mode":{"type":"string","enum":["eligible","eligible_with_chargeback","eligible_with_chargeback_staked"]}},"required":["fiat","token","quotes","fees","quoteExpiresAt","orchestratorAddress","mode"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v3/quote/exact-fiat":{"post":{"tags":["Quotes V3"],"description":"Quote maximum token output for an exact fiat input amount.","parameters":[{"schema":{"type":"string","description":"Optional env-configured Peer Pay service key"},"required":false,"description":"Optional env-configured Peer Pay service key","name":"x-pp-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"paymentPlatforms":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Payment platforms"},"fiatCurrency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency"},"user":{"type":"string","description":"User submitting transactions"},"recipient":{"type":"string","description":"Final recipient address"},"destinationChainId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Destination chain ID"},"destinationToken":{"type":"string","description":"Destination token address"},"referrer":{"type":"string","description":"Referrer"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string","description":"Referral fee recipient address"},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Referral fee in basis points"}},"required":["recipient","feeBps"]},"maxItems":5,"description":"Caller-provided referral fees that will be sent at intent time. Curator uses the sum to gross up signalIntentAmount, and uses the entry whose recipient matches serviceFee.recipient as the donor for maker-referrer carve."},"useMultihop":{"type":"boolean","description":"Use multihop from a base asset"},"escrowAddresses":{"type":"array","items":{"type":"string"},"minItems":1,"description":"List of escrow contract addresses to search (e.g., ['0xabc...', '0xdef...'])."},"supportBusinessAccounts":{"type":"boolean","description":"Whether quotes may include business accounts (default: false)"},"minDepositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Minimum historical deposit success rate in basis points (0–10000). Defaults to 0 when omitted"},"mode":{"type":"string","enum":["eligible","eligible_with_chargeback","eligible_with_chargeback_staked"],"default":"eligible","description":"eligible returns quotes the user can take via the direct route: whitelist-off deposits without dispute, plus whitelist-enabled deposits the user is whitelisted for (whitelisted takers bypass dispute staking); eligible_with_chargeback also returns dispute-route quotes, where stake is locked at signal; eligible_with_chargeback_staked returns dispute-route quotes only when the user's free stake covers the signal amount"},"maxTakerConversionRate":{"type":"string","pattern":"^\\d+$","description":"Maximum acceptable taker conversion rate, scaled by 1e18. Candidates quoting above this are excluded from both exact and nearby searches. Omit for no ceiling."},"quotePreference":{"type":"string","enum":["EXCLUSIVE_SAR","PREFER_SAR","PREFER_BUYER_TEE","EXCLUSIVE_BUYER_TEE"],"description":"Preferred quote pool and fallback behavior"},"excludedPayToValues":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Payee values to exclude from quote selection"},"exactFiatAmount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Exact fiat amount user wants to send"},"includeNearbyQuotes":{"type":"boolean","default":false,"description":"Include nearby quote suggestions when no exact match"},"nearbySearchRange":{"type":"number","minimum":1,"maximum":100,"description":"Max percentage deviation to search (1-100%). Unlimited if omitted"},"nearbyQuotesCount":{"type":"number","minimum":1,"maximum":10,"default":3,"description":"Max quotes per direction (default: 3, max: 10)"}},"required":["paymentPlatforms","fiatCurrency","user","recipient","destinationChainId","destinationToken","escrowAddresses","exactFiatAmount"],"description":"Request for quoting maximum token output for an exact fiat input"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"fiat":{"type":"object","properties":{"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$","description":"Hashed fiat currency code"},"currencyName":{"type":"string","description":"Fiat currency name"},"currencySymbol":{"type":"string","description":"Fiat currency symbol"},"countryCode":{"type":"string","description":"Fiat currency country code"}},"required":["currencyCode","currencyName","currencySymbol","countryCode"]},"token":{"type":"object","properties":{"token":{"type":"string","description":"Token address"},"decimals":{"type":"number","description":"Token amount decimals"},"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"chainId":{"type":"number","description":"Chain ID"}},"required":["token","decimals","name","symbol","chainId"]},"quotes":{"type":"array","items":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"whitelistEnabled":{"type":"boolean","description":"Whether the deposit's V3 whitelist policy is enabled, copied from the indexer without reinterpretation."},"allowedGroupIds":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Allowed V3 address-group identifiers. Empty unless whitelistEnabled."},"disputeProtectionOptedOut":{"type":"boolean","description":"Depositor explicitly opted this deposit/payment-method tuple out of default-on dispute protection on the active policy."},"disputeProtectionRequiresStake":{"type":"boolean","description":"Active policy routes non-whitelisted takers through stake-backed admission for this tuple (not opted out and nonzero risk window). Neither field proves request-level routing, locked stake, or live coverage."},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","whitelistEnabled","allowedGroupIds","disputeProtectionOptedOut","disputeProtectionRequiresStake","intent"]}},"fees":{"type":"object","properties":{"zkp2pFee":{"type":"string","description":"Service fee in preciseUnits (1e18 = 100%, 1e16 = 1%). '0' when disabled."},"zkp2pFeeFormatted":{"type":"string","description":"Service fee as human-readable percentage (e.g. '1%')"},"swapFee":{"type":"string","description":"Swap fee"},"swapFeeFormatted":{"type":"string","description":"Swap fee formatted"}},"required":["zkp2pFee","zkp2pFeeFormatted","swapFee","swapFeeFormatted"]},"nearbySuggestions":{"type":"object","properties":{"below":{"type":"array","items":{"type":"object","properties":{"suggestedTokenAmount":{"type":"string","description":"Suggested token amount to request (raw, for exact-token mode)"},"suggestedTokenAmountFormatted":{"type":"string","description":"Human-readable suggested token amount"},"tokenPercentDifference":{"type":"string","description":"Token amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"suggestedFiatAmount":{"type":"string","description":"Suggested fiat amount to request (raw, for exact-fiat mode)"},"suggestedFiatAmountFormatted":{"type":"string","description":"Human-readable suggested fiat amount"},"fiatPercentDifference":{"type":"string","description":"Fiat amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"quote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"whitelistEnabled":{"type":"boolean","description":"Whether the deposit's V3 whitelist policy is enabled, copied from the indexer without reinterpretation."},"allowedGroupIds":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Allowed V3 address-group identifiers. Empty unless whitelistEnabled."},"disputeProtectionOptedOut":{"type":"boolean","description":"Depositor explicitly opted this deposit/payment-method tuple out of default-on dispute protection on the active policy."},"disputeProtectionRequiresStake":{"type":"boolean","description":"Active policy routes non-whitelisted takers through stake-backed admission for this tuple (not opted out and nonzero risk window). Neither field proves request-level routing, locked stake, or live coverage."},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","whitelistEnabled","allowedGroupIds","disputeProtectionOptedOut","disputeProtectionRequiresStake","intent"],"description":"Full quote details at the suggested amount"}},"required":["quote"]},"description":"Quotes for amounts below requested (sorted by amount DESC, closest first)"},"above":{"type":"array","items":{"type":"object","properties":{"suggestedTokenAmount":{"type":"string","description":"Suggested token amount to request (raw, for exact-token mode)"},"suggestedTokenAmountFormatted":{"type":"string","description":"Human-readable suggested token amount"},"tokenPercentDifference":{"type":"string","description":"Token amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"suggestedFiatAmount":{"type":"string","description":"Suggested fiat amount to request (raw, for exact-fiat mode)"},"suggestedFiatAmountFormatted":{"type":"string","description":"Human-readable suggested fiat amount"},"fiatPercentDifference":{"type":"string","description":"Fiat amount difference from requested, e.g., '-5.2%' or '+3.8%'"},"quote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"whitelistEnabled":{"type":"boolean","description":"Whether the deposit's V3 whitelist policy is enabled, copied from the indexer without reinterpretation."},"allowedGroupIds":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Allowed V3 address-group identifiers. Empty unless whitelistEnabled."},"disputeProtectionOptedOut":{"type":"boolean","description":"Depositor explicitly opted this deposit/payment-method tuple out of default-on dispute protection on the active policy."},"disputeProtectionRequiresStake":{"type":"boolean","description":"Active policy routes non-whitelisted takers through stake-backed admission for this tuple (not opted out and nonzero risk window). Neither field proves request-level routing, locked stake, or live coverage."},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","whitelistEnabled","allowedGroupIds","disputeProtectionOptedOut","disputeProtectionRequiresStake","intent"],"description":"Full quote details at the suggested amount"}},"required":["quote"]},"description":"Quotes for amounts above requested (sorted by amount ASC, closest first)"}},"required":["below","above"],"description":"Nearby quote suggestions when no exact match found"},"quoteExpiresAt":{"type":"string","description":"ISO 8601 timestamp after which the quote should be re-fetched"},"orchestratorAddress":{"type":"string"},"mode":{"type":"string","enum":["eligible","eligible_with_chargeback","eligible_with_chargeback_staked"]}},"required":["fiat","token","quotes","fees","quoteExpiresAt","orchestratorAddress","mode"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v3/quote/best-by-platform":{"post":{"tags":["Quotes V3"],"description":"Best quote per payment platform for an exact fiat amount.","parameters":[{"schema":{"type":"string","description":"Optional env-configured Peer Pay service key"},"required":false,"description":"Optional env-configured Peer Pay service key","name":"x-pp-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"fiatCurrency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency code (e.g., 'USD', 'EUR')"},"exactFiatAmount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Exact fiat amount in token units (e.g., '100000000' = $100)"},"user":{"type":"string","description":"User's Ethereum address (excluded from quotes)"},"recipient":{"type":"string","description":"Recipient Ethereum address"},"destinationChainId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Destination chain ID"},"destinationToken":{"type":"string","description":"Token address (e.g., USDC on Base)"},"referrer":{"type":"string","description":"Optional referrer address"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string","description":"Referral fee recipient address"},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Referral fee in basis points"}},"required":["recipient","feeBps"]},"maxItems":5,"description":"Caller-provided referral fees that will be sent at intent time. Curator uses the sum to gross up signalIntentAmount, and uses the entry whose recipient matches serviceFee.recipient as the donor for maker-referrer carve."},"escrowAddresses":{"type":"array","items":{"type":"string"},"minItems":1,"description":"List of escrow contract addresses to search"},"minDepositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Minimum maker success rate in basis points (0-10000)"},"supportBusinessAccounts":{"type":"boolean","description":"Include business accounts in quotes (default: false)"},"mode":{"type":"string","enum":["eligible","eligible_with_chargeback","eligible_with_chargeback_staked"],"default":"eligible","description":"eligible returns quotes the user can take via the direct route: whitelist-off deposits without dispute, plus whitelist-enabled deposits the user is whitelisted for (whitelisted takers bypass dispute staking); eligible_with_chargeback also returns dispute-route quotes, where stake is locked at signal; eligible_with_chargeback_staked returns dispute-route quotes only when the user's free stake covers the signal amount"},"quotePreference":{"type":"string","enum":["EXCLUSIVE_SAR","PREFER_SAR","PREFER_BUYER_TEE","EXCLUSIVE_BUYER_TEE"],"description":"Preferred quote pool and fallback behavior"},"excludedPayToValues":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Payee values to exclude from quote selection"}},"required":["fiatCurrency","exactFiatAmount","user","recipient","destinationChainId","destinationToken","escrowAddresses"],"description":"Request for best quote per payment platform"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"fiat":{"type":"object","properties":{"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$","description":"Hashed fiat currency code"},"currencyName":{"type":"string","description":"Fiat currency name"},"currencySymbol":{"type":"string","description":"Fiat currency symbol"},"countryCode":{"type":"string","description":"Fiat currency country code"}},"required":["currencyCode","currencyName","currencySymbol","countryCode"]},"token":{"type":"object","properties":{"token":{"type":"string","description":"Token address"},"decimals":{"type":"number","description":"Token amount decimals"},"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"chainId":{"type":"number","description":"Chain ID"}},"required":["token","decimals","name","symbol","chainId"]},"fees":{"type":"object","properties":{"zkp2pFee":{"type":"string","description":"Service fee in preciseUnits (1e18 = 100%, 1e16 = 1%). '0' when disabled."},"zkp2pFeeFormatted":{"type":"string","description":"Service fee as human-readable percentage (e.g. '1%')"},"swapFee":{"type":"string","description":"Swap fee"},"swapFeeFormatted":{"type":"string","description":"Swap fee formatted"}},"required":["zkp2pFee","zkp2pFeeFormatted","swapFee","swapFeeFormatted"]},"platformQuotes":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","description":"Payment platform name"},"supported":{"type":"boolean","description":"Whether this platform supports the requested currency"},"available":{"type":"boolean","description":"Whether a quote is available for this platform"},"bestQuote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"whitelistEnabled":{"type":"boolean","description":"Whether the deposit's V3 whitelist policy is enabled, copied from the indexer without reinterpretation."},"allowedGroupIds":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Allowed V3 address-group identifiers. Empty unless whitelistEnabled."},"disputeProtectionOptedOut":{"type":"boolean","description":"Depositor explicitly opted this deposit/payment-method tuple out of default-on dispute protection on the active policy."},"disputeProtectionRequiresStake":{"type":"boolean","description":"Active policy routes non-whitelisted takers through stake-backed admission for this tuple (not opted out and nonzero risk window). Neither field proves request-level routing, locked stake, or live coverage."},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","whitelistEnabled","allowedGroupIds","disputeProtectionOptedOut","disputeProtectionRequiresStake","intent"],"description":"Best quote for this platform, if available"}},"required":["platform","supported","available"]},"description":"Best quote per payment platform"},"quoteExpiresAt":{"type":"string","description":"ISO 8601 timestamp after which the quote should be re-fetched"},"orchestratorAddress":{"type":"string"},"mode":{"type":"string","enum":["eligible","eligible_with_chargeback","eligible_with_chargeback_staked"]}},"required":["fiat","token","fees","platformQuotes","quoteExpiresAt","orchestratorAddress","mode"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v3/quote/best-by-platform-exact-token":{"post":{"tags":["Quotes V3"],"description":"Best quote per payment platform for an exact token amount.","parameters":[{"schema":{"type":"string","description":"Optional env-configured Peer Pay service key"},"required":false,"description":"Optional env-configured Peer Pay service key","name":"x-pp-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"fiatCurrency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Fiat currency code (e.g., 'USD', 'EUR')"},"user":{"type":"string","description":"User's Ethereum address (excluded from quotes)"},"recipient":{"type":"string","description":"Recipient Ethereum address"},"destinationChainId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Destination chain ID"},"destinationToken":{"type":"string","description":"Token address (e.g., USDC on Base)"},"referrer":{"type":"string","description":"Optional referrer address"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string","description":"Referral fee recipient address"},"feeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Referral fee in basis points"}},"required":["recipient","feeBps"]},"maxItems":5,"description":"Caller-provided referral fees that will be sent at intent time. Curator uses the sum to gross up signalIntentAmount, and uses the entry whose recipient matches serviceFee.recipient as the donor for maker-referrer carve."},"escrowAddresses":{"type":"array","items":{"type":"string"},"minItems":1,"description":"List of escrow contract addresses to search"},"minDepositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Minimum maker success rate in basis points (0-10000)"},"supportBusinessAccounts":{"type":"boolean","description":"Include business accounts in quotes (default: false)"},"mode":{"type":"string","enum":["eligible","eligible_with_chargeback","eligible_with_chargeback_staked"],"default":"eligible","description":"eligible returns quotes the user can take via the direct route: whitelist-off deposits without dispute, plus whitelist-enabled deposits the user is whitelisted for (whitelisted takers bypass dispute staking); eligible_with_chargeback also returns dispute-route quotes, where stake is locked at signal; eligible_with_chargeback_staked returns dispute-route quotes only when the user's free stake covers the signal amount"},"quotePreference":{"type":"string","enum":["EXCLUSIVE_SAR","PREFER_SAR","PREFER_BUYER_TEE","EXCLUSIVE_BUYER_TEE"],"description":"Preferred quote pool and fallback behavior"},"excludedPayToValues":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Payee values to exclude from quote selection"},"exactTokenAmount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Exact token amount in base units (must be greater than zero)"}},"required":["fiatCurrency","user","recipient","destinationChainId","destinationToken","escrowAddresses","exactTokenAmount"],"description":"Request for best quote per payment platform with an exact token amount"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"fiat":{"type":"object","properties":{"currencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$","description":"Hashed fiat currency code"},"currencyName":{"type":"string","description":"Fiat currency name"},"currencySymbol":{"type":"string","description":"Fiat currency symbol"},"countryCode":{"type":"string","description":"Fiat currency country code"}},"required":["currencyCode","currencyName","currencySymbol","countryCode"]},"token":{"type":"object","properties":{"token":{"type":"string","description":"Token address"},"decimals":{"type":"number","description":"Token amount decimals"},"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"chainId":{"type":"number","description":"Chain ID"}},"required":["token","decimals","name","symbol","chainId"]},"fees":{"type":"object","properties":{"zkp2pFee":{"type":"string","description":"Service fee in preciseUnits (1e18 = 100%, 1e16 = 1%). '0' when disabled."},"zkp2pFeeFormatted":{"type":"string","description":"Service fee as human-readable percentage (e.g. '1%')"},"swapFee":{"type":"string","description":"Swap fee"},"swapFeeFormatted":{"type":"string","description":"Swap fee formatted"}},"required":["zkp2pFee","zkp2pFeeFormatted","swapFee","swapFeeFormatted"]},"platformQuotes":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","description":"Payment platform name"},"supported":{"type":"boolean","description":"Whether this platform supports the requested currency"},"available":{"type":"boolean","description":"Whether a quote is available for this platform"},"bestQuote":{"type":"object","properties":{"fiatAmount":{"type":"string","description":"Fiat amount"},"fiatAmountFormatted":{"type":"string","description":"Fiat amount formatted"},"tokenAmount":{"type":"string","description":"Net token output amount after curator-enforced ZKP2P protocol fees and any caller-provided referral fees."},"tokenAmountFormatted":{"type":"string","description":"Net token output amount formatted"},"signalIntentAmount":{"type":"string","description":"Gross token amount to pass to signalIntent for this quote. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. Equal to `intent.amount`."},"signalIntentAmountFormatted":{"type":"string","description":"signalIntent amount formatted"},"zkp2pFeeAmount":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount deducted from signalIntentAmount."},"zkp2pFeeAmountFormatted":{"type":"string","description":"Curator-enforced ZKP2P protocol fee amount formatted"},"serviceFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Actual curator service fee rate used for this quote, in basis points."},"takerReferralFeeBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Total caller-provided referral fee rate used for this quote, in basis points."},"takerReferralFeeAmount":{"type":"string","description":"Total caller-provided referral fee amount deducted from signalIntentAmount."},"takerReferralFeeAmountFormatted":{"type":"string","description":"Total caller-provided referral fee amount formatted"},"managerFeeAmount":{"type":"string","description":"Informational deposit manager fee amount in token units already baked into takerConversionRate (NOT deducted from signalIntentAmount)."},"managerFeeAmountFormatted":{"type":"string","description":"Informational manager fee amount formatted"},"totalFeeAmount":{"type":"string","description":"Combined display total of protocol fee + caller referral fees + rate-implicit manager fee."},"totalFeeAmountFormatted":{"type":"string","description":"Combined display total formatted"},"paymentMethod":{"type":"string","description":"Payment method"},"payeeAddress":{"type":"string"},"conversionRate":{"type":"string","description":"Conversion rate"},"sellerAutomatedReleaseAvailable":{"type":"boolean","description":"Whether seller automated release is currently available for this quote"},"depositSuccessRateBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Deposit success rate in basis points (0–10000)"},"depositIntentStats":{"type":"object","properties":{"totalIntents":{"type":"integer","minimum":0},"signaledIntents":{"type":"integer","minimum":0},"fulfilledIntents":{"type":"integer","minimum":0},"prunedIntents":{"type":"integer","minimum":0}},"required":["totalIntents","signaledIntents","fulfilledIntents","prunedIntents"],"description":"Per-deposit historical intent counters"},"whitelistEnabled":{"type":"boolean","description":"Whether the deposit's V3 whitelist policy is enabled, copied from the indexer without reinterpretation."},"allowedGroupIds":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"description":"Allowed V3 address-group identifiers. Empty unless whitelistEnabled."},"disputeProtectionOptedOut":{"type":"boolean","description":"Depositor explicitly opted this deposit/payment-method tuple out of default-on dispute protection on the active policy."},"disputeProtectionRequiresStake":{"type":"boolean","description":"Active policy routes non-whitelisted takers through stake-backed admission for this tuple (not opted out and nonzero risk window). Neither field proves request-level routing, locked stake, or live coverage."},"intent":{"type":"object","properties":{"depositId":{"type":"integer","minimum":0,"description":"Deposit identifier"},"processorName":{"type":"string"},"amount":{"type":"string","description":"Token amount to pass to signalIntent. Net of manager fee (takerConversionRate is manager-fee-inclusive) and pre protocol-fee deduction. On exact-token endpoints this is the smallest gross amount `s` such that `s - floor(s * serviceFee / P) >= requestedToken` (i.e. the contract's floor-truncated fee deduction yields at least the requested net amount; the closed-form `ceil(requestedToken * P / (P - serviceFee))` is a safe upper bound but the actual returned value walks that ceiling down to the true minimum). On exact-fiat endpoints this is `floor(fiat * P / takerConversionRate)`."},"toAddress":{"type":"string"},"payeeDetails":{"type":"string"},"processorIntentData":{"type":"object","additionalProperties":{"nullable":true}},"fiatCurrencyCode":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"chainId":{"type":"string"},"escrowAddress":{"type":"string"},"managerFee":{"type":"string","description":"Manager fee in preciseUnits (1e18 = 100%, 1e16 = 1%) when the quote deposit is delegated"},"managerFeeFormatted":{"type":"string","description":"Human-readable manager fee percentage"},"whitelistHookAddress":{"type":"string","nullable":true,"description":"Whitelist hook contract address, if configured"},"preIntentHookAddress":{"type":"string","nullable":true,"description":"Compatibility alias for whitelistHookAddress"}},"required":["depositId","processorName","amount","toAddress","payeeDetails","processorIntentData","fiatCurrencyCode","chainId","escrowAddress"]},"maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"],"description":"Maker (payee) details when available"}},"required":["fiatAmount","fiatAmountFormatted","tokenAmount","tokenAmountFormatted","paymentMethod","payeeAddress","conversionRate","sellerAutomatedReleaseAvailable","depositSuccessRateBps","depositIntentStats","whitelistEnabled","allowedGroupIds","disputeProtectionOptedOut","disputeProtectionRequiresStake","intent"],"description":"Best quote for this platform, if available"}},"required":["platform","supported","available"]},"description":"Best quote per payment platform"},"quoteExpiresAt":{"type":"string","description":"ISO 8601 timestamp after which the quote should be re-fetched"},"orchestratorAddress":{"type":"string"},"mode":{"type":"string","enum":["eligible","eligible_with_chargeback","eligible_with_chargeback_staked"]}},"required":["fiat","token","fees","platformQuotes","quoteExpiresAt","orchestratorAddress","mode"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}},"/v3/sign":{"post":{"tags":["Intent V3"],"summary":"Create an OrchestratorV3 gating signature","parameters":[{"schema":{"type":"string","description":"Optional env-configured Peer Pay service key"},"required":false,"description":"Optional env-configured Peer Pay service key","name":"x-pp-key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"processorName":{"type":"string","minLength":1},"payeeDetails":{"type":"string","minLength":1},"depositId":{"type":"string","pattern":"^[0-9]+$"},"amount":{"type":"string","pattern":"^[0-9]+$"},"toAddress":{"type":"string"},"paymentMethod":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"fiatCurrency":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"conversionRate":{"type":"string","pattern":"^[0-9]+$"},"chainId":{"type":"string","pattern":"^[0-9]+$"},"orchestratorAddress":{"type":"string"},"escrowAddress":{"type":"string"},"callerAddress":{"type":"string"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string"},"fee":{"type":"string","pattern":"^[0-9]+$"}},"required":["recipient","fee"]},"maxItems":5},"postIntentHook":{"type":"string","default":"0x0000000000000000000000000000000000000000"},"data":{"type":"string","pattern":"^0x([0-9a-fA-F]{2})*$","default":"0x"}},"required":["processorName","payeeDetails","depositId","amount","toAddress","paymentMethod","fiatCurrency","conversionRate","chainId","orchestratorAddress","escrowAddress","callerAddress","referralFees"]}}}},"responses":{"200":{"description":"OrchestratorV3 intent signature created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"responseObject":{"type":"object","properties":{"signedIntent":{"type":"string"},"intentData":{"type":"object","properties":{"orchestratorAddress":{"type":"string"},"escrowAddress":{"type":"string"},"depositId":{"type":"string"},"amount":{"type":"string"},"recipientAddress":{"type":"string"},"paymentMethod":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"fiatCurrency":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"conversionRate":{"type":"string"},"callerAddress":{"type":"string"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string"},"fee":{"type":"string","pattern":"^[0-9]+$"}},"required":["recipient","fee"]}},"postIntentHook":{"type":"string"},"data":{"type":"string"},"signatureExpiration":{"type":"string"},"chainId":{"type":"string"},"gatingServiceSignature":{"type":"string"}},"required":["orchestratorAddress","escrowAddress","depositId","amount","recipientAddress","paymentMethod","fiatCurrency","conversionRate","callerAddress","referralFees","postIntentHook","data","signatureExpiration","chainId","gatingServiceSignature"]},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true}},"required":["signedIntent","intentData","offchainId","telegramUsername"]},"statusCode":{"type":"number"},"errorCode":{"type":"string"}},"required":["success","message","statusCode"]}}}}}}}},"components":{"schemas":{"ProviderTemplate":{"type":"object","properties":{"actionType":{"type":"string"},"authLink":{"type":"string"},"body":{"type":"string"},"countryCode":{"type":"string"},"metadata":{"type":"object","properties":{"bodyRegex":{"type":"string"},"fallbackBodyRegex":{"type":"string"},"fallbackMethod":{"type":"string"},"fallbackUrlRegex":{"type":"string"},"metadataUrl":{"type":"string"},"metadataUrlBody":{"type":"string"},"metadataUrlMethod":{"type":"string"},"method":{"type":"string"},"platform":{"type":"string"},"preprocessRegex":{"type":"string"},"shouldReplayRequestInPage":{"type":"boolean"},"shouldSkipCloseTab":{"type":"boolean"},"transactionsExtraction":{"type":"object","properties":{"transactionJsonPathListSelector":{"type":"string"},"transactionJsonPathSelectors":{"type":"object","additionalProperties":{"type":"string"}},"transactionXPathListSelector":{"type":"string"},"transactionXPathSelectors":{"type":"object","additionalProperties":{"type":"string"}}}},"urlRegex":{"type":"string"},"userInput":{"type":"object","properties":{"pollIntervalMs":{"type":"number","minimum":0},"promptText":{"type":"string"},"transactionXpath":{"type":"string"},"waitForXpathMs":{"type":"number","minimum":0}},"required":["transactionXpath"]}},"required":["fallbackMethod","fallbackUrlRegex","method","platform","preprocessRegex","transactionsExtraction","urlRegex"]},"method":{"type":"string"},"mobile":{"type":"object","properties":{"external":{"type":"object","properties":{"actionLink":{"type":"string"},"appStoreLink":{"type":"string"},"playStoreLink":{"type":"string"}},"required":["actionLink"]},"includeAdditionalCookieDomains":{"type":"array","items":{"type":"string"}},"internal":{"type":"object","properties":{"actionCompletedUrlRegex":{"type":"string"},"actionLink":{"type":"string"}},"required":["actionLink"]},"login":{"type":"object","properties":{"nextSelector":{"type":"string"},"passwordSelector":{"type":"string"},"revealTimeoutMs":{"type":"number","minimum":0},"submitSelector":{"type":"string"},"usernameSelector":{"type":"string"}},"required":["passwordSelector"]},"useExternalAction":{"type":"boolean"},"userAgent":{"type":"object","properties":{"android":{"type":"string"},"ios":{"type":"string"}},"required":["android","ios"]}},"required":["includeAdditionalCookieDomains"]},"paramNames":{"type":"array","items":{"type":"string"}},"paramSelectors":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["responseBody","requestBody","requestHeaders","responseHeaders","url"]},"type":{"type":"string"},"value":{"type":"string"}},"required":["type","value"]}},"url":{"type":"string"}},"required":["actionType","authLink","body","metadata","method","paramNames","paramSelectors","url"]},"ProviderManifest":{"type":"object","properties":{"providers":{"type":"array","items":{"type":"object","properties":{"files":{"type":"array","items":{"type":"string"}},"id":{"type":"string"}},"required":["files","id"]}}},"required":["providers"]},"ProviderErrorResponse":{"type":"object","properties":{"message":{"type":"string"},"responseObject":{"nullable":true},"statusCode":{"type":"number"},"success":{"type":"boolean","enum":[false]}},"required":["message","responseObject","statusCode","success"]},"Maker":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"]},"MakerResponse":{"type":"object","properties":{"id":{"type":"string","description":"Composite key: {chainId}_{makerAddressLowercase}","example":"8453_0x1234567890abcdef1234567890abcdef12345678"},"chainId":{"type":"number","description":"Chain ID (8453 = Base)","example":8453},"maker":{"type":"string","description":"Maker wallet address","example":"0x1234567890abcdef1234567890abcdef12345678"},"rank":{"type":"number","description":"Position in leaderboard for current sort","example":1},"totalAmountTaken":{"type":"number","description":"Total filled volume in USD","example":1500000},"grossDeposited":{"type":"number","description":"Total liquidity deposited over time in USD","example":2000000},"totalWithdrawn":{"type":"number","description":"Total liquidity withdrawn in USD","example":500000},"outstandingIntentAmount":{"type":"number","description":"Currently locked in pending intents in USD","example":50000},"activeDepositCount":{"type":"integer","description":"Current active deposits","example":5},"totalDepositCount":{"type":"integer","description":"Lifetime deposit count","example":12},"fulfilledIntents":{"type":"integer","description":"Successfully completed orders","example":342},"prunedIntents":{"type":"integer","description":"Expired/cancelled orders","example":8},"signaledIntents":{"type":"integer","description":"Orders that were signaled","example":350},"totalIntents":{"type":"integer","description":"Total orders received","example":350},"manualReleaseCount":{"type":"integer","description":"Manual releases (disputes)","example":2},"successRateBps":{"type":"integer","description":"Success rate in basis points (0-10000 = 0-100%)","example":9770},"realizedProfitUsd":{"type":"number","description":"Total realized profit in USD","example":15420.5},"aprBps":{"type":"integer","nullable":true,"description":"Annualized return rate in basis points","example":850},"firstSeenAt":{"type":"string","nullable":true,"description":"First activity timestamp (ISO 8601)","example":"2024-03-15T10:30:00Z"},"updatedAt":{"type":"string","description":"Last activity timestamp (ISO 8601)","example":"2024-12-14T18:45:00Z"}},"required":["id","chainId","maker","rank","totalAmountTaken","grossDeposited","totalWithdrawn","outstandingIntentAmount","activeDepositCount","totalDepositCount","fulfilledIntents","prunedIntents","signaledIntents","totalIntents","manualReleaseCount","successRateBps","realizedProfitUsd","aprBps","firstSeenAt","updatedAt"]},"Pagination":{"type":"object","properties":{"total":{"type":"integer","nullable":true,"description":"Total number of makers (null if not available)"},"limit":{"type":"integer","description":"Page size","example":25},"offset":{"type":"integer","description":"Current offset","example":0},"hasMore":{"type":"boolean","description":"Whether there are more results","example":true}},"required":["total","limit","offset","hasMore"]},"CacheMeta":{"type":"object","properties":{"cachedAt":{"type":"string","description":"When the data was cached (ISO 8601)","example":"2024-12-14T18:40:00Z"},"cacheExpiresAt":{"type":"string","description":"When the cache expires (ISO 8601)","example":"2024-12-14T18:45:00Z"},"builtAt":{"type":"string","nullable":true,"description":"When the snapshot backing this response was built (ISO 8601)","example":"2024-12-14T18:40:00Z"},"partial":{"type":"boolean","description":"Whether the backing snapshot had partial window coverage","example":false},"degraded":{"type":"boolean","description":"Whether the response fell back to lifetime data","example":false},"effectiveWindow":{"type":"string","enum":["lifetime","7d","30d","90d"],"description":"Window actually used for this response","example":"lifetime"}},"required":["cachedAt","cacheExpiresAt"]},"LeaderboardResponse":{"type":"object","properties":{"makers":{"type":"array","items":{"$ref":"#/components/schemas/MakerResponse"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"window":{"type":"string","enum":["lifetime","7d","30d","90d"]},"windowStartDay":{"type":"integer","nullable":true},"windowEndDay":{"type":"integer","nullable":true},"meta":{"$ref":"#/components/schemas/CacheMeta"}},"required":["makers","pagination","meta"]},"SummaryResponse":{"type":"object","properties":{"totalMakers":{"type":"integer","description":"Unique maker count","example":1247},"totalRealizedProfitUsd":{"type":"number","description":"Sum of all makers' profit in USD","example":2450000},"totalFilledVolumeUsd":{"type":"number","description":"Sum of all filled volume in USD","example":85000000},"totalGrossDepositedUsd":{"type":"number","description":"Sum of all deposits in USD","example":12500000},"averageSuccessRatePercent":{"type":"number","description":"Average success rate (0-100)","example":94.5},"meta":{"$ref":"#/components/schemas/CacheMeta"}},"required":["totalMakers","totalRealizedProfitUsd","totalFilledVolumeUsd","totalGrossDepositedUsd","averageSuccessRatePercent","meta"]},"MakerRanks":{"type":"object","properties":{"profit":{"type":"integer","nullable":true,"description":"Descending rank by realized profit (1 = top)","example":2},"volume":{"type":"integer","nullable":true,"description":"Descending rank by filled volume","example":5},"liquidity":{"type":"integer","nullable":true,"description":"Descending rank by gross deposited","example":3}},"required":["profit","volume","liquidity"]},"RankResponse":{"type":"object","properties":{"found":{"type":"boolean","description":"Whether the maker exists in the leaderboard","example":true},"total":{"type":"integer","description":"Total makers in the leaderboard","example":1247},"ranks":{"$ref":"#/components/schemas/MakerRanks"},"row":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Composite key: {chainId}_{makerAddressLowercase}","example":"8453_0x1234567890abcdef1234567890abcdef12345678"},"chainId":{"type":"number","description":"Chain ID (8453 = Base)","example":8453},"maker":{"type":"string","description":"Maker wallet address","example":"0x1234567890abcdef1234567890abcdef12345678"},"totalAmountTaken":{"type":"number","description":"Total filled volume in USD","example":1500000},"grossDeposited":{"type":"number","description":"Total liquidity deposited over time in USD","example":2000000},"totalWithdrawn":{"type":"number","description":"Total liquidity withdrawn in USD","example":500000},"outstandingIntentAmount":{"type":"number","description":"Currently locked in pending intents in USD","example":50000},"activeDepositCount":{"type":"integer","description":"Current active deposits","example":5},"totalDepositCount":{"type":"integer","description":"Lifetime deposit count","example":12},"fulfilledIntents":{"type":"integer","description":"Successfully completed orders","example":342},"prunedIntents":{"type":"integer","description":"Expired/cancelled orders","example":8},"signaledIntents":{"type":"integer","description":"Orders that were signaled","example":350},"totalIntents":{"type":"integer","description":"Total orders received","example":350},"manualReleaseCount":{"type":"integer","description":"Manual releases (disputes)","example":2},"successRateBps":{"type":"integer","description":"Success rate in basis points (0-10000 = 0-100%)","example":9770},"realizedProfitUsd":{"type":"number","description":"Total realized profit in USD","example":15420.5},"aprBps":{"type":"integer","nullable":true,"description":"Annualized return rate in basis points","example":850},"firstSeenAt":{"type":"string","nullable":true,"description":"First activity timestamp (ISO 8601)","example":"2024-03-15T10:30:00Z"},"updatedAt":{"type":"string","description":"Last activity timestamp (ISO 8601)","example":"2024-12-14T18:45:00Z"}},"required":["id","chainId","maker","totalAmountTaken","grossDeposited","totalWithdrawn","outstandingIntentAmount","activeDepositCount","totalDepositCount","fulfilledIntents","prunedIntents","signaledIntents","totalIntents","manualReleaseCount","successRateBps","realizedProfitUsd","aprBps","firstSeenAt","updatedAt"],"description":"The maker's row, or null if absent"},"window":{"type":"string","enum":["lifetime","7d","30d","90d"]},"windowStartDay":{"type":"integer","nullable":true},"windowEndDay":{"type":"integer","nullable":true},"meta":{"$ref":"#/components/schemas/CacheMeta"}},"required":["found","total","ranks","row","meta"]},"PlatformStats":{"type":"object","properties":{"id":{"type":"string"},"paymentMethodHash":{"type":"string","description":"Payment method identifier hash","example":"0xabc123..."},"paymentMethodName":{"type":"string","nullable":true,"description":"Human-readable payment method name if available","example":"Venmo"},"totalAmountTaken":{"type":"number","description":"Total volume on this platform in USD","example":800000},"fulfilledIntents":{"type":"integer"},"prunedIntents":{"type":"integer"},"manualReleaseCount":{"type":"integer"},"realizedProfitUsd":{"type":"number","description":"Profit on this platform in USD","example":8500},"computedProfitSnapshots":{"type":"integer"}},"required":["id","paymentMethodHash","paymentMethodName","totalAmountTaken","fulfilledIntents","prunedIntents","manualReleaseCount","realizedProfitUsd","computedProfitSnapshots"]},"CurrencyStats":{"type":"object","properties":{"id":{"type":"string"},"currencyCode":{"type":"string","description":"ISO currency code","example":"USD"},"totalAmountTaken":{"type":"number","description":"Total volume in this currency in USD","example":1200000},"fulfilledIntents":{"type":"integer"},"prunedIntents":{"type":"integer"}},"required":["id","currencyCode","totalAmountTaken","fulfilledIntents","prunedIntents"]},"RecentFill":{"type":"object","properties":{"id":{"type":"string"},"intentId":{"type":"string"},"depositId":{"type":"string"},"fiatCurrency":{"type":"string","description":"Fiat currency code","example":"USD"},"quoteConversionRate":{"type":"string","nullable":true,"description":"Quoted conversion rate","example":"1.015"},"oracleRate":{"type":"string","nullable":true,"description":"Oracle market rate","example":"1.000"},"spreadBps":{"type":"integer","nullable":true,"description":"Spread in basis points","example":150},"amount":{"type":"number","description":"USDC amount","example":5000},"notionalFiatUsd":{"type":"number","nullable":true,"description":"Notional fiat value in USD","example":5075},"feeUsd":{"type":"number","nullable":true,"description":"Fee in USD","example":2.5},"realizedProfitUsd":{"type":"number","nullable":true,"description":"Realized profit in USD","example":72.5},"status":{"type":"string","description":"Snapshot status","example":"COMPUTED"},"createdAt":{"type":"string","description":"Creation timestamp (ISO 8601)","example":"2024-12-14T17:30:00Z"}},"required":["id","intentId","depositId","fiatCurrency","quoteConversionRate","oracleRate","spreadBps","amount","notionalFiatUsd","feeUsd","realizedProfitUsd","status","createdAt"]},"MakerDetailResponse":{"type":"object","properties":{"maker":{"type":"object","properties":{"id":{"type":"string","description":"Composite key: {chainId}_{makerAddressLowercase}","example":"8453_0x1234567890abcdef1234567890abcdef12345678"},"chainId":{"type":"number","description":"Chain ID (8453 = Base)","example":8453},"maker":{"type":"string","description":"Maker wallet address","example":"0x1234567890abcdef1234567890abcdef12345678"},"totalAmountTaken":{"type":"number","description":"Total filled volume in USD","example":1500000},"grossDeposited":{"type":"number","description":"Total liquidity deposited over time in USD","example":2000000},"totalWithdrawn":{"type":"number","description":"Total liquidity withdrawn in USD","example":500000},"outstandingIntentAmount":{"type":"number","description":"Currently locked in pending intents in USD","example":50000},"activeDepositCount":{"type":"integer","description":"Current active deposits","example":5},"totalDepositCount":{"type":"integer","description":"Lifetime deposit count","example":12},"fulfilledIntents":{"type":"integer","description":"Successfully completed orders","example":342},"prunedIntents":{"type":"integer","description":"Expired/cancelled orders","example":8},"signaledIntents":{"type":"integer","description":"Orders that were signaled","example":350},"totalIntents":{"type":"integer","description":"Total orders received","example":350},"manualReleaseCount":{"type":"integer","description":"Manual releases (disputes)","example":2},"successRateBps":{"type":"integer","description":"Success rate in basis points (0-10000 = 0-100%)","example":9770},"realizedProfitUsd":{"type":"number","description":"Total realized profit in USD","example":15420.5},"aprBps":{"type":"integer","nullable":true,"description":"Annualized return rate in basis points","example":850},"firstSeenAt":{"type":"string","nullable":true,"description":"First activity timestamp (ISO 8601)","example":"2024-03-15T10:30:00Z"},"updatedAt":{"type":"string","description":"Last activity timestamp (ISO 8601)","example":"2024-12-14T18:45:00Z"}},"required":["id","chainId","maker","totalAmountTaken","grossDeposited","totalWithdrawn","outstandingIntentAmount","activeDepositCount","totalDepositCount","fulfilledIntents","prunedIntents","signaledIntents","totalIntents","manualReleaseCount","successRateBps","realizedProfitUsd","aprBps","firstSeenAt","updatedAt"],"description":"Maker statistics"},"platformStats":{"type":"array","items":{"$ref":"#/components/schemas/PlatformStats"},"description":"Platform-specific statistics"},"currencyStats":{"type":"array","items":{"$ref":"#/components/schemas/CurrencyStats"},"description":"Currency-specific statistics"},"recentFills":{"type":"array","items":{"$ref":"#/components/schemas/RecentFill"},"description":"Recent profit snapshots"},"meta":{"$ref":"#/components/schemas/CacheMeta"}},"required":["maker","platformStats","currencyStats","recentFills","meta"]},"AssetTransfer":{"type":"object","properties":{"chain":{"type":"string"},"tokenContract":{"type":"string"},"txHash":{"type":"string"},"blockNumber":{"type":"integer"},"timestamp":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"type":{"type":"string","enum":["SEND","DEPOSIT"],"description":"Transfer direction from the authenticated wallet perspective","example":"SEND"},"amountRaw":{"type":"string"},"amountFormatted":{"type":"string"}},"required":["chain","tokenContract","txHash","blockNumber","timestamp","from","to","type","amountRaw","amountFormatted"]},"TransactionHistoryResponse":{"type":"object","properties":{"walletAddress":{"type":"string"},"chain":{"type":"string"},"chainId":{"type":"number"},"tokenContract":{"type":"string"},"assetTransfers":{"type":"array","items":{"type":"object","properties":{"chain":{"type":"string"},"tokenContract":{"type":"string"},"txHash":{"type":"string"},"blockNumber":{"type":"integer"},"timestamp":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"type":{"type":"string","enum":["SEND","DEPOSIT"],"description":"Transfer direction from the authenticated wallet perspective","example":"SEND"},"amountRaw":{"type":"string"},"amountFormatted":{"type":"string"}},"required":["chain","tokenContract","txHash","blockNumber","timestamp","from","to","type","amountRaw","amountFormatted"]}}},"required":["walletAddress","chain","chainId","tokenContract","assetTransfers"]},"DepositBundleResponse":{"type":"object","properties":{"deposit":{"type":"object","properties":{"id":{"type":"string"},"chainId":{"type":"number"},"escrowAddress":{"type":"string"},"depositId":{"type":"string"},"depositor":{"type":"string"},"delegate":{"type":"string","nullable":true},"rateManagerId":{"type":"string","nullable":true},"rateManagerAddress":{"type":"string","nullable":true},"delegatedAt":{"type":"string","nullable":true},"token":{"type":"string"},"remainingDeposits":{"type":"string"},"intentAmountMin":{"type":"string"},"intentAmountMax":{"type":"string"},"acceptingIntents":{"type":"boolean"},"status":{"type":"string"},"outstandingIntentAmount":{"type":"string"},"totalAmountTaken":{"type":"string"},"totalWithdrawn":{"type":"string"},"successRateBps":{"type":"number"},"totalIntents":{"type":"number"},"signaledIntents":{"type":"number"},"fulfilledIntents":{"type":"number"},"prunedIntents":{"type":"number"},"blockNumber":{"type":"string"},"timestamp":{"type":"string"},"txHash":{"type":"string"},"updatedAt":{"type":"string"},"whitelistHookAddress":{"type":"string","nullable":true},"paymentMethods":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chainId":{"type":"number"},"depositIdOnContract":{"type":"string"},"depositId":{"type":"string"},"paymentMethodHash":{"type":"string"},"intentGatingService":{"type":"string"},"payeeDetailsHash":{"type":"string"},"active":{"type":"boolean"}},"required":["depositId","paymentMethodHash","intentGatingService","payeeDetailsHash"]}},"currencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chainId":{"type":"number"},"depositIdOnContract":{"type":"string"},"depositId":{"type":"string"},"paymentMethodHash":{"type":"string"},"currencyCode":{"type":"string"},"minConversionRate":{"type":"string"},"conversionRate":{"type":"string","nullable":true},"takerConversionRate":{"type":"string","nullable":true},"managerFee":{"type":"string","nullable":true},"rateSource":{"type":"string","nullable":true},"oracleRate":{"type":"string","nullable":true},"effectiveOracleRate":{"type":"string","nullable":true},"lastOracleUpdatedAt":{"type":"string","nullable":true},"adapter":{"type":"string","nullable":true},"adapterConfig":{"type":"string","nullable":true},"feed":{"type":"string","nullable":true},"feedDecimals":{"type":"number","nullable":true},"spreadBps":{"type":"number","nullable":true},"maxStaleness":{"type":"string","nullable":true},"invert":{"type":"boolean","nullable":true},"kind":{"type":"string","nullable":true},"managerRate":{"type":"string","nullable":true},"rateManagerId":{"type":"string","nullable":true}},"required":["depositId","paymentMethodHash","currencyCode","minConversionRate"]}}},"required":["id","chainId","escrowAddress","depositId","depositor","token","remainingDeposits","intentAmountMin","intentAmountMax","acceptingIntents","status","outstandingIntentAmount","totalWithdrawn","totalIntents","signaledIntents","fulfilledIntents","prunedIntents","timestamp","updatedAt","paymentMethods","currencies"]},"intents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"intentHash":{"type":"string"},"depositId":{"type":"string"},"orchestratorAddress":{"type":"string"},"verifier":{"type":"string"},"owner":{"type":"string"},"toAddress":{"type":"string"},"amount":{"type":"string"},"fiatCurrency":{"type":"string"},"paymentMethodHash":{"type":"string","nullable":true},"conversionRate":{"type":"string"},"status":{"type":"string"},"isExpired":{"type":"boolean"},"signalTimestamp":{"type":"string"},"expiryTime":{"type":"string","nullable":true},"signalTxHash":{"type":"string"},"fulfillTxHash":{"type":"string","nullable":true},"fulfillTimestamp":{"type":"string","nullable":true},"pruneTxHash":{"type":"string","nullable":true},"pruneTimestamp":{"type":"string","nullable":true},"rateManagerId":{"type":"string","nullable":true},"managerFee":{"type":"string","nullable":true},"managerFeeRecipient":{"type":"string","nullable":true},"managerFeeAmount":{"type":"string","nullable":true},"paymentAmount":{"type":"string","nullable":true},"paymentCurrency":{"type":"string","nullable":true},"paymentTimestamp":{"type":"string","nullable":true},"paymentId":{"type":"string","nullable":true},"releasedAmount":{"type":"string","nullable":true},"takerAmountNetFees":{"type":"string","nullable":true},"updatedAt":{"type":"string"}},"required":["id","intentHash","depositId","orchestratorAddress","verifier","owner","toAddress","amount","fiatCurrency","conversionRate","status","signalTimestamp","signalTxHash","updatedAt"]}},"events":{"type":"object","properties":{"deposits":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"depositId":{"type":"string"},"depositor":{"type":"string"},"amount":{"type":"string"}},"required":["id","depositId","depositor","amount"]}},"fundsAdded":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"depositId":{"type":"string"},"depositor":{"type":"string"},"amount":{"type":"string"}},"required":["id","depositId","depositor","amount"]}},"withdrawals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"depositId":{"type":"string"},"depositor":{"type":"string"},"amount":{"type":"string"}},"required":["id","depositId","depositor","amount"]}}},"required":["deposits","fundsAdded","withdrawals"]},"profitSnapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chainId":{"type":"number"},"maker":{"type":"string"},"intentId":{"type":"string"},"depositId":{"type":"string"},"fiatCurrency":{"type":"string"},"quoteConversionRate":{"type":"string"},"oracleRate":{"type":"string","nullable":true},"spreadBps":{"type":"number","nullable":true},"amount":{"type":"string"},"notionalFiatUsdCents":{"type":"string","nullable":true},"feeUsd":{"type":"string","nullable":true},"realizedProfitUsdCents":{"type":"string","nullable":true},"priceSnapshotId":{"type":"string","nullable":true},"status":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","chainId","maker","intentId","depositId","fiatCurrency","quoteConversionRate","amount","status","createdAt","updatedAt"]}},"fundActivities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chainId":{"type":"number"},"depositId":{"type":"string"},"depositor":{"type":"string"},"activityType":{"type":"string"},"amount":{"type":"string"},"blockNumber":{"type":"string"},"timestamp":{"type":"string"},"txHash":{"type":"string"}},"required":["id","chainId","depositId","depositor","activityType","amount","blockNumber","timestamp","txHash"]}},"dailySnapshots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chainId":{"type":"number"},"depositId":{"type":"string"},"depositor":{"type":"string"},"dayTimestamp":{"type":"string"},"remainingDeposits":{"type":"string"},"outstandingIntentAmount":{"type":"string"},"totalAmountTaken":{"type":"string"},"totalWithdrawn":{"type":"string"},"signaledIntents":{"type":"number"},"fulfilledIntents":{"type":"number"},"prunedIntents":{"type":"number"},"successRateBps":{"type":"number"},"dailyVolume":{"type":"string"},"dailyPnlUsdCents":{"type":"string"},"cumulativeVolume":{"type":"string"},"cumulativePnlUsdCents":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","chainId","depositId","depositor","dayTimestamp","remainingDeposits","outstandingIntentAmount","totalAmountTaken","totalWithdrawn","signaledIntents","fulfilledIntents","prunedIntents","successRateBps","dailyVolume","dailyPnlUsdCents","cumulativeVolume","cumulativePnlUsdCents","updatedAt"]}}},"required":["deposit","intents","events","profitSnapshots","fundActivities","dailySnapshots"]},"WalletScreeningResponse":{"type":"object","properties":{"walletAddress":{"type":"string"},"allowed":{"type":"boolean"},"blocked":{"type":"boolean"},"source":{"type":"string","enum":["disabled","blocked_wallet","chainalysis","unavailable"]}},"required":["walletAddress","allowed","blocked","source"]},"MakerV2":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"]},"MakerPagination":{"type":"object","properties":{"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1,"maximum":200},"totalCount":{"type":"integer","minimum":0},"totalPages":{"type":"integer","minimum":0}},"required":["page","pageSize","totalCount","totalPages"]},"MakerListResponse":{"type":"object","properties":{"makers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"processorName":{"type":"string"},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true},"hashedOnchainId":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"isBusiness":{"type":"boolean","default":false},"revoked":{"type":"boolean","default":false},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","processorName","offchainId","hashedOnchainId","createdAt"]}},"pagination":{"$ref":"#/components/schemas/MakerPagination"}},"required":["makers","pagination"]},"MakerBatchLookupBody":{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","properties":{"processorName":{"type":"string","minLength":1,"description":"Payment processor name","example":"venmo"},"hashes":{"type":"array","items":{"type":"string","minLength":1,"pattern":"^(0x)?[a-fA-F0-9]+$"},"minItems":1,"description":"Hashed on-chain IDs to look up","example":["0xabc","0xdef"]}},"required":["processorName","hashes"]},"minItems":1}},"required":["requests"]},"Intent":{"type":"object","properties":{"signedIntent":{"type":"string"},"intentData":{"type":"object","properties":{"orchestratorAddress":{"type":"string"},"escrowAddress":{"type":"string"},"depositId":{"type":"string"},"amount":{"type":"string"},"recipientAddress":{"type":"string"},"paymentMethod":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"fiatCurrency":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"conversionRate":{"type":"string"},"callerAddress":{"type":"string"},"referralFees":{"type":"array","items":{"type":"object","properties":{"recipient":{"type":"string"},"fee":{"type":"string","pattern":"^[0-9]+$"}},"required":["recipient","fee"]}},"signatureExpiration":{"type":"string"},"chainId":{"type":"string"},"gatingServiceSignature":{"type":"string"}},"required":["orchestratorAddress","escrowAddress","depositId","amount","recipientAddress","paymentMethod","fiatCurrency","conversionRate","callerAddress","referralFees","signatureExpiration","chainId","gatingServiceSignature"]},"offchainId":{"type":"string"},"telegramUsername":{"type":"string","nullable":true}},"required":["signedIntent","intentData","offchainId","telegramUsername"]}},"parameters":{},"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"},"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}}}