# Vextorium JWT Verify

> Vextorium JWT Verify is a paid API for AI agents from api.vextorium.com, paid per call via x402, $0.003/call, status unknown (last checked 2026-10-11).

Decodes a JWT and verifies its signature using a JWKS URL or HMAC secret, checking expiry, audience, and issuer, then returns the header, claims, and exact failure reason if invalid.

## Facts

- Endpoint: POST https://api.vextorium.com/v1/jwt-verify?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/vextorium-jwt-verify-e5a2ad58
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_L844hfvgiVCmDKmv9ld0t

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability vextorium-jwt-verify-e5a2ad58 -d '<json body>'
```

Example prompt: Can you verify this JWT for me — token is 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...' — check the signature against the JWKS at https://auth.example.com/.well-known/jwks.json and confirm the issuer is 'https://auth.example.com' and the audience is 'my-api'?

## When to prefer this

Use this endpoint when you need to programmatically verify a JWT's cryptographic signature (RS256, ES256, EdDSA, HS256, etc.) and validate its standard claims (exp, iss, aud) in a single call without building your own JWKS-fetching or HMAC verification logic. It is especially useful for agent workflows that need to gate actions on authenticated tokens, or for debugging auth failures where the exact failure reason matters. Tokens are not stored, making it suitable for sensitive auth flows.

## Known failure modes

- Token is malformed or not a valid JWT — returns invalid with a descriptive reason
- No JWKS URL or secret provided — token is decoded but signature is NOT verified, reason field says so
- JWKS URL is unreachable or returns no matching key — returns invalid with key fetch failure reason
- Token is expired — returns invalid with expiry reason
- Issuer or audience mismatch — returns invalid with mismatch reason
- Algorithm mismatch between token header and provided verification method

## How this service works

Decode a JWT and verify its signature with the public keys of a JWKS URL (RS256, ES256, EdDSA...) or an HMAC secret, checking expiry, audience and issuer; returns header, claims and the exact reason if invalid. Tokens are not stored.

## Output

A JSON object containing: a boolean validity flag, the decoded JWT header (alg, typ), the decoded claims payload (sub, name, iat, etc.), the detected algorithm, and a human-readable reason string explaining exactly why the token is invalid if verification fails. Tokens are never stored server-side.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "required": [
      "token"
     ],
     "properties": {
      "token": {
       "type": "string"
      },
      "issuer": {
       "type": "string"
      },
      "secret": {
       "type": "string"
      },
      "audience": {
       "type": "string"
      },
      "jwks_url": {
       "type": "string"
      }
     }
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": [
      "object",
      "null"
     ],
     "properties": {
      "valid": {},
      "header": {
       "type": [
        "object",
        "null"
       ],
       "properties": {
        "alg": {
         "type": [
          "string",
          "null"
         ]
        },
        "typ": {
         "type": [
          "string",
          "null"
         ]
        }
       }
      },
      "reason": {
       "type": [
        "string",
        "null"
       ]
      },
      "content": {
       "type": [
        "object",
        "null"
       ],
       "properties": {
        "iat": {
         "type": [
          "number",
          "null"
         ]
        },
        "sub": {
         "type": [
          "string",
          "null"
         ]
        },
        "name": {
         "type": [
          "string",
          "null"
         ]
        }
       }
      },
      "algorithm": {
       "type": [
        "string",
        "null"
       ]
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "valid": null,
  "header": {
   "alg": "HS256",
   "typ": "JWT"
  },
  "reason": "No jwks_url or secret: decoded only, signature NOT verified.",
  "content": {
   "iat": 1516239022,
   "sub": "1234567890",
   "name": "John Doe"
  },
  "algorithm": "HS256"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/vextorium-jwt-verify-e5a2ad58/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.vextorium.com](https://www.zero.xyz/host/api.vextorium.com/llms.txt)
