{"openapi":"3.1.0","info":{"title":"Jupiter Token Verification API","version":"1.0.0","description":"API for express token verification and metadata updates"},"servers":[{"url":"https://token-verify-api.jup.ag"}],"components":{"schemas":{"CheckEligibilityResponse":{"type":"object","properties":{"tokenExists":{"type":"boolean","description":"Whether the token exists on-chain"},"isVerified":{"type":"boolean","description":"Whether the token is already verified"},"canVerify":{"type":"boolean","description":"Whether a verification request can be submitted"},"canMetadata":{"type":"boolean","description":"Whether a metadata update can be submitted"},"verificationError":{"type":"string","description":"Reason verification is not allowed"},"metadataError":{"type":"string","description":"Reason metadata update is not allowed"}},"required":["tokenExists","isVerified","canVerify","canMetadata"]},"ErrorResponse":{"type":"object","properties":{"status":{"type":"number"},"message":{"type":"string"},"error":{"type":"string"}}},"CraftTxnResponse":{"type":"object","properties":{"receiverAddress":{"type":"string"},"mint":{"type":"string","example":"JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"},"amount":{"type":"string"},"tokenDecimals":{"type":"number"},"tokenUsdRate":{"type":"number"},"feeLamports":{"type":"number"},"feeUsdAmount":{"type":"number"},"feeMint":{"type":"string"},"feeTokenDecimals":{"type":"number"},"feeAmount":{"type":"number"},"transaction":{"type":"string","description":"Base64-encoded unsigned transaction"},"requestId":{"type":"string","description":"Use this requestId in the execute step"},"totalTime":{"type":"number"},"expireAt":{"type":"string"},"error":{"type":"string"},"code":{"type":"number"},"gasless":{"type":"boolean"}},"required":["receiverAddress","mint","amount","tokenDecimals","feeLamports","feeMint","feeTokenDecimals","feeAmount","requestId","totalTime","code","gasless"]},"ExpressExecuteResponse":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Failed"]},"signature":{"type":"string","description":"Transaction signature on success"},"error":{"type":"string"},"code":{"type":"number"},"totalTime":{"type":"number"},"verificationCreated":{"type":"boolean","description":"Whether a verification request was created"},"metadataCreated":{"type":"boolean","description":"Whether a metadata update request was created"}},"required":["status","totalTime","verificationCreated","metadataCreated"]},"TokenMetadataInput":{"type":"object","properties":{"tokenId":{"type":"string"},"icon":{"type":["string","null"]},"name":{"type":["string","null"]},"symbol":{"type":["string","null"]},"website":{"type":["string","null"]},"telegram":{"type":["string","null"]},"twitter":{"type":["string","null"]},"twitterCommunity":{"type":["string","null"]},"discord":{"type":["string","null"]},"instagram":{"type":["string","null"]},"tiktok":{"type":["string","null"]},"circulatingSupply":{"type":["string","null"]},"useCirculatingSupply":{"type":["boolean","null"]},"tokenDescription":{"type":["string","null"]},"coingeckoCoinId":{"type":["string","null"]},"useCoingeckoCoinId":{"type":["boolean","null"]},"circulatingSupplyUrl":{"type":["string","null"]},"useCirculatingSupplyUrl":{"type":["boolean","null"]},"otherUrl":{"type":["string","null"]}},"required":["tokenId"],"description":"Optional token metadata to submit alongside verification"},"ExpressExecuteBody":{"type":"object","properties":{"transaction":{"type":"string","description":"Base64-encoded signed transaction from craft-txn"},"requestId":{"type":"string","description":"requestId from craft-txn response"},"senderAddress":{"type":"string","description":"Solana wallet address of the sender"},"tokenId":{"type":"string","description":"Token mint address to verify"},"twitterHandle":{"type":"string","description":"Twitter handle of the token project"},"senderTwitterHandle":{"type":"string","description":"Twitter handle of the submitter"},"description":{"type":"string","description":"Reason or description for verification request"},"tokenMetadata":{"$ref":"#/components/schemas/TokenMetadataInput"}},"required":["transaction","requestId","senderAddress","tokenId","twitterHandle","description"]}},"parameters":{}},"paths":{"/express/check-eligibility":{"get":{"summary":"Check express verification eligibility","description":"Checks whether a token is eligible for express (premium) verification and metadata updates.","tags":["Express Verification"],"parameters":[{"schema":{"type":"string","description":"Token mint address to check eligibility for"},"required":true,"description":"Token mint address to check eligibility for","name":"tokenId","in":"query"}],"responses":{"200":{"description":"Eligibility check result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckEligibilityResponse"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/payments/express/craft-txn":{"get":{"summary":"Craft express verification payment transaction","description":"Crafts an unsigned Solana transaction for a 1000 JUP express verification payment. The returned transaction and requestId are used in the execute step.","tags":["Express Verification"],"parameters":[{"schema":{"type":"string","description":"Solana wallet address of the transaction sender"},"required":true,"description":"Solana wallet address of the transaction sender","name":"senderAddress","in":"query"}],"responses":{"200":{"description":"Successfully crafted a 1000 JUP payment transaction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CraftTxnResponse"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Failed to craft transaction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/payments/express/execute":{"post":{"summary":"Execute express verification payment","description":"Signs and submits the crafted transaction, records payment, creates an express (premium) verification request, and optionally submits token metadata updates.","tags":["Express Verification"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpressExecuteBody"}}}},"responses":{"200":{"description":"Transaction executed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpressExecuteResponse"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Token not eligible for verification or metadata update","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Transaction execution or server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"webhooks":{}}