# BotPay x402 Video Access API

> BotPay x402 Video Access API is a paid API for AI agents from video.botpay.network, paid per call via x402, $0.01/call, status down (last checked 2026-09-15).

Pay 0.01 USDC on Base mainnet via x402 to unlock a short-lived streaming URL for a BotPay demo video.

## Facts

- Endpoint: POST https://video.botpay.network/api/x402/video/watch
- Price: $0.01/call
- Payment: x402
- Status: down
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/botpay-x402-video-access-api-fe73a8df
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_K525IVGKDrDLsYhpGR37q

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 botpay-x402-video-access-api-fe73a8df -d '<json body>'
```

Example prompt: Unlock the BotPay demo video with ID 'demo-intro-001' by paying 0.01 USDC on Base — I want the streaming link and how long I have to watch it.

## When to prefer this

Use this endpoint when you need to unlock a specific BotPay-hosted video that sits behind an x402 micropayment gate on Base mainnet. It is the canonical endpoint for paying 0.01 USDC to receive a time-limited stream URL and is ideal when building agents that handle pay-per-view crypto-native video access flows.

## Known failure modes

- Payment rejected or insufficient USDC balance — payment.status indicates failure
- Invalid or unknown videoId — server returns error with success: false
- Access token expired — expiresAt has passed, a new payment is required
- Network error on Base mainnet — transaction cannot be confirmed
- x402 protocol handshake failure — 402 response not resolved correctly

## How this service works

Pay 0.01 USDC on Base mainnet through x402 to unlock a short-lived BotPay demo video stream.

## Output

Returns a short-lived stream URL, playback page URL, video title, content type, duration in seconds, thumbnail URL, description, access expiry timestamp and countdown, payment confirmation details (asset, chain, amount, status, network, asset address, display amount), and a success flag.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "videoId": {
   "type": "string",
   "description": "The video ID to unlock."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "type": {
   "type": "string",
   "examples": [
    "x402_video_access"
   ]
  },
  "video": {
   "type": "object",
   "properties": {
    "id": {
     "type": "string"
    },
    "title": {
     "type": "string"
    },
    "streamUrl": {
     "type": "string"
    },
    "contentType": {
     "type": "string"
    },
    "description": {
     "type": "string"
    },
    "thumbnailUrl": {
     "type": [
      "string",
      "null"
     ]
    },
    "durationSeconds": {
     "type": "number"
    },
    "playbackPageUrl": {
     "type": "string"
    }
   }
  },
  "access": {
   "type": "object",
   "properties": {
    "expiresAt": {
     "type": "string"
    },
    "expiresIn": {
     "type": "number"
    }
   }
  },
  "message": {
   "type": "string"
  },
  "payment": {
   "type": "object",
   "properties": {
    "asset": {
     "type": "string"
    },
    "chain": {
     "type": "string"
    },
    "amount": {
     "type": "string"
    },
    "status": {
     "type": "string"
    },
    "network": {
     "type": "string"
    },
    "assetAddress": {
     "type": "string"
    },
    "displayAmount": {
     "type": "string"
    }
   }
  },
  "success": {
   "type": "boolean"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/botpay-x402-video-access-api-fe73a8df/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from video.botpay.network](https://www.zero.xyz/host/video.botpay.network/llms.txt)
