c. CallMint
← API documentation

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.