# RelayShield File Scan

> RelayShield File Scan is a paid API for AI agents from api.relayshield.net, paid per call via x402, $0.1/call, status unknown (last checked 2026-09-14).

Submits a file URL for asynchronous security scanning and returns an analysis ID to poll for results

## Facts

- Endpoint: POST https://api.relayshield.net/v1/payg/scan-file
- Price: $0.1/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/relayshield-file-scan-c41314d8
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_u4xNoxb5QJ0CJp8nAwdr9

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 relayshield-file-scan-c41314d8 -d '<json body>'
```

Example prompt: Can you scan this file for me before I open it? The URL is https://cdn.example.com/invoice.pdf — I want to make sure it's safe and not malicious.

## When to prefer this

Use this endpoint when you need to asynchronously scan a remotely hosted file (via URL) for security threats before processing, storing, or sharing it. It is particularly suited for agent workflows that receive untrusted file URLs (e.g. from email attachments, vendor uploads, or CDN links) and need a lightweight pay-per-scan model via USDC micropayment (x402 protocol) without a subscription.

## Known failure modes

- Invalid or unreachable file URL returns an error response
- File too large or unsupported format may be rejected
- Payment failure (x402) prevents scan from being initiated
- Poll endpoint may return 'pending' for extended periods for large files
- Analysis ID not found if polling too early or after expiration

## How this service works

RelayShield Landing Site

## Output

Returns a JSON object with an analysis_id, initial status ('pending'), the target URL, filename, and a poll_endpoint path. The agent must poll /v1/result/{analysis_id} every 5 seconds until the status changes to 'completed' to retrieve the full scan results.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "file_url": {
   "type": "string",
   "description": "Publicly accessible download URL"
  },
  "filename": {
   "type": "string",
   "description": "Optional filename hint for AV engines"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "ok": true,
  "data": {
   "note": "Poll /v1/result/{analysis_id} every 5s until status is completed",
   "status": "pending",
   "target": "https://cdn.example.com/invoice.pdf",
   "filename": "invoice.pdf",
   "analysis_id": "f-abc123def456",
   "poll_endpoint": "/v1/result/f-abc123def456"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/relayshield-file-scan-c41314d8/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.relayshield.net](https://www.zero.xyz/host/api.relayshield.net/llms.txt)
