# Supplier Payment Decision Agent – RSA Public Key Registration

> Supplier Payment Decision Agent – RSA Public Key Registration is a paid API for AI agents from supplier-payment-verifier-production.up.railway.app, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-16).

Registers an RSA public key (2048-bit or larger, PEM format) for a tenant to cryptographically sign payment-decision requests.

## Facts

- Endpoint: POST https://supplier-payment-verifier-production.up.railway.app/v1/agent-keys?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/supplier-payment-decision-agent-rsa-public-key-registration-6145f3e4
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_vv_mjcOKe9OMrLGZ0Vk1P

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 supplier-payment-decision-agent-rsa-public-key-registration-6145f3e4 -d '<json body>'
```

Example prompt: Register my RSA public key for the Supplier Payment Decision Agent — the key ID is 'acme-payments-key-1' and here's the PEM-encoded 2048-bit public key so my agent can start signing payment-decision requests.

## When to prefer this

Use this endpoint once, during initial setup or key rotation, to register the RSA public key your agent will use to sign all subsequent payment-decision requests. This is a prerequisite step before calling any other Supplier Payment Decision Agent endpoints that require cryptographic request signing. Choose this over generic key management APIs because it is specifically integrated with the supplier payment verification workflow on this platform.

## Known failure modes

- Duplicate key_id for the same tenant — keys are immutable per tenant, so reusing an existing key_id will fail; must use a new key_id to rotate
- Invalid or malformed PEM — key is not a valid RSA public key or is below 2048 bits, resulting in a validation error
- Missing required fields — body, method, or bodyType not provided, causing a schema validation error
- Unauthorized tenant — missing or invalid authentication credentials
- Network/service unavailability on Railway hosting platform

## How this service works

Registers an RSA public key (2048-bit or larger, PEM) used to sign payment-decision requests. Keys are immutable per tenant; rotate by registering a new key_id.

## Output

Returns a JSON object confirming the key registration, including the key_id that was registered and a boolean 'registered: true' indicating successful storage. The key is then immutably associated with the tenant and can be used to verify signed payment-decision requests.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "key_id": {
   "type": "string",
   "title": "Key Id",
   "maxLength": 128,
   "minLength": 1,
   "description": "Caller-chosen RSA public-key identifier, unique within your tenant. Reuse it in signature.key_id; rotate with a new ID."
  },
  "public_key_pem": {
   "type": "string",
   "title": "Public Key Pem",
   "maxLength": 16384,
   "minLength": 1,
   "description": "PEM-encoded RSA public key, at least 2048 bits. Never send a private key, wallet key or certificate."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "key_id": "my-key-1",
  "registered": true
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/supplier-payment-decision-agent-rsa-public-key-registration-6145f3e4/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from supplier-payment-verifier-production.up.railway.app](https://www.zero.xyz/host/supplier-payment-verifier-production.up.railway.app/llms.txt)
