NewAPIVerve Academy: free courses and certifications anyone can verify.Explore the Academy →

JWT Decoder API

POST

Read claims, headers, and expiration details from any JWT.

JWT Decoder decodes JWT tokens to reveal header and payload information, and on paid plans verifies the signature against a public key you supply. It handles JSON web token decode from any language over REST, so you can inspect claims and expiry without adding a JWT library.

Try it — live request, no key required

Request
POSTapi.apiverve.com/v1/jwtdecoder
Body
Verification
Format

No key required to try it. Get a key to use it in your app.

Example
{
  "status": "ok",
  "error": null,
  "data": {
    "header": {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "sample-key-1"
    },
    "payload": {
      "sub": "1234567890",
      "name": "John Doe",
      "iss": "https://auth.example.com",
      "aud": "api.example.com",
      "iat": 1767225600,
      "exp": 2082758400
    },
    "signature": "hP0O9ELZGk-KN3upyYqdOnPY2Ig7FAzfUY_xytzOCBIhn0_TWdzl2dbLPlj0rkCDsRIQX0I5t9Xv551VI1W9dmvRGtVztyeD3IKHnIn24baOUtjU7Eb6FHL_iWMu5PqMeQJPFytuYbYhzjjCNfFPgAciGgn1Celr8H7_q51x5naMb-nbTvBc5SIX9MBnegGzabExBYQ-OsdKOoYmK0uymNIgC3834jlPuhuJHkPsxX7ncKoSQ4wheiLaZDwFANlT1NrD2XgKyyh-LIIg9CRwqB_WDktZ_R6UusNkLRhKJ20ff29ttkyRhJZzEqRRK60xYn7iPyg4YQni1J_w-oAa_w",
    "isExpired": false,
    "expiresAt": "2036-01-01T00:00:00.000Z",
    "issuedAt": "2026-01-01T00:00:00.000Z",
    "tokenAge": "309 days",
    "algorithm": "RS256",
    "expiresIn": 288757380,
    "notYetValid": false,
    "securityAnalysis": {
      "isUnsecured": false,
      "hasExpiration": true,
      "isLongLived": true,
      "issues": [
        "Token lifetime exceeds 24 hours"
      ]
    },
    "warning": "Signature verified with the supplied public key.",
    "signatureVerification": {
      "verified": true,
      "algorithm": "RS256",
      "keyType": "RSA",
      "reason": null,
      "claimsValid": true,
      "claimsReason": null
    }
  }
}

About the JWT Decoder API

On paid plans, pass a PEM public key, certificate or JWK as publicKey to verify RS, PS, ES and EdDSA signatures and check exp and nbf. HMAC (HS*) secrets and alg none are always refused, and keys are never fetched from URLs.

What people use it for

Token Debugging
Debug and inspect JWT tokens during development to view header and payload contents
Token Analysis
Analyze token structure and claims for free, and verify the signature against a public key on paid plans
Expiration Check
Check token expiration status and view expiration timestamps
Token Inspection
Inspect token contents for troubleshooting authentication issues

Ways to call it

One endpoint, many ways in — REST with JSON, XML, YAML and CSV, plus GraphQL and an MCP interface for AI agents.

JSON
Default REST response
XML
Markup format
YAML
Human-readable
CSV
Tabular export
Beta
GraphQL
Query language
New
MCP
For AI agents

Other ways to use JWT Decoder

Same data, same APIVerve account, same credit balance — one key works on all of them.

Questions.

Common questions about the JWT Decoder API.

Read the docs →
Does this API verify cryptographic signatures?
Yes, on paid plans. Pass the issuer's public key as publicKey (a PEM public key, an X.509 certificate or a JWK) and the response gains a signatureVerification block saying whether the signature matches. RS256/384/512, PS256/384/512, ES256/384/512 and EdDSA are supported. HMAC (HS256 and friends) is never accepted, because a shared secret sent to a third party is no longer secret, and keys are never fetched from jku, x5u or JWKS URLs. Without publicKey, the API only decodes.
How many token decodes does the Free plan cover?
The Free plan includes 200 credits per month, covering 200 token decodes at 1 credit per call. For higher debugging or logging volume, the Starter plan provides 200,000 decodes per month, which works out to about $0.15 per 1,000 calls.
Are token age, security analysis and signature verification included on the Free plan?
No. The human-readable token age, structural security analysis and signature verification with publicKey are available only on paid plans. Free requests return the decoded header, payload claims, raw signature and expiration flags; a publicKey sent on the Free plan is ignored.
What if the signature is valid but the token has expired?
Signature and time claims are reported separately. signatureVerification.verified says whether the key signed the token, and claimsValid says whether exp and nbf hold right now, with claimsReason naming the claim that failed. A correctly signed but expired token comes back verified: true and claimsValid: false.
What happens if a token does not have an expiration claim?
If a token omits an exp claim, the expiresAt and expiresIn fields return null. The response still provides all existing payload claims, header values, and other present timestamps like the issued-at time without failing.
What structural issues does the security analysis detect?
On paid plans, the security analysis inspects the token structure for common vulnerabilities, including unsigned tokens using alg:none, missing expiration claims, and tokens configured with an unusually long lifetime. It surfaces these flags directly in the response for quick debugging.

Ready to build with JWT Decoder? Start with 200 free credits — one key unlocks all 300+ APIs.

Explore the catalog

300+ APIs on the same key and the same response shape.

Browse all APIs