POST pay per call
SafeCommit protected deploy
Ship a Vercel deployment or a Supabase migration with a checkpoint, health checks and automatic rollback if production breaks. Bring your own Vercel token; SafeCommit never uses its own on your project.
- Price per call
- $6.20
- 402 check
- verified 402
- Uptime
- 100% 7d · 100% 30d
- Tried here
- 0 times
Pays via: x402 · USDC on Base to 0x5f2dAb...791696. Payment goes straight to the seller. Tensorust never holds it.
Endpoint: https://safecommit.vercel.app/api/agent/run · docs
Last probe
9 min ago: HTTP 402 in 82 ms. Valid payment terms.
- $6.2 · exact · Base
Last 57 probes, oldest to newest (green = valid 402):
Try it
One call with no payment, sent from our server. You'll see exactly what your agent sees: usually the 402 and its price.
Code
See the price from a terminal:
# See the price: the bare call answers 402 with terms in PAYMENT-REQUIRED
curl -i -X POST "https://safecommit.vercel.app/api/agent/run" \
-H "Content-Type: application/json" \
-d '{"kind":"vercel_deployment","repository":"you/app","target":"production","summary":"Header copy change","payload":"diff --git a/x b/x\n+hello"}'Pay and call from Node with the x402 client (your agent's own wallet signs; nothing goes through us):
// npm i @x402/core @x402/evm viem
import { x402Client } from "@x402/core/client";
import { x402HTTPClient } from "@x402/core/http";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const signer = privateKeyToAccount(process.env.AGENT_WALLET_KEY); // your agent's own wallet
const client = new x402HTTPClient(new x402Client().register("eip155:*", new ExactEvmScheme(signer)));
const url = "https://safecommit.vercel.app/api/agent/run";
const init = { method: "POST", headers: { "content-type": "application/json" }, body: "{\"kind\":\"vercel_deployment\",\"repository\":\"you/app\",\"target\":\"production\",\"summary\":\"Header copy change\",\"payload\":\"diff --git a/x b/x\\n+hello\"}" };
let res = await fetch(url, init);
if (res.status === 402) {
const terms = client.getPaymentRequiredResponse((h) => res.headers.get(h), await res.json());
const payment = await client.createPaymentPayload(terms); // signs a USDC transfer straight to the seller
res = await fetch(url, { ...init, headers: { ...(init.headers || {}), ...client.encodePaymentSignatureHeader(payment) } });
}
console.log(res.status, await res.text());