Skip to content

Governance API Endpoints

25 endpoints across 24 resources. Generated from the dbt manifest — edits inside this block will be overwritten. Regenerate with python scripts/update_docs.py --only api.

governance_activity

Monthly governance activity, long format (date, metric, value) for proposals_created, votes_cast, unique_voters.

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_activity/monthly GET tier2 -- -- --
GET /v1/governance/governance_activity/monthly

Monthly governance activity, long format (date, metric, value) for proposals_created, votes_cast, unique_voters.

Model: api_governance_activity_monthly — table dbt.api_governance_activity_monthly

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
date Date --
metric String --
value UInt64 --

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_activity/monthly" \
  -H "X-API-Key: YOUR_API_KEY"

governance_concentration

Space-level concentration at canonical tiers 10/20/50, long format, one row per (population, tier). Populations: voters_by_vp (all-time voting power cast -- participation-weighted, not a balance), voters_by_votes, delegates_by_delegators (currently active delegations, both chains). Per-proposal w...

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_concentration/latest GET tier2 -- -- --
GET /v1/governance/governance_concentration/latest

Space-level concentration at canonical tiers 10/20/50, long format, one row per (population, tier). Populations: voters_by_vp (all-time voting power cast -- participation-weighted, not a balance), voters_by_votes, delegates_by_delegators (currently active delegations, both chains). Per-proposal w...

Model: api_governance_concentration_latest — table dbt.api_governance_concentration_latest

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
population String --
tier UInt8 --
tier_value Float64 Summed value held by the top tier members.
total_value Float64 --
share Nullable(Float64) tier_value / total_value. NULL when the population is empty.
members UInt64 Population size.
as_of_date Date Date of the latest vote ingested.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_concentration/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_contributors

Top 200 forum contributors by posts written. Keyed by contributor_key -- an irreversible salted pseudonym of the Discourse user id (no username, no raw id ships anywhere in this model). Like counts follow the canonical eligibility contract (active + mapped).

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_contributors/latest GET tier2 -- -- --
GET /v1/governance/governance_contributors/latest

Top 200 forum contributors by posts written. Keyed by contributor_key -- an irreversible salted pseudonym of the Discourse user id (no username, no raw id ships anywhere in this model). Like counts follow the canonical eligibility contract (active + mapped).

Model: api_governance_contributors_latest — table dbt.api_governance_contributors_latest

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
contributor_key UInt64 Salted sipHash64 pseudonym of the Discourse user_id. Stable across models built with the same salt.
posts UInt64 --
topics_started UInt64 Posts with post_number = 1.
likes_received UInt64 --
likes_given UInt64 --
trust_level UInt8 Discourse trust level (0-4); 0 when the user left the directory.
first_post_at DateTime --
last_post_at DateTime --
as_of_date Date Date of the newest ingested post.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_contributors/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_delegates

Delegate leaderboard: how many distinct gnosis.eth holders currently delegate to each address across both DelegateRegistry chains (1 and 100). A holder active on both chains counts once (uniqExact). See int_governance_current_delegations for how "current" is resolved. Delegation here is a separat...

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_delegates/latest GET tier2 -- -- --
GET /v1/governance/governance_delegates/latest

Delegate leaderboard: how many distinct gnosis.eth holders currently delegate to each address across both DelegateRegistry chains (1 and 100). A holder active on both chains counts once (uniqExact). See int_governance_current_delegations for how "current" is resolved. Delegation here is a separat...

Model: api_governance_delegates_latest — table dbt.api_governance_delegates_latest

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
delegate String --
delegator_count UInt64 Distinct delegators (uniqExact) — dual-chain holders count once.
first_delegation_at DateTime --
last_delegation_at DateTime --
as_of_date Date Snapshot freshness for this leaderboard — the date of the most recent active delegation.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_delegates/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_delegation_activity

Monthly DelegateRegistry activity, long format (date, metric, value). Metrics: set_events, clear_events, net_change, new_delegators (first-ever set per (chain, delegator)), repointed (later sets), active_delegators (running net through the month). Chains collapsed; churn classification is the can...

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_delegation_activity/monthly GET tier2 -- -- --
GET /v1/governance/governance_delegation_activity/monthly

Monthly DelegateRegistry activity, long format (date, metric, value). Metrics: set_events, clear_events, net_change, new_delegators (first-ever set per (chain, delegator)), repointed (later sets), active_delegators (running net through the month). Chains collapsed; churn classification is the can...

