---
title: "Scan supplied text or a diff for secrets"
method: POST
path: "/v1/payg/secret-scan-text"
tags: ["x402 pay-per-call"]
---

# Scan supplied text or a diff for secrets

`POST /v1/payg/secret-scan-text`

## Request

- Base URL: `https://api.relayshield.net`
- URL: `https://api.relayshield.net/v1/payg/secret-scan-text`
- Auth: none required

Scan raw text content or a unified diff for exposed API keys, tokens and credentials, matched against the same pattern set used across RelayShield's corpus. Runs entirely locally with no external API call. Call before a commit, PR or pasted config ships with a live secret in it.

**Billing.** $0.05 in USDC per call over x402, on Base or Solana. No API key, no signup and no
subscription. Send the request with no payment header, take the `402` challenge that comes back,
pay it, and repeat the request. Only successful calls are charged.

## Request body

- object
  - `content` string: Raw file content to scan. Mutually exclusive with `diff`.
  - `diff` string: Unified diff. Only added lines are scanned. Mutually exclusive with `content`.
  - `filename` string: Optional filename, echoed on each finding as `file`. Used with `content`.

## Response `200`

Payment settled and the check ran. `ok` is true and `data` holds the result.

- object
  - `ok` true, required
  - `data` object, required

## Other responses

- `400`: A required field is missing or malformed. Never billed.
- `402`: Payment required. The body carries a complete x402 version 2 challenge with the accepted networks, the amount in USDC base units, and the recipient. Pay it and repeat the request with the payment header.
- `405`: Wrong HTTP method. Every endpoint is POST.

---

[API](https://skmtc.dev/relayshield/apis/relayshield-api.md) · [All operations](https://skmtc.dev/relayshield/apis/relayshield-api/llms.txt) · [OpenAPI document](https://skmtc.dev/relayshield/apis/relayshield-api/revisions/4d4721b936dd?raw)
