Skip to main content
The Express Verification API lets you submit tokens for Jupiter VRFD verification and update token metadata programmatically. This is the same Express flow available on the VRFD UI, exposed as an API for launchpads, agents, and projects that need to integrate verification into their token creation pipelines. Each Express submission costs 1000 JUP, which prevents spam and prioritizes requests. You can pay in JUP directly, or in SOL, USDC, or JUPUSD, which are converted to 1000 JUP via Ultra. Standard submissions on the VRFD site are free. You can request verification and metadata updates together. Each is reviewed independently, so a metadata update can proceed even if verification is declined.

Payment Currencies

Pass paymentCurrency as a token symbol (for example SOL), not a mint address. JUP is the default and transfers directly. SOL, USDC, and JUPUSD are converted to 1000 JUP via an Ultra swap.

Prerequisites

  1. Get an API key at Portal. All requests require the x-api-key header.
  2. The submitting wallet needs enough of your chosen payment currency for 1000 JUP. Transactions are gasless, so the wallet does not need extra SOL for network fees.

Flow

The API is a three-step flow: check eligibility, craft a payment transaction, sign it, then execute.

Step 1: Check Eligibility (Optional)

Check if the token can be submitted for verification and/or metadata updates. This step is optional since the execute step also rejects ineligible tokens before charging payment, but it keeps your flow clean and avoids unnecessary transaction crafting. The most common reason for ineligibility is an existing pending submission for the token.
If both canVerify and canMetadata are false, the submission will be rejected before any payment is charged.

Step 2: Craft the Payment Transaction

This returns an unsigned Solana transaction worth 1000 JUP. By default it crafts a direct JUP transfer. Pass paymentCurrency to pay in SOL, USDC, or JUPUSD instead, which crafts an Ultra swap to JUP (see Pay with SOL, USDC, or JUPUSD). Save the requestId from the response, you need it in the next step.
The response includes the base64-encoded unsigned transaction and a requestId that links this payment to your execute request.
Non-JUP payments return additional swap sizing fields. See Pay with SOL, USDC, or JUPUSD.

Step 3: Sign and Execute

Sign the transaction from Step 2 with your wallet, then submit it along with the token details and metadata.
After submission, track your request status at verified.jup.ag/tokens/browse.

Pay with SOL, USDC, or JUPUSD

To pay with a non-JUP currency, set paymentCurrency on both the craft and execute steps. The craft step returns an Ultra swap that converts your input token into JUP, sized with a small buffer so the swap yields at least 1000 JUP. Request the transaction with your chosen currency:
On non-JUP paths the response includes these swap sizing fields in addition to the common fields above: When you execute, pass paymentAmount (required on non-JUP paths) and jupOutputAmount (optional, for revenue tracking). paymentAmount is the input amount from the craft response’s quotedInputAmount, and jupOutputAmount is the craft response’s amount:

Token Metadata Fields

The tokenMetadata object in the execute request is optional. Include it to update metadata alongside your verification submission. Only tokenId is required, all other fields are optional.

Known Projects and Launchpads

If you are a known project or launchpad on Solana, DM @jup_vrfd from your organization account on X. This links your Developer Platform OrgId to your submissions, which helps the VRFD team review them.

API Reference

Check Eligibility

Check if a token can be verified

Craft Transaction

Get an unsigned 1000 JUP payment transaction

Execute

Submit signed transaction with token details