Model: api_governance_delegation_activity_monthly — table dbt.api_governance_delegation_activity_monthly

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
date Date Month bucket (start of month).
metric String --
value Int64 Int64 -- net_change can be negative.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_delegation_activity/monthly" \
  -H "X-API-Key: YOUR_API_KEY"

governance_delegation_graph

Current delegator -> delegate edges (one row per active delegation per chain), for a delegation-network visual. chain_id separates the two registries; tx_hash lets a reader verify any edge on-chain.

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_delegation_graph/latest GET tier2 -- -- --
GET /v1/governance/governance_delegation_graph/latest

Current delegator -> delegate edges (one row per active delegation per chain), for a delegation-network visual. chain_id separates the two registries; tx_hash lets a reader verify any edge on-chain.

Model: api_governance_delegation_graph — table dbt.api_governance_delegation_graph

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
chain_id UInt64 1 = Ethereum mainnet, 100 = Gnosis Chain.
delegator String --
delegate String --
delegated_at DateTime --
tx_hash String --
as_of_date Date Snapshot freshness for this point-in-time endpoint — the date of the most recent active delegation.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_delegation_graph/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_discussion_phases

Discussion and endorsement per proposal per lifecycle phase: before the proposal existed, after it existed but before voting opened, during the vote, and after it closed. Rows exist for any (proposal, phase) with either posts or likes, so a phase where people only clicked like is still present --...

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_discussion_phases/latest GET tier2 -- -- --
GET /v1/governance/governance_discussion_phases/latest

Discussion and endorsement per proposal per lifecycle phase: before the proposal existed, after it existed but before voting opened, during the vote, and after it closed. Rows exist for any (proposal, phase) with either posts or likes, so a phase where people only clicked like is still present --...

Model: api_governance_discussion_phases — table dbt.api_governance_discussion_phases

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
proposal_id String --
proposal_created_at DateTime Proposal creation time. Declared so the daily time-spine bridge can resolve it -- the registry validator checks relationship keys against DECLARED columns, n...
phase String --
posts UInt64 --
participants UInt64 Distinct forum user_ids posting in this phase.
likes_given_in_phase UInt64 Likes counted by the LIKE's own timestamp -- exact, and the real "endorsement during the vote" figure. PREFER THIS.
likes_on_posts_written_in_phase UInt64 Sum of the current like_count of posts WRITTEN in this phase. Approximate: a like given today on a 2023 post lands in 2023. Kept only so likes_given_in_phase...
distinct_likers UInt64 --
question_share Nullable(Float64) Share of posts in this phase asking something rather than asserting, measured on quote-stripped text. NULL when the phase has no posts.
as_of_date Date Latest forum activity this endpoint reflects, taken as the later of the newest linked-topic post and the newest like. It is a data-freshness anchor for the w...

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_discussion_phases/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_electorate

Electorate size per month measured two ways at once: how many PEOPLE voted and how much CAPITAL voted. The divergence between the two lines is the finding -- raw vote counts fell ~98.7% from 2022 to 2026, but median voting power per GIP is HIGHER now (137k vs 102k) and median voters per GIP (68) ...

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_electorate/monthly GET tier1 -- -- --
GET /v1/governance/governance_electorate/monthly

Electorate size per month measured two ways at once: how many PEOPLE voted and how much CAPITAL voted. The divergence between the two lines is the finding -- raw vote counts fell ~98.7% from 2022 to 2026, but median voting power per GIP is HIGHER now (137k vs 102k) and median voters per GIP (68) ...

Model: api_governance_electorate_monthly — table dbt.api_governance_electorate_monthly

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
date Date Month start. Months without a GIP proposal are absent.
median_voters_per_proposal UInt64 --
median_vp_per_proposal Float64 --

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_electorate/monthly" \
  -H "X-API-Key: YOUR_API_KEY"

governance_forum_activity

Weekly forum activity long format (date, metric, value).

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_forum_activity/weekly GET tier2 -- -- --
GET /v1/governance/governance_forum_activity/weekly

Weekly forum activity long format (date, metric, value).

