You'll receive your api_key. Save it — you'll need it for every authenticated request.
Step 2: Compile a policy
Call /v1/makeRules with your policy in plain English. This streams progress via SSE so use -N. Compilation takes 30–90 seconds — this is the ARc formalization and consistency checking process running.
bash
Cost: 300 credits ($3.00). You only pay this once per policy.
Step 3: Check an action
Pass your policy_id and a plain English description of what the agent wants to do.
bash
The solver returns SAT (allowed) or UNSAT (blocked).
Cost: 5 credits ($0.05) per check.
Try it without an account
Want to test before registering? Use /v1/verifyPaid — $0.10 USDC per check, no account needed. There is a live policy you can throw actions at:
bash
Follow the x402 flow — first call returns a deposit address, send $0.10 USDC on Base, retry with the stripe_payment_intent_id.
Let third parties check your policy
Once you have a compiled policy, you can allow anyone to check actions against it — no account required on their end. They pay $0.10 USDC per check via /v1/verifyPaid and pass your policy_id.
This is useful if you are building a product where external users or other agents need to verify actions against your rules without going through your backend.
bash
They follow the standard x402 flow — first call returns a deposit address, send $0.10 USDC on Base, retry with the stripe_payment_intent_id. The result is the same SAT/UNSAT response with a cryptographic proof.
You keep your policy. They pay per check. No coordination needed.
Next steps
Read the full API Reference for all endpoints and parameters
curl -s -N -X POST https://api.icme.io/v1/makeRules \
-H 'Content-Type: application/json' \
-H 'X-API-Key: YOUR_API_KEY' \
-d '{
"policy": "1. No transfers over 100 tokens.\n2. Transfers to unknown wallets are not permitted."
}'
```
When complete, you'll see a `policy_id` in the final SSE event. Save it.
```
data: {"step":"done","policy_id":"0bb154c9-...","rule_count":2}
curl -s -X POST https://api.icme.io/v1/verifyPaid \
-H 'Content-Type: application/json' \
-d '{
"policy_id": "d73134e6-05d6-46ba-9852-376c53fd7651",
"action": "Send 1000 USDC to an unknown wallet."
}' | jq .
# Anyone can run this — no API key needed
curl -s -X POST https://api.icme.io/v1/verifyPaid \
-H 'Content-Type: application/json' \
-d '{
"policy_id": "YOUR_POLICY_ID",
"action": "Transfer 500 tokens to wallet 0xABC123."
}' | jq .