Proposed Agent API v2 — not yet available
This guide describes the proposed v2 contract. The v2 endpoints are not live yet. See Agent API overview.
Resolve an External Proposal
User goal: "I was given a Snapshot/Tally URL (or just a title/external id). Which proposal is it, and what's its canonical key?"
Prerequisites
- Tier:
standard(paid). - Auth: x402 or partner token.
- Input: exactly one of
url,title, orexternalId.
Call graph
GET /v2/proposals/resolve (standard)
-> returns proposalKey
-> GET /v2/proposals/:proposalKey (plus, optional)
-> GET /v2/proposals/:proposalKey/votes/summary (plus, optional)
1. Resolve a URL
curl -H "x-degov-api-token: <token>" \
"https://agent-api.degov.ai/v2/proposals/resolve?url=https%3A%2F%2Fsnapshot.org%2F%23%2Fproposal%2Fabc123"
2. Relevant response excerpt
{
"data": {
"candidates": [
{
"proposalKey": "p1_eyJkYW9JZCI6ImVucy1kYW8iLCJwcm92aWRlciI6InNuYXBzaG90IiwiZXh0ZXJuYWxJZCI6ImFiYzEyMyJ9",
"title": "Increase Protocol Budget",
"match": { "type": "url_exact", "matchedFields": ["sourceUrl"] }
}
]
}
}
3. How to interpret
match.typeis a real matching method, not a made-up confidence score:url_exact— the URL matched a known source URL.external_id_exact— the external id matched exactly.title_exact/title_contains— title matching, possibly with DAO disambiguation.- Multiple candidates are possible for fuzzy titles; the caller decides.
- An empty
candidatesarray means no match — try a different input or use the v1 surface / web search.
4. Next actions
- Open the proposal:
GET /v2/proposals/:proposalKey. - Get the vote result:
GET /v2/proposals/:proposalKey/votes/summary.
5. Failure recovery
400 VALIDATION_ERROR— you passed more than one primary selector, or none.402— payment required.- Empty candidates — no match; relax the input or add
daoId/providerdisambiguation.
When to use this endpoint
Only when the input came from outside the API (a link in chat, an external id, a spoken title). If you already have a proposalKey — from a list, event, or signal — you don't need resolve at all.
Last update:
August 5, 2026
Created: August 5, 2026
Created: August 5, 2026