Public API · v1
AntFleet API
Public, read-only JSON for AntFleet's code-quality data layer. Versioned. Rate-limited. Stable.
What it is
Every finding AntFleet publishes — investigations on launchpad agents, drift snapshots, the agents directory — is exposed as paginated JSON under /api/v1. Downstream dashboards, Dune workspaces, ecosystem watchers, and operator tooling can read AntFleet as a data source without scraping.
The contract under /api/v1 is frozen. Breaking changes ship at /api/v2. Additive changes — new optional fields, new endpoints, new query parameters — ship in-place and never remove what was there.
Endpoints
- GET /api/v1/findings
- list of all published findings, filterable by agent, repo, severity, and date.
- GET /api/v1/findings/{finding_id}
- one finding by id.
- GET /api/v1/agents
- the agents directory.
- GET /api/v1/agents/{address}
- one agent with finding + drift summary.
- GET /api/v1/agents/{address}/findings
- findings for one agent.
- GET /api/v1/agents/{address}/drift
- drift snapshots for one agent.
- GET /api/v1/stats
- aggregate counts (no caching, real-time).
Pagination + filters
Lists return { "data": [...], "next_cursor": "string|null" }. Pass ?cursor=<value> to fetch the next page. limit defaults to 20, max 100. Cursors are opaque — pass them back exactly as received.
Filter parameters on /findings: agent_token_address, repo_full_name, severity (info, low, med, high), since (ISO date).
Example
curl https://antfleet.dev/api/v1/findings?severity=high&limit=5{
"data": [
{
"finding_id": "feelocker-selector-2026-05-18",
"agent_token_address": "0xB3D7e0c3C39A1D3F1B304663065A2F83Ddf56d8e",
"agent_name": "autonomopoly",
"repo_full_name": "Liquid-Protocol-Ops/agent-autonomopoly",
"title": "FeeLocker selector mismatch …",
"severity": "high",
"summary": "…",
"evidence": "…",
"upstream_pr_url": null,
"upstream_merged_sha": null,
"published_at": "2026-05-18T12:34:56.000Z"
}
],
"next_cursor": null
}Rate limit
60 requests per 60 seconds per IP, across all /api/v1 paths combined.
The 61st request returns 429 with a Retry-After header. No authentication; no per-partner bypass.
Versioning
/api/v1 is stable. Adding optional fields, endpoints, or query parameters is non-breaking and ships in-place. Removing or renaming a field, changing sort order, or changing default behaviour is breaking and ships at /api/v2. The OpenAPI document at /api/v1/openapi.json is the canonical machine-readable contract.
How to cite
AntFleet findings are stable artefacts. Cite them by finding_id:
https://antfleet.dev/api/v1/findings/<finding_id>Linking to the human surface (https://antfleet.dev/agents/<address>) is fine for prose. The API URL is the form analysts should embed in dashboards and notebooks.