Tally API Reference
Welcome to Tally's public API docs. These API endpoints make it easy to pull data about Governor contracts, their proposals, and accounts that participate in on-chain DAOs.
Terms of Service
API Endpoints
https://api.tally.xyz/query
Headers
# A Tally API token
Api-Key: YOUR_KEY_HERE
Getting started
To get started, you'll need an API key. Create by signing in to Tally and requesting on your user settings page. You'll need to include the API key as an HTTP header with every request.
Graphql Playgound
Once you have an API key, you can test out these endpoints with the Graphql API Playground. Add your API key under the "Request Headers" section, like this {"Api-Key":"YOUR_KEY_HERE"}
Note that the playground also includes undocumented endpoints. Using them is not recommended for production apps, because they are subject to change without notice.
Quickstart Example
To see an example app that uses the API, clone this quickstart example. This React app uses the Tally API to list Governors and their Proposals.
Rate limits
Because the API is free, we have a fairly low rate limit to keep costs down. If you're interested in increasing your rate limit, reach out to us at support@tally.xyz.
Queries
accounts
Response
Returns [Account!]!
Arguments
Name | Description |
---|---|
ids - [AccountID!]
|
|
addresses - [Address!]
|
Example
Query
query Accounts(
$ids: [AccountID!],
$addresses: [Address!]
) {
accounts(
ids: $ids,
addresses: $addresses
) {
id
address
ens
twitter
name
bio
picture
safes
type
votes
proposalsCreatedCount
}
}
Variables
{
"ids": [
"eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"
],
"addresses": [
"0x1234567800000000000000000000000000000abc"
]
}
Response
{
"data": {
"accounts": [
{
"id": 4,
"address": "0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
"ens": "tallyxyz.eth",
"twitter": "@tallyxyz",
"name": "Tally",
"bio": "Now accepting delegations!",
"picture": "https://static.tally.xyz/logo.png",
"safes": [
"eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"
],
"type": "EOA",
"votes": 10987654321,
"proposalsCreatedCount": 987
}
]
}
}
chains
Response
Returns [Chain]!
Example
Query
query Chains {
chains {
id
layer1Id
name
mediumName
shortName
blockTime
isTestnet
nativeCurrency {
name
symbol
decimals
}
chain
useLayer1VotingPeriod
}
}
Response
{
"data": {
"chains": [
{
"id": "eip155:1",
"layer1Id": "eip155:1",
"name": "Ethereum Mainnet",
"mediumName": "Ethereum",
"shortName": "eth",
"blockTime": 12,
"isTestnet": false,
"nativeCurrency": "ETH",
"chain": "ETH",
"useLayer1VotingPeriod": true
}
]
}
}
delegate
Description
Returns delegate information by an address for an organization or governor.
Response
Returns a Delegate
Arguments
Name | Description |
---|---|
input - DelegateInput!
|
Example
Query
query Delegate($input: DelegateInput!) {
delegate(input: $input) {
id
account {
id
address
ens
twitter
name
bio
picture
safes
type
votes
proposalsCreatedCount
}
chainId
delegatorsCount
governor {
id
chainId
contracts {
...ContractsFragment
}
isIndexing
isBehind
isPrimary
kind
lastIndexedBlock {
...BlockFragment
}
name
organization {
...OrganizationFragment
}
proposalStats {
...ProposalStatsFragment
}
parameters {
...GovernorParametersFragment
}
quorum
slug
timelockId
tokenId
token {
...TokenFragment
}
type
delegatesCount
delegatesVotesCount
tokenOwnersCount
metadata {
...GovernorMetadataFragment
}
}
organization {
id
slug
name
chainIds
tokenIds
governorIds
metadata {
...OrganizationMetadataFragment
}
creator {
...AccountFragment
}
hasActiveProposals
proposalsCount
delegatesCount
delegatesVotesCount
tokenOwnersCount
endorsementService {
...EndorsementServiceFragment
}
}
statement {
id
address
organizationID
statement
statementSummary
isSeekingDelegation
issues {
...IssueFragment
}
}
token {
id
type
name
symbol
supply
lastIndexedBlock {
...BlockFragment
}
decimals
eligibility {
...EligibilityFragment
}
isIndexing
isBehind
}
votesCount
}
}
Variables
{"input": DelegateInput}
Response
{
"data": {
"delegate": {
"id": 2207450143689540900,
"account": Account,
"chainId": "eip155:1",
"delegatorsCount": 987,
"governor": Governor,
"organization": Organization,
"statement": DelegateStatement,
"token": Token,
"votesCount": 10987654321
}
}
}
delegatee
Description
Returns a delegatee of a user, to whom this user has delegated, for a governor
Response
Returns a Delegation
Arguments
Name | Description |
---|---|
input - DelegationInput!
|
Example
Query
query Delegatee($input: DelegationInput!) {
delegatee(input: $input) {
id
blockNumber
blockTimestamp
chainId
delegator {
id
address
ens
twitter
name
bio
picture
safes
type
votes
proposalsCreatedCount
}
delegate {
id
address
ens
twitter
name
bio
picture
safes
type
votes
proposalsCreatedCount
}
organization {
id
slug
name
chainIds
tokenIds
governorIds
metadata {
...OrganizationMetadataFragment
}
creator {
...AccountFragment
}
hasActiveProposals
proposalsCount
delegatesCount
delegatesVotesCount
tokenOwnersCount
endorsementService {
...EndorsementServiceFragment
}
}
token {
id
type
name
symbol
supply
lastIndexedBlock {
...BlockFragment
}
decimals
eligibility {
...EligibilityFragment
}
isIndexing
isBehind
}
votes
}
}
Variables
{"input": DelegationInput}
Response
{
"data": {
"delegatee": {
"id": 2207450143689540900,
"blockNumber": 123,
"blockTimestamp": 1663224162,
"chainId": "eip155:1",
"delegator": Account,
"delegate": Account,
"organization": Organization,
"token": Token,
"votes": 10987654321
}
}
}
delegatees
Description
Returns a paginated list of delegatees of a user, to whom this user has delegated, that match the provided filters.
Response
Returns a PaginatedOutput!
Arguments
Name | Description |
---|---|
input - DelegationsInput!
|
Example
Query
query Delegatees($input: DelegationsInput!) {
delegatees(input: $input) {
nodes {
... on Delegate {
...DelegateFragment
}
... on Organization {
...OrganizationFragment
}
... on Member {
...MemberFragment
}
... on Delegation {
...DelegationFragment
}
... on Governor {
...GovernorFragment
}
... on Proposal {
...ProposalFragment
}
... on Vote {
...VoteFragment
}
... on StakeEvent {
...StakeEventFragment
}
... on StakeEarning {
...StakeEarningFragment
}
... on Contributor {
...ContributorFragment
}
}
pageInfo {
firstCursor
lastCursor
count
}
}
}
Variables
{"input": DelegationsInput}
Response
{
"data": {
"delegatees": {
"nodes": [Delegate],
"pageInfo": PageInfo
}
}
}
delegates
Description
Returns a paginated list of delegates that match the provided filters.
Response
Returns a PaginatedOutput!
Arguments
Name | Description |
---|---|
input - DelegatesInput!
|
Example
Query
query Delegates($input: DelegatesInput!) {
delegates(input: $input) {
nodes {
... on Delegate {
...DelegateFragment
}
... on Organization {
...OrganizationFragment
}
... on Member {
...MemberFragment
}
... on Delegation {
...DelegationFragment
}
... on Governor {
...GovernorFragment
}
... on Proposal {
...ProposalFragment
}
... on Vote {
...VoteFragment
}
... on StakeEvent {
...StakeEventFragment
}
... on StakeEarning {
...StakeEarningFragment
}
... on Contributor {
...ContributorFragment
}
}
pageInfo {
firstCursor
lastCursor
count
}
}
}
Variables
{"input": DelegatesInput}
Response
{
"data": {
"delegates": {
"nodes": [Delegate],
"pageInfo": PageInfo
}
}
}
delegators
Description
Returns a paginated list of delegators of a delegate that match the provided filters.
Response
Returns a PaginatedOutput!
Arguments
Name | Description |
---|---|
input - DelegationsInput!
|
Example
Query
query Delegators($input: DelegationsInput!) {
delegators(input: $input) {
nodes {
... on Delegate {
...DelegateFragment
}
... on Organization {
...OrganizationFragment
}
... on Member {
...MemberFragment
}
... on Delegation {
...DelegationFragment
}
... on Governor {
...GovernorFragment
}
... on Proposal {
...ProposalFragment
}
... on Vote {
...VoteFragment
}
... on StakeEvent {
...StakeEventFragment
}
... on StakeEarning {
...StakeEarningFragment
}
... on Contributor {
...ContributorFragment
}
}
pageInfo {
firstCursor
lastCursor
count
}
}
}
Variables
{"input": DelegationsInput}
Response
{
"data": {
"delegators": {
"nodes": [Delegate],
"pageInfo": PageInfo
}
}
}
governor
Description
Returns governor by ID or slug.
Response
Returns a Governor!
Arguments
Name | Description |
---|---|
input - GovernorInput!
|
Example
Query
query Governor($input: GovernorInput!) {
governor(input: $input) {
id
chainId
contracts {
governor {
...GovernorContractFragment
}
tokens {
...TokenContractFragment
}
}
isIndexing
isBehind
isPrimary
kind
lastIndexedBlock {
id
number
timestamp
ts
}
name
organization {
id
slug
name
chainIds
tokenIds
governorIds
metadata {
...OrganizationMetadataFragment
}
creator {
...AccountFragment
}
hasActiveProposals
proposalsCount
delegatesCount
delegatesVotesCount
tokenOwnersCount
endorsementService {
...EndorsementServiceFragment
}
}
proposalStats {
total
active
failed
passed
}
parameters {
quorumVotes
proposalThreshold
votingDelay
votingPeriod
gracePeriod
quorumNumerator
quorumDenominator
clockMode
nomineeVettingDuration
fullWeightDuration
}
quorum
slug
timelockId
tokenId
token {
id
type
name
symbol
supply
lastIndexedBlock {
...BlockFragment
}
decimals
eligibility {
...EligibilityFragment
}
isIndexing
isBehind
}
type
delegatesCount
delegatesVotesCount
tokenOwnersCount
metadata {
description
}
}
}
Variables
{"input": GovernorInput}
Response
{
"data": {
"governor": {
"id": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
"chainId": "eip155:1",
"contracts": Contracts,
"isIndexing": true,
"isBehind": true,
"isPrimary": true,
"kind": "single",
"lastIndexedBlock": Block,
"name": "Uniswap",
"organization": Organization,
"proposalStats": ProposalStats,
"parameters": GovernorParameters,
"quorum": 10987654321,
"slug": "uniswap",
"timelockId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
"tokenId": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f",
"token": Token,
"type": "governoralpha",
"delegatesCount": 123,
"delegatesVotesCount": 10987654321,
"tokenOwnersCount": 987,
"metadata": GovernorMetadata
}
}
}
governors
Description
Returns a paginated list of governors that match the provided filters. Note: Tally may deactivate governors from time to time. If you wish to include those set includeInactive
to true
.
Response
Returns a PaginatedOutput!
Arguments
Name | Description |
---|---|
input - GovernorsInput!
|
Example
Query
query Governors($input: GovernorsInput!) {
governors(input: $input) {
nodes {
... on Delegate {
...DelegateFragment
}
... on Organization {
...OrganizationFragment
}
... on Member {
...MemberFragment
}
... on Delegation {
...DelegationFragment
}
... on Governor {
...GovernorFragment
}
... on Proposal {
...ProposalFragment
}
... on Vote {
...VoteFragment
}
... on StakeEvent {
...StakeEventFragment
}
... on StakeEarning {
...StakeEarningFragment
}
... on Contributor {
...ContributorFragment
}
}
pageInfo {
firstCursor
lastCursor
count
}
}
}
Variables
{"input": GovernorsInput}
Response
{
"data": {
"governors": {
"nodes": [Delegate],
"pageInfo": PageInfo
}
}
}
organization
Description
Returns organization by ID or slug.
Response
Returns an Organization!
Arguments
Name | Description |
---|---|
input - OrganizationInput!
|
Example
Query
query Organization($input: OrganizationInput!) {
organization(input: $input) {
id
slug
name
chainIds
tokenIds
governorIds
metadata {
color
description
icon
}
creator {
id
address
ens
twitter
name
bio
picture
safes
type
votes
proposalsCreatedCount
}
hasActiveProposals
proposalsCount
delegatesCount
delegatesVotesCount
tokenOwnersCount
endorsementService {
id
competencyFields {
...CompetencyFieldDescriptorFragment
}
}
}
}
Variables
{"input": OrganizationInput}
Response
{
"data": {
"organization": {
"id": 2207450143689540900,
"slug": "xyz789",
"name": "xyz789",
"chainIds": ["eip155:1"],
"tokenIds": [
"eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"
],
"governorIds": [
"eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"
],
"metadata": OrganizationMetadata,
"creator": Account,
"hasActiveProposals": false,
"proposalsCount": 987,
"delegatesCount": 987,
"delegatesVotesCount": 10987654321,
"tokenOwnersCount": 123,
"endorsementService": EndorsementService
}
}
}
organizations
Description
Returns a paginated list of organizations that match the provided filters.
Response
Returns a PaginatedOutput!
Arguments
Name | Description |
---|---|
input - OrganizationsInput
|
Example
Query
query Organizations($input: OrganizationsInput) {
organizations(input: $input) {
nodes {
... on Delegate {
...DelegateFragment
}
... on Organization {
...OrganizationFragment
}
... on Member {
...MemberFragment
}
... on Delegation {
...DelegationFragment
}
... on Governor {
...GovernorFragment
}
... on Proposal {
...ProposalFragment
}
... on Vote {
...VoteFragment
}
... on StakeEvent {
...StakeEventFragment
}
... on StakeEarning {
...StakeEarningFragment
}
... on Contributor {
...ContributorFragment
}
}
pageInfo {
firstCursor
lastCursor
count
}
}
}
Variables
{"input": OrganizationsInput}
Response
{
"data": {
"organizations": {
"nodes": [Delegate],
"pageInfo": PageInfo
}
}
}
proposal
Description
Returns a proposal by ID or onchainId + governorId. Also retruns latest draft version by ID.
Response
Returns a Proposal!
Arguments
Name | Description |
---|---|
input - ProposalInput!
|
Example
Query
query Proposal($input: ProposalInput!) {
proposal(input: $input) {
id
onchainId
block {
id
number
timestamp
ts
}
chainId
creator {
id
address
ens
twitter
name
bio
picture
safes
type
votes
proposalsCreatedCount
}
end {
... on Block {
...BlockFragment
}
... on BlocklessTimestamp {
...BlocklessTimestampFragment
}
}
events {
block {
...BlockFragment
}
chainId
createdAt
type
txHash
}
executableCalls {
calldata
chainId
index
signature
target
type
value
decodedCalldata {
...DecodedCalldataFragment
}
}
governor {
id
chainId
contracts {
...ContractsFragment
}
isIndexing
isBehind
isPrimary
kind
lastIndexedBlock {
...BlockFragment
}
name
organization {
...OrganizationFragment
}
proposalStats {
...ProposalStatsFragment
}
parameters {
...GovernorParametersFragment
}
quorum
slug
timelockId
tokenId
token {
...TokenFragment
}
type
delegatesCount
delegatesVotesCount
tokenOwnersCount
metadata {
...GovernorMetadataFragment
}
}
metadata {
title
description
eta
ipfsHash
previousEnd
timelockId
txHash
discourseURL
snapshotURL
}
organization {
id
slug
name
chainIds
tokenIds
governorIds
metadata {
...OrganizationMetadataFragment
}
creator {
...AccountFragment
}
hasActiveProposals
proposalsCount
delegatesCount
delegatesVotesCount
tokenOwnersCount
endorsementService {
...EndorsementServiceFragment
}
}
proposer {
id
address
ens
twitter
name
bio
picture
safes
type
votes
proposalsCreatedCount
}
quorum
status
start {
... on Block {
...BlockFragment
}
... on BlocklessTimestamp {
...BlocklessTimestampFragment
}
}
voteStats {
type
votesCount
votersCount
percent
}
}
}
Variables
{"input": ProposalInput}
Response
{
"data": {
"proposal": {
"id": 2207450143689540900,
"onchainId": "abc123",
"block": Block,
"chainId": "eip155:1",
"creator": Account,
"end": Block,
"events": [ProposalEvent],
"executableCalls": [ExecutableCall],
"governor": Governor,
"metadata": ProposalMetadata,
"organization": Organization,
"proposer": Account,
"quorum": 10987654321,
"status": "active",
"start": Block,
"voteStats": [VoteStats]
}
}
}
proposals
Description
Returns a paginated list of proposals that match the provided filters.
Response
Returns a PaginatedOutput!
Arguments
Name | Description |
---|---|
input - ProposalsInput!
|
Example
Query
query Proposals($input: ProposalsInput!) {
proposals(input: $input) {
nodes {
... on Delegate {
...DelegateFragment
}
... on Organization {
...OrganizationFragment
}
... on Member {
...MemberFragment
}
... on Delegation {
...DelegationFragment
}
... on Governor {
...GovernorFragment
}
... on Proposal {
...ProposalFragment
}
... on Vote {
...VoteFragment
}
... on StakeEvent {
...StakeEventFragment
}
... on StakeEarning {
...StakeEarningFragment
}
... on Contributor {
...ContributorFragment
}
}
pageInfo {
firstCursor
lastCursor
count
}
}
}
Variables
{"input": ProposalsInput}
Response
{
"data": {
"proposals": {
"nodes": [Delegate],
"pageInfo": PageInfo
}
}
}
token
Response
Returns a Token!
Arguments
Name | Description |
---|---|
input - TokenInput!
|
Example
Query
query Token($input: TokenInput!) {
token(input: $input) {
id
type
name
symbol
supply
lastIndexedBlock {
id
number
timestamp
ts
}
decimals
eligibility {
status
proof
amount
tx
}
isIndexing
isBehind
}
}
Variables
{"input": TokenInput}
Response
{
"data": {
"token": {
"id": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f",
"type": "ERC20",
"name": "abc123",
"symbol": "abc123",
"supply": 10987654321,
"lastIndexedBlock": Block,
"decimals": 987,
"eligibility": Eligibility,
"isIndexing": false,
"isBehind": false
}
}
}
votes
Description
Returns a paginated list of votes that match the provided filters.
Response
Returns a PaginatedOutput!
Arguments
Name | Description |
---|---|
input - VotesInput!
|
Example
Query
query Votes($input: VotesInput!) {
votes(input: $input) {
nodes {
... on Delegate {
...DelegateFragment
}
... on Organization {
...OrganizationFragment
}
... on Member {
...MemberFragment
}
... on Delegation {
...DelegationFragment
}
... on Governor {
...GovernorFragment
}
... on Proposal {
...ProposalFragment
}
... on Vote {
...VoteFragment
}
... on StakeEvent {
...StakeEventFragment
}
... on StakeEarning {
...StakeEarningFragment
}
... on Contributor {
...ContributorFragment
}
}
pageInfo {
firstCursor
lastCursor
count
}
}
}
Variables
{"input": VotesInput}
Response
{
"data": {
"votes": {
"nodes": [Delegate],
"pageInfo": PageInfo
}
}
}
Types
Account
Fields
Field Name | Description |
---|---|
id - ID!
|
|
address - Address!
|
|
ens - String
|
|
twitter - String
|
|
name - String!
|
|
bio - String!
|
|
picture - String
|
|
safes - [AccountID!]
|
|
type - AccountType!
|
|
votes - Uint256!
|
|
Arguments
|
|
proposalsCreatedCount - Int!
|
|
Arguments
|
Example
{
"id": "4",
"address": "0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
"ens": "tallyxyz.eth",
"twitter": "@tallyxyz",
"name": "Tally",
"bio": "Now accepting delegations!",
"picture": "https://static.tally.xyz/logo.png",
"safes": [
"eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"
],
"type": "EOA",
"votes": 10987654321,
"proposalsCreatedCount": 987
}
AccountID
Description
AccountID is a CAIP-10 compliant account id.
Example
"eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"
AccountType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"EOA"
Address
Description
Address is a 20 byte Ethereum address, represented as 0x-prefixed hexadecimal.
Example
"0x1234567800000000000000000000000000000abc"
Any
Example
Any
AssetID
Description
AssetID is a CAIP-19 compliant asset id.
Example
"eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"
Block
Fields
Field Name | Description |
---|---|
id - BlockID!
|
|
number - Int!
|
|
timestamp - Timestamp!
|
|
ts - Timestamp!
|
Example
{
"id": BlockID,
"number": 1553735115537351,
"timestamp": 1663224162,
"ts": 1663224162
}
BlockID
Description
BlockID is a ChainID scoped identifier for identifying blocks across chains. Ex: eip155:1:15672.
Example
BlockID
BlockOrTimestamp
Types
Union Types |
---|
Example
Block
BlocklessTimestamp
Fields
Field Name | Description |
---|---|
timestamp - Timestamp!
|
Example
{"timestamp": 1663224162}
Boolean
Description
The Boolean
scalar type represents true
or false
.
Bytes
Description
Bytes is an arbitrary length binary string, represented as 0x-prefixed hexadecimal.
Example
"0x4321abcd"
Chain
Description
Chain data in the models are only loaded on server startup. If changed please restart the api servers.
Fields
Field Name | Description |
---|---|
id - ChainID!
|
The id in eip155:chain_id |
layer1Id - ChainID
|
If chain is an L2, the L1 id in format eip155:chain_id |
name - String!
|
Chain name as found in eip lists. e.g.: Ethereum Testnet Rinkeby |
mediumName - String!
|
Chain name with removed redundancy and unnecessary words. e.g.: Ethereum Rinkeby |
shortName - String!
|
Chain short name as found in eip lists. The Acronym of it. e.g.: rin |
blockTime - Float!
|
Average block time in seconds. |
isTestnet - Boolean!
|
Boolean true if it is a testnet, false if it's not. |
nativeCurrency - NativeCurrency!
|
Data from chain native currency. |
chain - String!
|
Chain as parameter found in the eip. |
useLayer1VotingPeriod - Boolean!
|
Boolean true if L2 depends on L1 for voting period, false if it doesn't. |
Example
{
"id": "eip155:1",
"layer1Id": "eip155:1",
"name": "Ethereum Mainnet",
"mediumName": "Ethereum",
"shortName": "eth",
"blockTime": 12,
"isTestnet": false,
"nativeCurrency": "ETH",
"chain": "ETH",
"useLayer1VotingPeriod": true
}
ChainID
Description
ChainID is a CAIP-2 compliant chain id.
Example
"eip155:1"
CompetencyFieldDescriptor
Contracts
Fields
Field Name | Description |
---|---|
governor - GovernorContract!
|
|
tokens - [TokenContract!]!
|
Example
{
"governor": GovernorContract,
"tokens": [TokenContract]
}
Contributor
Fields
Field Name | Description |
---|---|
account - Account!
|
|
isCurator - Boolean!
|
|
isApplyingForCouncil - Boolean!
|
|
competencyFieldDescriptors - [CompetencyFieldDescriptor!]!
|
|
bio - UserBio!
|
Example
{
"account": Account,
"isCurator": false,
"isApplyingForCouncil": false,
"competencyFieldDescriptors": [
CompetencyFieldDescriptor
],
"bio": UserBio
}
DataDecoded
Fields
Field Name | Description |
---|---|
method - String!
|
|
parameters - [Parameter!]!
|
Example
{
"method": "xyz789",
"parameters": [Parameter]
}
Date
Description
Date is a date in the format ISO 8601 format, e.g. YYYY-MM-DD.
Example
"2022-09-22"
DecodedCalldata
Fields
Field Name | Description |
---|---|
signature - String!
|
The function signature/name |
parameters - [DecodedParameter!]!
|
The decoded parameters |
Example
{
"signature": "abc123",
"parameters": [DecodedParameter]
}
DecodedParameter
Delegate
Fields
Field Name | Description |
---|---|
id - IntID!
|
|
account - Account!
|
|
chainId - ChainID
|
|
delegatorsCount - Int!
|
|
governor - Governor
|
|
organization - Organization
|
|
statement - DelegateStatement
|
|
token - Token
|
|
votesCount - Uint256!
|
|
Arguments
|
Example
{
"id": 2207450143689540900,
"account": Account,
"chainId": "eip155:1",
"delegatorsCount": 123,
"governor": Governor,
"organization": Organization,
"statement": DelegateStatement,
"token": Token,
"votesCount": 10987654321
}
DelegateInput
DelegateStatement
Example
{
"id": 2207450143689540900,
"address": "0x1234567800000000000000000000000000000abc",
"organizationID": 2207450143689540900,
"statement": "abc123",
"statementSummary": "xyz789",
"isSeekingDelegation": false,
"issues": [Issue]
}
DelegatesFiltersInput
Example
{
"address": "0x1234567800000000000000000000000000000abc",
"governorId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
"hasVotes": false,
"hasDelegators": false,
"issueIds": [2207450143689540900],
"isSeekingDelegation": true,
"organizationId": 2207450143689540900
}
DelegatesInput
Fields
Input Field | Description |
---|---|
filters - DelegatesFiltersInput!
|
|
page - PageInput
|
|
sort - DelegatesSortInput
|
Example
{
"filters": DelegatesFiltersInput,
"page": PageInput,
"sort": DelegatesSortInput
}
DelegatesSortBy
Values
Enum Value | Description |
---|---|
|
The default sorting method. It sorts by date. |
|
Sorts by voting power. |
|
Sorts by total delegators. |
|
Sorts by DAO prioritization. |
Example
"id"
DelegatesSortInput
Fields
Input Field | Description |
---|---|
isDescending - Boolean!
|
|
sortBy - DelegatesSortBy!
|
Example
{"isDescending": true, "sortBy": "id"}
Delegation
Fields
Field Name | Description |
---|---|
id - IntID!
|
|
blockNumber - Int!
|
|
blockTimestamp - Timestamp!
|
|
chainId - ChainID!
|
|
delegator - Account!
|
|
delegate - Account!
|
|
organization - Organization!
|
|
token - Token!
|
|
votes - Uint256!
|
Example
{
"id": 2207450143689540900,
"blockNumber": 987,
"blockTimestamp": 1663224162,
"chainId": "eip155:1",
"delegator": Account,
"delegate": Account,
"organization": Organization,
"token": Token,
"votes": 10987654321
}
DelegationInput
DelegationsFiltersInput
DelegationsInput
Fields
Input Field | Description |
---|---|
filters - DelegationsFiltersInput!
|
|
page - PageInput
|
|
sort - DelegationsSortInput
|
Example
{
"filters": DelegationsFiltersInput,
"page": PageInput,
"sort": DelegationsSortInput
}
DelegationsSortBy
Values
Enum Value | Description |
---|---|
|
The default sorting method. It sorts by date. |
|
Sorts by voting power. |
Example
"id"
DelegationsSortInput
Fields
Input Field | Description |
---|---|
isDescending - Boolean!
|
|
sortBy - DelegationsSortBy!
|
Example
{"isDescending": false, "sortBy": "id"}
Eligibility
Fields
Field Name | Description |
---|---|
status - EligibilityStatus!
|
Whether the account is eligible to claim |
proof - [String!]
|
|
amount - Uint256
|
Amount the account can claim from this token |
tx - HashID
|
Example
{
"status": "NOTELIGIBLE",
"proof": ["xyz789"],
"amount": 10987654321,
"tx": "eip155:1:0xcd31cf5dbd3281442d80ceaa529eba678d55be86b7a342f5ed9cc8e49dadc855"
}
EligibilityStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
Example
"NOTELIGIBLE"
EndorsementService
Fields
Field Name | Description |
---|---|
id - IntID!
|
|
competencyFields - [CompetencyFieldDescriptor!]!
|
Example
{
"id": 2207450143689540900,
"competencyFields": [CompetencyFieldDescriptor]
}
ExecutableCall
Fields
Field Name | Description |
---|---|
calldata - Bytes!
|
|
chainId - ChainID!
|
|
index - Int!
|
|
signature - String
|
Target contract's function signature. |
target - Address!
|
|
type - ExecutableCallType
|
|
value - Uint256!
|
|
decodedCalldata - DecodedCalldata
|
Decoded representation of the calldata |
Example
{
"calldata": "0x4321abcd",
"chainId": "eip155:1",
"index": 123,
"signature": "abc123",
"target": "0x1234567800000000000000000000000000000abc",
"type": "custom",
"value": 10987654321,
"decodedCalldata": DecodedCalldata
}
ExecutableCallType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"custom"
Float
Description
The Float
scalar type represents signed double-precision fractional values as specified by IEEE 754.
Example
987.65
Governor
Fields
Field Name | Description |
---|---|
id - AccountID!
|
|
chainId - ChainID!
|
|
contracts - Contracts!
|
|
isIndexing - Boolean!
|
|
isBehind - Boolean!
|
|
isPrimary - Boolean!
|
|
kind - GovernorKind!
|
|
lastIndexedBlock - Block!
|
Last block that Tally has indexed. Sometimes our indexer needs to catch up. Our indexer is usually ~1min behind depending on chain so we don't serve data that might later be reorged. |
name - String!
|
Tally name of the governor contract |
organization - Organization!
|
|
proposalStats - ProposalStats!
|
|
parameters - GovernorParameters!
|
|
quorum - Uint256!
|
The minumum amount of votes (total or for depending on type) that are currently required to pass a proposal. |
slug - String!
|
Tally slug used for this goverance: tally.xyz/gov/[slug] |
timelockId - AccountID
|
Chain scoped address of the timelock contract for this governor if it exists. |
tokenId - AssetID!
|
|
token - Token!
|
|
type - GovernorType!
|
|
delegatesCount - Int!
|
|
delegatesVotesCount - Uint256!
|
|
tokenOwnersCount - Int!
|
|
metadata - GovernorMetadata
|
Example
{
"id": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
"chainId": "eip155:1",
"contracts": Contracts,
"isIndexing": true,
"isBehind": false,
"isPrimary": true,
"kind": "single",
"lastIndexedBlock": Block,
"name": "Uniswap",
"organization": Organization,
"proposalStats": ProposalStats,
"parameters": GovernorParameters,
"quorum": 10987654321,
"slug": "uniswap",
"timelockId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
"tokenId": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f",
"token": Token,
"type": "governoralpha",
"delegatesCount": 123,
"delegatesVotesCount": 10987654321,
"tokenOwnersCount": 987,
"metadata": GovernorMetadata
}
GovernorContract
Fields
Field Name | Description |
---|---|
address - Address!
|
|
type - GovernorType!
|
|
lastBlock - Int!
|
Example
{
"address": "0x1234567800000000000000000000000000000abc",
"type": "governoralpha",
"lastBlock": 987
}
GovernorInput
GovernorKind
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"single"
GovernorMetadata
Fields
Field Name | Description |
---|---|
description - String
|
Example
{"description": "xyz789"}
GovernorParameters
Example
{
"quorumVotes": 10987654321,
"proposalThreshold": 10987654321,
"votingDelay": 10987654321,
"votingPeriod": 10987654321,
"gracePeriod": 10987654321,
"quorumNumerator": 10987654321,
"quorumDenominator": 10987654321,
"clockMode": "abc123",
"nomineeVettingDuration": 10987654321,
"fullWeightDuration": 10987654321
}
GovernorType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"governoralpha"
GovernorsFiltersInput
GovernorsInput
Fields
Input Field | Description |
---|---|
filters - GovernorsFiltersInput!
|
|
page - PageInput
|
|
sort - GovernorsSortInput
|
Example
{
"filters": GovernorsFiltersInput,
"page": PageInput,
"sort": GovernorsSortInput
}
GovernorsSortBy
Values
Enum Value | Description |
---|---|
|
The default sorting method. It sorts by date. |
Example
"id"
GovernorsSortInput
Fields
Input Field | Description |
---|---|
isDescending - Boolean!
|
|
sortBy - GovernorsSortBy!
|
Example
{"isDescending": false, "sortBy": "id"}
Hash
Description
Hash is for identifying transactions on a chain. Ex: 0xDEAD.
Example
"0xcd31cf5dbd3281442d80ceaa529eba678d55be86b7a342f5ed9cc8e49dadc855"
HashID
Description
HashID is a ChainID scoped identifier for identifying transactions across chains. Ex: eip155:1:0xDEAD.
Example
"eip155:1:0xcd31cf5dbd3281442d80ceaa529eba678d55be86b7a342f5ed9cc8e49dadc855"
ID
Description
The ID
scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4"
) or integer (such as 4
) input value will be accepted as an ID.
Example
"4"
Int
Description
The Int
scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
123
IntID
Description
IntID is a 64bit integer as a string - this is larger than Javascript's number.
Example
2207450143689540900
Issue
Member
Fields
Field Name | Description |
---|---|
id - ID!
|
|
account - Account!
|
|
organization - Organization!
|
Example
{
"id": "4",
"account": Account,
"organization": Organization
}
NativeCurrency
Node
Description
Union of all node types that are paginated.
Types
Union Types |
---|
Example
Delegate
Organization
Fields
Field Name | Description |
---|---|
id - IntID!
|
|
slug - String!
|
|
name - String!
|
|
chainIds - [ChainID!]!
|
|
tokenIds - [AssetID!]!
|
|
governorIds - [AccountID!]!
|
|
metadata - OrganizationMetadata
|
|
creator - Account
|
|
hasActiveProposals - Boolean!
|
|
proposalsCount - Int!
|
|
delegatesCount - Int!
|
|
delegatesVotesCount - Uint256!
|
|
tokenOwnersCount - Int!
|
|
endorsementService - EndorsementService
|
Example
{
"id": 2207450143689540900,
"slug": "abc123",
"name": "abc123",
"chainIds": ["eip155:1"],
"tokenIds": [
"eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"
],
"governorIds": [
"eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"
],
"metadata": OrganizationMetadata,
"creator": Account,
"hasActiveProposals": false,
"proposalsCount": 123,
"delegatesCount": 987,
"delegatesVotesCount": 10987654321,
"tokenOwnersCount": 987,
"endorsementService": EndorsementService
}
OrganizationInput
OrganizationMetadata
OrganizationsFiltersInput
Example
{
"address": "0x1234567800000000000000000000000000000abc",
"chainId": "eip155:1",
"hasLogo": false,
"isMember": true
}
OrganizationsInput
Fields
Input Field | Description |
---|---|
filters - OrganizationsFiltersInput
|
|
page - PageInput
|
|
sort - OrganizationsSortInput
|
Example
{
"filters": OrganizationsFiltersInput,
"page": PageInput,
"sort": OrganizationsSortInput
}
OrganizationsSortBy
Values
Enum Value | Description |
---|---|
|
The default sorting method. It sorts by date. |
|
|
|
Sorts by live proposals and voters as on the Tally explore page. |
|
Same as explore but does not prioritize live proposals. |
Example
"id"
OrganizationsSortInput
Fields
Input Field | Description |
---|---|
isDescending - Boolean!
|
|
sortBy - OrganizationsSortBy!
|
Example
{"isDescending": true, "sortBy": "id"}
PageInfo
Description
Page metadata including pagination cursors and total count
Example
{
"firstCursor": "abc123",
"lastCursor": "xyz789",
"count": 987
}
PageInput
Description
Input to specify cursor based pagination parameters. Depending on which page is being fetched, between afterCursor
& beforeCursor
, only one's value needs to be provided
Example
{
"afterCursor": "xyz789",
"beforeCursor": "abc123",
"limit": 123
}
PaginatedOutput
Parameter
Fields
Field Name | Description |
---|---|
name - String!
|
|
type - String!
|
|
value - Any!
|
|
valueDecoded - [ValueDecoded!]
|
Example
{
"name": "xyz789",
"type": "abc123",
"value": Any,
"valueDecoded": [ValueDecoded]
}
Proposal
Fields
Field Name | Description |
---|---|
id - IntID!
|
Tally ID |
onchainId - String
|
ID onchain |
block - Block
|
|
chainId - ChainID!
|
|
creator - Account
|
Account that submitted this proposal onchain
|
end - BlockOrTimestamp!
|
Last block or timestamp when you can cast a vote |
events - [ProposalEvent!]!
|
List of state transitions for this proposal. The last ProposalEvent is the current state. |
executableCalls - [ExecutableCall!]
|
|
governor - Governor!
|
|
metadata - ProposalMetadata!
|
|
organization - Organization!
|
|
proposer - Account
|
Account that created this proposal offchain
|
quorum - Uint256
|
|
status - ProposalStatus!
|
|
start - BlockOrTimestamp!
|
First block when you can cast a vote, also the time when quorum is established |
voteStats - [VoteStats!]
|
Example
{
"id": 2207450143689540900,
"onchainId": "xyz789",
"block": Block,
"chainId": "eip155:1",
"creator": Account,
"end": Block,
"events": [ProposalEvent],
"executableCalls": [ExecutableCall],
"governor": Governor,
"metadata": ProposalMetadata,
"organization": Organization,
"proposer": Account,
"quorum": 10987654321,
"status": "active",
"start": Block,
"voteStats": [VoteStats]
}
ProposalEvent
Fields
Field Name | Description |
---|---|
block - Block
|
|
chainId - ChainID!
|
|
createdAt - Timestamp!
|
|
type - ProposalEventType!
|
|
txHash - Hash
|
Example
{
"block": Block,
"chainId": "eip155:1",
"createdAt": 1663224162,
"type": "activated",
"txHash": "0xcd31cf5dbd3281442d80ceaa529eba678d55be86b7a342f5ed9cc8e49dadc855"
}
ProposalEventType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"activated"
ProposalInput
Example
{
"id": 2207450143689540900,
"onchainId": "abc123",
"governorId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
"includeArchived": true,
"isLatest": true
}
ProposalMetadata
Fields
Field Name | Description |
---|---|
title - String!
|
Proposal title: usually first line of description |
description - String!
|
Proposal description onchain |
eta - Int
|
Time at which a proposal can be executed |
ipfsHash - String
|
|
previousEnd - Int
|
|
timelockId - AccountID
|
|
txHash - Hash
|
|
discourseURL - String
|
|
snapshotURL - String
|
Example
{
"title": "Fund the Grants Program",
"description": "Here's why it's a good idea to fund the Grants Program",
"eta": 1675437793,
"ipfsHash": "xyz789",
"previousEnd": 987,
"timelockId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
"txHash": "0xcd31cf5dbd3281442d80ceaa529eba678d55be86b7a342f5ed9cc8e49dadc855",
"discourseURL": "abc123",
"snapshotURL": "xyz789"
}
ProposalStats
Example
{"total": 987, "active": 987, "failed": 987, "passed": 123}
ProposalStatus
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"active"
ProposalsCreatedCountInput
ProposalsFiltersInput
Example
{
"governorId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
"includeArchived": true,
"isDraft": false,
"organizationId": 2207450143689540900,
"proposer": "0x1234567800000000000000000000000000000abc"
}
ProposalsInput
Fields
Input Field | Description |
---|---|
filters - ProposalsFiltersInput!
|
|
page - PageInput
|
|
sort - ProposalsSortInput
|
Example
{
"filters": ProposalsFiltersInput,
"page": PageInput,
"sort": ProposalsSortInput
}
ProposalsSortBy
Values
Enum Value | Description |
---|---|
|
The default sorting method. It sorts by date. |
Example
"id"
ProposalsSortInput
Fields
Input Field | Description |
---|---|
isDescending - Boolean!
|
|
sortBy - ProposalsSortBy!
|
Example
{"isDescending": false, "sortBy": "id"}
Role
Values
Enum Value | Description |
---|---|
|
|
|
Example
"ADMIN"
StakeEarning
StakeEvent
Fields
Field Name | Description |
---|---|
amount - Uint256!
|
|
block - Block!
|
|
type - StakeEventType!
|
Example
{"amount": 10987654321, "block": Block, "type": "deposit"}
StakeEventType
Values
Enum Value | Description |
---|---|
|
|
|
Example
"deposit"
String
Description
The String
scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"xyz789"
Timestamp
Description
Timestamp is a RFC3339 string.
Example
1663224162
Token
Description
Core type that describes an onchain Token contract
Fields
Field Name | Description |
---|---|
id - AssetID!
|
|
type - TokenType!
|
Token contract type |
name - String!
|
Onchain name |
symbol - String!
|
Onchain symbol |
supply - Uint256!
|
supply derived from Transfer events |
lastIndexedBlock - Block!
|
Last block that Tally has indexed. Sometimes our indexer needs to catch up. Our indexer is usually ~1min behind depending on chain so we don't serve data that might later be reorged. |
decimals - Int!
|
Number of decimal places included in Uint256 values |
eligibility - Eligibility!
|
Eligibility of an account to claim this token |
Arguments
|
|
isIndexing - Boolean!
|
|
isBehind - Boolean!
|
Example
{
"id": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f",
"type": "ERC20",
"name": "abc123",
"symbol": "xyz789",
"supply": 10987654321,
"lastIndexedBlock": Block,
"decimals": 987,
"eligibility": Eligibility,
"isIndexing": false,
"isBehind": true
}
TokenContract
Fields
Field Name | Description |
---|---|
address - Address!
|
|
lastBlock - Int!
|
|
type - TokenType!
|
Example
{
"address": "0x1234567800000000000000000000000000000abc",
"lastBlock": 123,
"type": "ERC20"
}
TokenInput
Fields
Input Field | Description |
---|---|
id - AssetID!
|
Example
{
"id": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"
}
TokenType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
Example
"ERC20"
Uint256
Description
Uint256 is a large unsigned integer represented as a string.
Example
10987654321
UserBio
ValueDecoded
Fields
Field Name | Description |
---|---|
operation - Int!
|
|
to - String!
|
|
value - String!
|
|
data - String!
|
|
dataDecoded - DataDecoded
|
Example
{
"operation": 123,
"to": "abc123",
"value": "xyz789",
"data": "abc123",
"dataDecoded": DataDecoded
}
Vote
Example
{
"id": 2207450143689540900,
"amount": 10987654321,
"block": Block,
"chainId": "eip155:1",
"isBridged": false,
"proposal": Proposal,
"reason": "xyz789",
"type": "abstain",
"txHash": "0xcd31cf5dbd3281442d80ceaa529eba678d55be86b7a342f5ed9cc8e49dadc855",
"voter": Account
}
VoteStats
Description
Voting Summary per Choice
Example
{
"type": "abstain",
"votesCount": 10987654321,
"votersCount": 123,
"percent": 987.65
}
VoteType
Values
Enum Value | Description |
---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"abstain"
VotesFiltersInput
Example
{
"proposalId": 2207450143689540900,
"proposalIds": [2207450143689540900],
"voter": "0x1234567800000000000000000000000000000abc",
"includePendingVotes": true,
"type": "abstain"
}
VotesInput
Fields
Input Field | Description |
---|---|
filters - VotesFiltersInput!
|
|
page - PageInput
|
|
sort - VotesSortInput
|
Example
{
"filters": VotesFiltersInput,
"page": PageInput,
"sort": VotesSortInput
}
VotesSortBy
Values
Enum Value | Description |
---|---|
|
The default sorting method. It sorts by date. |
|
Example
"id"
VotesSortInput
Fields
Input Field | Description |
---|---|
isDescending - Boolean!
|
|
sortBy - VotesSortBy!
|
Example
{"isDescending": false, "sortBy": "id"}