Your rules.
Repeatable checks.
Use a bearer key for all project routes. Projects, policies and baselines are tenant-scoped. Management operations are free and limited to 20 requests/minute; up to 100 active projects, 100 policy versions and 100 baselines per project.
1. Create a project
curl 'https://staging.callmint.dev/projects' -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"name":"Accounts payable"}'Save the returned project_id. GET /projects lists your projects.
2. Save an immutable policy
{
"kind": "invoice",
"rules": {
"currencies": [
"USD",
"AUD"
],
"max_total": 10000,
"required_vendor": "Example vendor",
"duplicate_check": true
}
}POST this object to /projects/YOUR_PROJECT_ID/policies. Save the returned rule_version. GET that route lists versions. New rules create a new version; old versions cannot be overwritten. Invoice policies support allowed currencies, maximum total, exact required vendor and duplicate checking.
3. Run Invoice Policy
curl -X POST 'https://staging.callmint.dev/v1/invoice-policy' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Idempotency-Key: unique-request-001' \
-H 'Content-Type: application/json' \
-d '{"project_id":"YOUR_PROJECT_ID","rule_version":1,"invoice":{"vendor":"Example vendor","invoice_number":"INV-001","items":[{"quantity":2,"unit_price":"10.00"}],"total":"20.00","currency":"USD"}}'Costs 30 credits for a successful check, including passed:false findings. Uses decimal arithmetic and records a keyed duplicate fingerprint of normalized vendor and invoice number within the project. Raw invoices are not retained. Same Idempotency-Key replays instead of detecting a new duplicate. A new check records the identity even if policy findings fail; duplicate history lasts 90 days.
Snapshot comparisons
Create kind:crawler policy with rules:{required_allowed:["GPTBot"]}, or kind:seo policy with boolean rules require_canonical, require_indexable, require_jsonld, fail_on_title_change. POST /projects/YOUR_PROJECT_ID/snapshots with kind and data. Store returned snapshot_id as baseline_id when calling the corresponding paid API.
{
"kind": "crawler",
"data": {
"crawlers": {
"GPTBot": true,
"ClaudeBot": true
}
}
}{
"kind": "seo",
"data": {
"title": "Example",
"description": "Example page",
"canonical": "https://example.com/",
"indexable": true,
"jsonld_types": [
"WebPage"
]
}
}Crawler Policy costs 20 credits; SEO Deployment Guard costs 50. They compare supplied normalized JSON only. They do not collect/parse robots.txt or HTML, inspect redirects, run monitoring, guarantee indexing or grant legal crawl permission. External URL fetching remains disabled.
History and deletion
GET /projects/:id/results returns the latest 100 findings. DELETE /projects/:id removes rules, baselines, findings and replay response content while retaining financial attribution. Findings and duplicate fingerprints expire after 90 days; immutable rules/baselines persist until explicit project deletion. Other tenants receive 404. Full request/response schemas.