Model: api_governance_forum_activity_weekly — table dbt.api_governance_forum_activity_weekly

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
date Date --
metric String topics_created | posts_created | active_users | likes_given | distinct_likers | polls_created | poll_voter_slots. Likes follow the canonical eligibility cont...

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_forum_activity/weekly" \
  -H "X-API-Key: YOUR_API_KEY"

Forum discussion <-> Snapshot vote cross-links, topic grain. Unions two independent signals -- a pasted proposal/0x URL in a post (via_forum_post) and the proposal's own authored discussion field (via_discussion) -- so a link found by only one method still gets its own row (43 discussion-only r...

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_forum_proposal_links/latest GET tier2 -- -- --
GET /v1/governance/governance_forum_proposal_links/latest

Forum discussion <-> Snapshot vote cross-links, topic grain. Unions two independent signals -- a pasted proposal/0x URL in a post (via_forum_post) and the proposal's own authored discussion field (via_discussion) -- so a link found by only one method still gets its own row (43 discussion-only r...

Model: api_governance_forum_topic_proposal_links — table dbt.api_governance_forum_topic_proposal_links

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
topic_id UInt32 --
proposal_id String Snapshot proposal id this topic links to. Same value as snapshot_proposal_id; kept as the semantic layer's proposal entity key.
snapshot_proposal_id String Snapshot proposal id (0x form) resolved from either link signal.
proposal_matched Bool True when the linked snapshot_proposal_id exists in int_governance_proposals.
recovered_via_link Bool True when the topic's own title has no GIP number but a linked proposal does.
via_forum_post Bool True when a post in this topic pastes this proposal's own 0x URL.
via_discussion Bool True when this proposal's own authored discussion field points at this topic.
corroborated_by_discussion Bool via_forum_post AND via_discussion -- both signals agree. False does NOT mean disagreement; most false rows are one signal without the other (see via_forum_po...
as_of_date Date Snapshot freshness for this point-in-time endpoint — the creation date of the newest forum topic.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_forum_proposal_links/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_funnel

Nested GIP conversion funnel: discussed on forum -> discussed AND reached Snapshot vote -> discussed AND reached vote AND (has_passed OR has_decided).

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_funnel/latest GET tier2 -- -- --
GET /v1/governance/governance_funnel/latest

Nested GIP conversion funnel: discussed on forum -> discussed AND reached Snapshot vote -> discussed AND reached vote AND (has_passed OR has_decided).

Model: api_governance_gip_funnel — table dbt.api_governance_gip_funnel

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
stage String --
gip_count UInt64 --
as_of_date Date Snapshot freshness for this point-in-time endpoint — the creation date of the newest proposal.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_funnel/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_gip_pipeline

Pending GIP pipeline: open forum topics whose GIP number never reached a Snapshot vote, with idle time. 45 idle days is the canonical dormancy threshold; every pending topic is exposed with flags (no cap, no hidden rows -- capping is presentation).

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_gip_pipeline/latest GET tier2 -- -- --
GET /v1/governance/governance_gip_pipeline/latest

Pending GIP pipeline: open forum topics whose GIP number never reached a Snapshot vote, with idle time. 45 idle days is the canonical dormancy threshold; every pending topic is exposed with flags (no cap, no hidden rows -- capping is presentation).

Model: api_governance_gip_pipeline_latest — table dbt.api_governance_gip_pipeline_latest

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
topic_id UInt32 --
title String --
gip_number Nullable(UInt32) --
phase String phase-1 | phase-2 | phase-3 | none (from topic tags).
posts_count UInt32 --
participant_count UInt32 --
views UInt32 --
created_at DateTime --
last_posted_at DateTime --
days_idle Int64 --
is_dormant Bool days_idle > 45.
as_of_date Date Query date (now()-anchored view).

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_gip_pipeline/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_kpis

Single-row headline governance KPIs for number tiles: proposal/GIP/vote counts, unique voters, followers, proposals passed, pass rate, and average voters per closed GIP proposal (avg_voters_per_gip_proposal).

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_kpis/latest GET tier2 -- -- --
GET /v1/governance/governance_kpis/latest

Single-row headline governance KPIs for number tiles: proposal/GIP/vote counts, unique voters, followers, proposals passed, pass rate, and average voters per closed GIP proposal (avg_voters_per_gip_proposal).

Model: api_governance_kpis_latest — table dbt.api_governance_kpis_latest

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
total_proposals UInt64 --
unique_voters UInt64 --
gip_pass_rate Nullable(Float64) GIP-only passed / (passed + rejected + no_consensus + below_quorum). Excludes 'decided' selections.
as_of_date Date Snapshot freshness for this point-in-time endpoint — the date of the latest vote ingested.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_kpis/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_poll_vs_vote

The forum's headcount verdict against the token verdict on the SAME question. The only comparison in the layer between two genuinely SEPARATE populations -- a forum temperature check (one person one vote, no token needed) and the Snapshot ballot that followed. head_minus_weight_against on api_gov...

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_poll_vs_vote/latest GET tier2 -- -- --
GET /v1/governance/governance_poll_vs_vote/latest

The forum's headcount verdict against the token verdict on the SAME question. The only comparison in the layer between two genuinely SEPARATE populations -- a forum temperature check (one person one vote, no token needed) and the Snapshot ballot that followed. head_minus_weight_against on api_gov...

Model: api_governance_poll_vs_vote — table dbt.api_governance_poll_vs_vote

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
proposal_id String --
proposal_created_at DateTime Declared so the daily time-spine bridge can resolve it.
poll_name String Exposed because the grain is many-to-many; part of the poll's identity.
poll_phase String Where the poll sits in this proposal's lifecycle. 'pre_discussion' is the only phase that makes it a genuine temperature check.
is_pre_vote_check Bool is_temperature_check AND poll_phase = 'pre_discussion'. The honest subset.
poll_against_share Nullable(Float64) --
vote_against_share_by_vp Nullable(Float64) --
poll_minus_vote_vp Nullable(Float64) Forum headcount minus token weight. POSITIVE = the community was more opposed than the capital that decided it; NEGATIVE = capital more opposed than the comm...
verdicts_disagree Bool The two populations landed on opposite sides of 50%. The headline cases.
as_of_date Date Freshness anchor for the whole view, NOT a per-row date. Taken from the poll side, since that is what this endpoint adds. Polls dedup at block level, so an u...

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_poll_vs_vote/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_power_source

Monthly voting power by source (Staked GNO / GNO holdings / Delegated), long format (date, label, value). Empty until proposals carry strategies.

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_power_source/monthly GET tier2 -- -- --
GET /v1/governance/governance_power_source/monthly

Monthly voting power by source (Staked GNO / GNO holdings / Delegated), long format (date, label, value). Empty until proposals carry strategies.

Model: api_governance_power_source_monthly — table dbt.api_governance_power_source_monthly

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
date Date --
label String Power source bucket.
value Float64 Summed voting power for the source that month.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_power_source/monthly" \
  -H "X-API-Key: YOUR_API_KEY"

governance_proposal_choices

Per-choice vote breakdown, long format (one row per proposal x choice), for the per-proposal For/Against/Abstain (or ranked-choice) bar with a quorum reference line. Works for any ballot shape, not just binary.

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_proposal_choices/latest GET tier2 -- -- --
GET /v1/governance/governance_proposal_choices/latest

Per-choice vote breakdown, long format (one row per proposal x choice), for the per-proposal For/Against/Abstain (or ranked-choice) bar with a quorum reference line. Works for any ballot shape, not just binary.

Model: api_governance_proposal_choices — table dbt.api_governance_proposal_choices

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
proposal_id String --
choice String Ballot option label.
score Float64 Voting power this choice received.
pct Nullable(Float64) Share of scores_total this choice received. Null if scores_total is 0.
is_winner Bool True for the row matching the proposal's winning_choice.
as_of_date Date Snapshot freshness for this point-in-time endpoint — the creation date of the newest proposal.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_proposal_choices/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_proposal_direction

Per-proposal voting direction measured twice -- once by headcount, once by voting power -- plus the gap between them. Powers the "whales versus everyone else" view. Shares are over DECISIVE votes (for + against), excluding abstain so an abstain-heavy ballot never reads as consensus; abstain is ex...

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_proposal_direction/latest GET tier2 -- -- --
GET /v1/governance/governance_proposal_direction/latest

Per-proposal voting direction measured twice -- once by headcount, once by voting power -- plus the gap between them. Powers the "whales versus everyone else" view. Shares are over DECISIVE votes (for + against), excluding abstain so an abstain-heavy ballot never reads as consensus; abstain is ex...

Model: api_governance_proposal_direction — table dbt.api_governance_proposal_direction

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
proposal_id String --
created_at DateTime Proposal creation time. Declared so the daily time-spine bridge can resolve it.
directional Bool False for ranked-choice and for proposals with no decodable decisive votes.
against_share_by_head Nullable(Float64) against_voters / decisive_voters. NULL when there are no decisive votes.
against_share_by_vp Nullable(Float64) against_vp / decisive_vp. NULL when there is no decisive voting power.
head_minus_weight_against Nullable(Float64) against_share_by_head minus against_share_by_vp. POSITIVE = small holders were more opposed than capital; NEGATIVE = capital was more opposed than the crowd....
margin_by_vp Nullable(Float64) abs(for_vp - against_vp) / decisive_vp. 0 = dead heat, 1 = unanimous.
as_of_date Date Snapshot freshness for this point-in-time endpoint — the creation date of the newest proposal.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_proposal_direction/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_proposals

Proposal browse table (one row per Snapshot proposal) with outcome, category, quorum, and vote aggregates. Filter is_gip = 1 for GIPs only.

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_proposals/latest GET tier2 -- -- --
GET /v1/governance/governance_proposals/latest

Proposal browse table (one row per Snapshot proposal) with outcome, category, quorum, and vote aggregates. Filter is_gip = 1 for GIPs only.

Model: api_governance_proposals_latest — table dbt.api_governance_proposals_latest

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
id String --
created_at DateTime Proposal creation time. Declared so the daily time-spine bridge can resolve it.
outcome String --
is_gip Bool --
quorum_status String Canonical quorum vocabulary: 'unspecified' (quorum <= 0, pre-2024), 'met', 'missed'.
as_of_date Date Snapshot freshness for this point-in-time endpoint — the creation date of the newest proposal.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_proposals/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_proposals_live

Ballots open right now (voting window contains query time). Vote counts lag up to the daily ingest; hours_left is exact. Empty when no ballot is open -- an empty result is a fact, not a failure.

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_proposals_live/latest GET tier2 -- -- --
GET /v1/governance/governance_proposals_live/latest

Ballots open right now (voting window contains query time). Vote counts lag up to the daily ingest; hours_left is exact. Empty when no ballot is open -- an empty result is a fact, not a failure.

Model: api_governance_proposals_live — table dbt.api_governance_proposals_live

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
id String --
gip_number Nullable(UInt32) --
is_gip Bool --
title String --
start_at DateTime --
end_at DateTime --
hours_left Int64 --
votes_count UInt64 --
scores_total Float64 --
quorum Float64 --
quorum_status String Canonical vocabulary: 'unspecified' | 'met' | 'missed'.
quorum_ratio Nullable(Float64) scores_total / quorum. NULL when quorum is unspecified.
as_of_date Date Query date (now()-anchored view).

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_proposals_live/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_top_proposers

Top 50 proposal authors by count, with outcome record. enactment_rate is (passed + decided) / closed proposals — distinct from gip_pass_rate on KPIs (pass/fail only, excludes selection ballots).

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_top_proposers/latest GET tier2 -- -- --
GET /v1/governance/governance_top_proposers/latest

Top 50 proposal authors by count, with outcome record. enactment_rate is (passed + decided) / closed proposals — distinct from gip_pass_rate on KPIs (pass/fail only, excludes selection ballots).

Model: api_governance_top_proposers — table dbt.api_governance_top_proposers

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
author String --
proposals_authored UInt64 --
enactment_rate Nullable(Float64) --
as_of_date Date Snapshot freshness for this leaderboard — the creation date of the newest proposal.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_top_proposers/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_top_voters

Top 200 voters by proposals voted, with cumulative and average voting power. total_vp_cast is participation-weighted, not a balance.

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_top_voters/latest GET tier2 -- -- --
GET /v1/governance/governance_top_voters/latest

Top 200 voters by proposals voted, with cumulative and average voting power. total_vp_cast is participation-weighted, not a balance.

Model: api_governance_top_voters — table dbt.api_governance_top_voters

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
voter String --
proposals_voted UInt64 --
as_of_date Date Snapshot freshness for this leaderboard — the date of the latest vote ingested.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_top_voters/latest" \
  -H "X-API-Key: YOUR_API_KEY"

governance_turnout

Per-GIP turnout browse table (is_gip=1 only): total_vp cast / eligible GNO supply (circulating on both chains + staked, conditionally). See int_governance_turnout for the full methodology, the GIP-only scoping rationale, and its historical-precision caveat.

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_turnout/latest GET tier2 -- -- --
/v1/governance/governance_turnout/monthly GET tier2 -- -- --
GET /v1/governance/governance_turnout/latest

Per-GIP turnout browse table (is_gip=1 only): total_vp cast / eligible GNO supply (circulating on both chains + staked, conditionally). See int_governance_turnout for the full methodology, the GIP-only scoping rationale, and its historical-precision caveat.

Model: api_governance_turnout_latest — table dbt.api_governance_turnout_latest

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
proposal_id String --
created_at DateTime Proposal creation time. Declared so the daily time-spine bridge can resolve it.
includes_staked_gno Bool True when this proposal's own strategies included staked GNO in the eligible pool.
eligible_supply Float64 --
turnout Nullable(Float64) total_vp / eligible_supply. NULL if eligible_supply is 0.
as_of_date Date Snapshot freshness for this point-in-time endpoint — the creation date of the newest scored GIP proposal.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_turnout/latest" \
  -H "X-API-Key: YOUR_API_KEY"
GET /v1/governance/governance_turnout/monthly

Monthly turnout trend (is_gip=1 only): a simple average of per-GIP turnout ratios, NOT population-weighted by eligible supply. Directional trend only -- use api_governance_turnout_latest for exact per-proposal figures. A month with no real GIP shows no row (rather than a misleading 0%), since the...

Model: api_governance_turnout_monthly — table dbt.api_governance_turnout_monthly

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
date Date Month start.
avg_turnout Nullable(Float64) --
proposals UInt64 --

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_turnout/monthly" \
  -H "X-API-Key: YOUR_API_KEY"

governance_vote_trajectory

How opinion FORMED across a voting window: one row per (proposal, hour since voting opened) with cumulative against-share by headcount and by voting power. Viable because the median proposal spreads 100 votes over 50 distinct active hours in a 168h window. Intended use is to overlay forum post ti...

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_vote_trajectory/hourly GET tier2 -- -- --
GET /v1/governance/governance_vote_trajectory/hourly

How opinion FORMED across a voting window: one row per (proposal, hour since voting opened) with cumulative against-share by headcount and by voting power. Viable because the median proposal spreads 100 votes over 50 distinct active hours in a 168h window. Intended use is to overlay forum post ti...

Model: api_governance_vote_trajectory — table dbt.api_governance_vote_trajectory

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
proposal_id String --
hour_offset UInt32 Hours since start_at, floored at 0 so clock-skewed votes land in hour 0.
turnout_progress Nullable(Float64) Share of the proposal's eventual turnout that had arrived by this hour.
cum_against_share_by_vp Nullable(Float64) --
delta_against_share_by_vp Nullable(Float64) Hour-over-hour movement in the voting-power against-share. Large absolute values are the inflection candidates. NULL in a proposal's first bucket.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_vote_trajectory/hourly" \
  -H "X-API-Key: YOUR_API_KEY"

governance_whale_concentration

Per-proposal voting-power concentration: share of total vp cast by the top 1 / 5 / 10 voters. Reveals whale-decided votes a raw voter count would hide. NULL shares on zero-vote proposals.

Path Methods Tier Filters Pagination Sort
/v1/governance/governance_whale_concentration/latest GET tier2 -- -- --
GET /v1/governance/governance_whale_concentration/latest

Per-proposal voting-power concentration: share of total vp cast by the top 1 / 5 / 10 voters. Reveals whale-decided votes a raw voter count would hide. NULL shares on zero-vote proposals.

Model: api_governance_whale_concentration — table dbt.api_governance_whale_concentration

Legacy endpoint — GET only, no query parameters, returns the full table.

Columns

Column Type Description
proposal_id String --
created_at DateTime Proposal creation time. Declared so the daily time-spine bridge can resolve it.
top1_share Nullable(Float64) Share of total_vp cast by the single largest voter.
top10_share Nullable(Float64) Share of total_vp cast by the top 10 voters by vp.
as_of_date Date Snapshot freshness for this point-in-time endpoint — the date of the latest vote ingested.

Example

curl "https://api.analytics.gnosis.io/v1/governance/governance_whale_concentration/latest" \
  -H "X-API-Key: YOUR_API_KEY"