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.

Contact

API Support

support@tally.xyz

License

An Apache 2.0 covers these API docs

https://www.apache.org/licenses/LICENSE-2.0.html

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 exmaple 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": 123
      }
    ]
  }
}

chains

Response

Returns [Chain]!

Example

Query
query Chains {
  chains {
    id
    layer1Id
    name
    mediumName
    shortName
    blockTime
    isTestnet
    nativeCurrency {
      name
      symbol
      decimals
    }
    chain
    blockExplorerAPI
    blockExplorerURL
    useLayer1VotingPeriod
    gnosisServiceURL
    cowswapSupport
    milkmanContract
    envExplorerArg
    envRPCArg
  }
}
Response
{
  "data": {
    "chains": [
      {
        "id": "eip155:1",
        "layer1Id": "eip155:1",
        "name": "Ethereum Mainnet",
        "mediumName": "Ethereum",
        "shortName": "eth",
        "blockTime": 12,
        "isTestnet": false,
        "nativeCurrency": "ETH",
        "chain": "ETH",
        "blockExplorerAPI": "https://api.etherscan.io/api",
        "blockExplorerURL": "https://etherscan.io/",
        "useLayer1VotingPeriod": false,
        "gnosisServiceURL": "xyz789",
        "cowswapSupport": true,
        "milkmanContract": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
        "envExplorerArg": "abc123",
        "envRPCArg": "abc123"
      }
    ]
  }
}

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
      governorIds
      tokenIds
      metadata {
        ...OrganizationMetadataFragment
      }
      creator {
        ...AccountFragment
      }
      hasActiveProposals
      proposalsCount
      votersCount
      delegatesCount
      delegatesVotesCount
      tokenHoldersCount
      tokenOwnersCount
    }
    statement {
      id
      address
      organizationID
      statement
      statementSummary
      dataSource
      dataSourceURL
      discourseUsername
      discourseProfileLink
      isSeekingDelegation
      issues {
        ...IssueFragment
      }
    }
    token {
      id
      type
      name
      symbol
      supply
      lastIndexedBlock {
        ...BlockFragment
      }
      decimals
      eligibility {
        ...EligibilityFragment
      }
      isIndexing
      isBehind
    }
    votesCount
    voteChanges {
      token {
        ...TokenFragment
      }
      delegate {
        ...AccountFragment
      }
      prevBalance
      newBalance
      netChange
      timestamp
      transaction {
        ...TransactionFragment
      }
    }
  }
}
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,
      "voteChanges": [VotingPowerChange]
    }
  }
}

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
      governorIds
      tokenIds
      metadata {
        ...OrganizationMetadataFragment
      }
      creator {
        ...AccountFragment
      }
      hasActiveProposals
      proposalsCount
      votersCount
      delegatesCount
      delegatesVotesCount
      tokenHoldersCount
      tokenOwnersCount
    }
    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
      }
    }
    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
      }
    }
    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
      }
    }
    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
      governorIds
      tokenIds
      metadata {
        ...OrganizationMetadataFragment
      }
      creator {
        ...AccountFragment
      }
      hasActiveProposals
      proposalsCount
      votersCount
      delegatesCount
      delegatesVotesCount
      tokenHoldersCount
      tokenOwnersCount
    }
    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": false,
      "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": 987,
      "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
      }
    }
    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
    governorIds
    tokenIds
    metadata {
      color
      contact {
        ...ContactFragment
      }
      description
      icon
      socials {
        ...SocialsFragment
      }
      karmaName
    }
    creator {
      id
      address
      ens
      twitter
      name
      bio
      picture
      safes
      type
      votes
      proposalsCreatedCount
    }
    hasActiveProposals
    proposalsCount
    votersCount
    delegatesCount
    delegatesVotesCount
    tokenHoldersCount
    tokenOwnersCount
  }
}
Variables
{"input": OrganizationInput}
Response
{
  "data": {
    "organization": {
      "id": 2207450143689540900,
      "slug": "abc123",
      "name": "abc123",
      "chainIds": ["eip155:1"],
      "governorIds": [
        "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"
      ],
      "tokenIds": [
        "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"
      ],
      "metadata": OrganizationMetadata,
      "creator": Account,
      "hasActiveProposals": false,
      "proposalsCount": 123,
      "votersCount": 123,
      "delegatesCount": 123,
      "delegatesVotesCount": 10987654321,
      "tokenHoldersCount": 987,
      "tokenOwnersCount": 987
    }
  }
}

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
      }
    }
    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
    }
    createdAt
    delegateVotesCount
    end {
      ... on Block {
        ...BlockFragment
      }
      ... on BlocklessTimestamp {
        ...BlocklessTimestampFragment
      }
    }
    events {
      block {
        ...BlockFragment
      }
      chainId
      createdAt
      type
      txHash
    }
    executableCalls {
      calldata
      chainId
      index
      offchaindata {
        ... on ExecutableCallSwap {
          ...ExecutableCallSwapFragment
        }
        ... on ExecutableCallRewards {
          ...ExecutableCallRewardsFragment
        }
      }
      signature
      target
      type
      value
    }
    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
      }
    }
    l1ChainId
    metadata {
      title
      description
      eta
      ipfsHash
      previousEnd
      timelockId
      txHash
      discourseURL
      snapshotURL
    }
    originalId
    organization {
      id
      slug
      name
      chainIds
      governorIds
      tokenIds
      metadata {
        ...OrganizationMetadataFragment
      }
      creator {
        ...AccountFragment
      }
      hasActiveProposals
      proposalsCount
      votersCount
      delegatesCount
      delegatesVotesCount
      tokenHoldersCount
      tokenOwnersCount
    }
    participationType
    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,
      "createdAt": 1663224162,
      "delegateVotesCount": 10987654321,
      "end": Block,
      "events": [ProposalEvent],
      "executableCalls": [ExecutableCall],
      "governor": Governor,
      "l1ChainId": "eip155:1",
      "metadata": ProposalMetadata,
      "originalId": 2207450143689540900,
      "organization": Organization,
      "participationType": "votedfor",
      "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
      }
    }
    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": 123,
      "eligibility": Eligibility,
      "isIndexing": true,
      "isBehind": true
    }
  }
}

tokenBalances

Description

Returns all token balances of an address for a governor or organization or token

Response

Returns [TokenBalance!]!

Arguments
Name Description
input - TokenBalancesInput!

Example

Query
query TokenBalances($input: TokenBalancesInput!) {
  tokenBalances(input: $input) {
    token {
      id
      type
      name
      symbol
      supply
      lastIndexedBlock {
        ...BlockFragment
      }
      decimals
      eligibility {
        ...EligibilityFragment
      }
      isIndexing
      isBehind
    }
    balance
  }
}
Variables
{"input": TokenBalancesInput}
Response
{
  "data": {
    "tokenBalances": [
      {"token": Token, "balance": 10987654321}
    ]
  }
}

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
      }
    }
    pageInfo {
      firstCursor
      lastCursor
      count
    }
  }
}
Variables
{"input": VotesInput}
Response
{
  "data": {
    "votes": {
      "nodes": [Delegate],
      "pageInfo": PageInfo
    }
  }
}

Mutations

createGovernors

Response

Returns an Organization!

Arguments
Name Description
input - CreateGovernorsInput!

Example

Query
mutation CreateGovernors($input: CreateGovernorsInput!) {
  createGovernors(input: $input) {
    id
    slug
    name
    chainIds
    governorIds
    tokenIds
    metadata {
      color
      contact {
        ...ContactFragment
      }
      description
      icon
      socials {
        ...SocialsFragment
      }
      karmaName
    }
    creator {
      id
      address
      ens
      twitter
      name
      bio
      picture
      safes
      type
      votes
      proposalsCreatedCount
    }
    hasActiveProposals
    proposalsCount
    votersCount
    delegatesCount
    delegatesVotesCount
    tokenHoldersCount
    tokenOwnersCount
  }
}
Variables
{"input": CreateGovernorsInput}
Response
{
  "data": {
    "createGovernors": {
      "id": 2207450143689540900,
      "slug": "xyz789",
      "name": "xyz789",
      "chainIds": ["eip155:1"],
      "governorIds": [
        "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"
      ],
      "tokenIds": [
        "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"
      ],
      "metadata": OrganizationMetadata,
      "creator": Account,
      "hasActiveProposals": true,
      "proposalsCount": 123,
      "votersCount": 987,
      "delegatesCount": 123,
      "delegatesVotesCount": 10987654321,
      "tokenHoldersCount": 987,
      "tokenOwnersCount": 123
    }
  }
}

createOrganization

Response

Returns an Organization!

Arguments
Name Description
input - CreateOrganizationInput!

Example

Query
mutation CreateOrganization($input: CreateOrganizationInput!) {
  createOrganization(input: $input) {
    id
    slug
    name
    chainIds
    governorIds
    tokenIds
    metadata {
      color
      contact {
        ...ContactFragment
      }
      description
      icon
      socials {
        ...SocialsFragment
      }
      karmaName
    }
    creator {
      id
      address
      ens
      twitter
      name
      bio
      picture
      safes
      type
      votes
      proposalsCreatedCount
    }
    hasActiveProposals
    proposalsCount
    votersCount
    delegatesCount
    delegatesVotesCount
    tokenHoldersCount
    tokenOwnersCount
  }
}
Variables
{"input": CreateOrganizationInput}
Response
{
  "data": {
    "createOrganization": {
      "id": 2207450143689540900,
      "slug": "xyz789",
      "name": "abc123",
      "chainIds": ["eip155:1"],
      "governorIds": [
        "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"
      ],
      "tokenIds": [
        "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"
      ],
      "metadata": OrganizationMetadata,
      "creator": Account,
      "hasActiveProposals": false,
      "proposalsCount": 123,
      "votersCount": 123,
      "delegatesCount": 987,
      "delegatesVotesCount": 10987654321,
      "tokenHoldersCount": 123,
      "tokenOwnersCount": 987
    }
  }
}

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
governorId - AccountID!
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": 123
}

AccountID

Description

AccountID is a CAIP-10 compliant account id.

Example
"eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"

AccountType

Values
Enum Value Description

EOA

SAFE

Example
"EOA"

Address

Description

Address is a 20 byte Ethereum address, represented as 0x-prefixed hexadecimal.

Example
"0x1234567800000000000000000000000000000abc"

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

Block

BlocklessTimestamp

Example
Block

BlocklessTimestamp

Fields
Field Name Description
timestamp - Timestamp!
Example
{"timestamp": 1663224162}

Boolean

Description

The Boolean scalar type represents true or false.

Example
true

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.
blockExplorerAPI - String! API url of the block explorer
blockExplorerURL - String! Url of the block explorer
useLayer1VotingPeriod - Boolean! Boolean true if L2 depends on L1 for voting period, false if it doesn't.
gnosisServiceURL - String gnosisServiceURL of the chain, can be empty or an string
cowswapSupport - Boolean! Boolean true if Cowswap supports the chain, false if it doesn't.
milkmanContract - AccountID Contract address of Milkman (for Cowswap proposals).
envExplorerArg - String Env Explorer Arg, which can be nil, is the env arg name of the key that we will use in the FE
envRPCArg - String Env RPC Arg, which can be nil, is the env arg name of the RPC endpoint that we will use in the FE
Example
{
  "id": "eip155:1",
  "layer1Id": "eip155:1",
  "name": "Ethereum Mainnet",
  "mediumName": "Ethereum",
  "shortName": "eth",
  "blockTime": 12,
  "isTestnet": false,
  "nativeCurrency": "ETH",
  "chain": "ETH",
  "blockExplorerAPI": "https://api.etherscan.io/api",
  "blockExplorerURL": "https://etherscan.io/",
  "useLayer1VotingPeriod": true,
  "gnosisServiceURL": "xyz789",
  "cowswapSupport": false,
  "milkmanContract": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
  "envExplorerArg": "xyz789",
  "envRPCArg": "xyz789"
}

ChainID

Description

ChainID is a CAIP-2 compliant chain id.

Example
"eip155:1"

Contact

Fields
Field Name Description
name - String!
email - String!
twitter - String!
discord - String!
Example
{
  "name": "abc123",
  "email": "abc123",
  "twitter": "xyz789",
  "discord": "xyz789"
}

ContactInput

Fields
Input Field Description
name - String!
email - String!
twitter - String!
discord - String!
Example
{
  "name": "xyz789",
  "email": "xyz789",
  "twitter": "xyz789",
  "discord": "xyz789"
}

Contracts

Fields
Field Name Description
governor - GovernorContract!
tokens - [TokenContract!]!
Example
{
  "governor": GovernorContract,
  "tokens": [TokenContract]
}

CovalentData

Fields
Field Name Description
decimals - Int!
name - String!
symbol - String!
logo - String!
price - Float!
Example
{
  "decimals": 987,
  "name": "abc123",
  "symbol": "abc123",
  "logo": "abc123",
  "price": 123.45
}

CreateGovernorInput

Fields
Input Field Description
id - AccountID!
name - String
slug - String
startBlock - Int! The block height at which the Governor contract was originally deployed.
type - GovernorType!
kind - GovernorKind
tokenId - AssetID!
metadata - GovernorMetadataInput
Example
{
  "id": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
  "name": "abc123",
  "slug": "abc123",
  "startBlock": 123,
  "type": "governoralpha",
  "kind": "single",
  "tokenId": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f",
  "metadata": GovernorMetadataInput
}

CreateGovernorsInput

Fields
Input Field Description
governors - [CreateGovernorInput!]!
organizationId - IntID Organization id is required when creating governors for an existing DAO
organization - CreateOrganizationInput Organization is required when creating a new DAO with govenors and tokens
tokens - [CreateTokenInput!] Tokens are required when creating a new DAO with govenors and tokens or when tokens for govenrors have not been created yet
Example
{
  "governors": [CreateGovernorInput],
  "organizationId": 2207450143689540900,
  "organization": CreateOrganizationInput,
  "tokens": [CreateTokenInput]
}

CreateOrganizationInput

Fields
Input Field Description
name - String!
metadata - OrganizationMetadataInput
uxVersion - OrgUxVersion
Example
{
  "name": "xyz789",
  "metadata": OrganizationMetadataInput,
  "uxVersion": "governor"
}

CreateTokenInput

Fields
Input Field Description
id - AssetID!
startBlock - Int! The block height at which the Token contract was originally deployed.
Example
{
  "id": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f",
  "startBlock": 987
}

DataDecoded

Fields
Field Name Description
method - String!
parameters - [Parameter!]!
Example
{
  "method": "xyz789",
  "parameters": [Parameter]
}

Delegate

Fields
Field Name Description
id - IntID!
account - Account!
chainId - ChainID
delegatorsCount - Int!
governor - Governor
organization - Organization
statement - DelegateStatement
token - Token
votesCount - Uint256!
Arguments
blockNumber - Int
voteChanges - [VotingPowerChange!]!
Example
{
  "id": 2207450143689540900,
  "account": Account,
  "chainId": "eip155:1",
  "delegatorsCount": 987,
  "governor": Governor,
  "organization": Organization,
  "statement": DelegateStatement,
  "token": Token,
  "votesCount": 10987654321,
  "voteChanges": [VotingPowerChange]
}

DelegateInput

Fields
Input Field Description
address - Address!
governorId - AccountID
organizationId - IntID
Example
{
  "address": "0x1234567800000000000000000000000000000abc",
  "governorId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
  "organizationId": 2207450143689540900
}

DelegateStatement

Fields
Field Name Description
id - IntID!
address - Address!
organizationID - IntID!
statement - String!
statementSummary - String
dataSource - DelegateStatementSource!
dataSourceURL - String
discourseUsername - String
discourseProfileLink - String
isSeekingDelegation - Boolean
issues - [Issue!]
Example
{
  "id": 2207450143689540900,
  "address": "0x1234567800000000000000000000000000000abc",
  "organizationID": 2207450143689540900,
  "statement": "abc123",
  "statementSummary": "xyz789",
  "dataSource": "user",
  "dataSourceURL": "xyz789",
  "discourseUsername": "xyz789",
  "discourseProfileLink": "xyz789",
  "isSeekingDelegation": true,
  "issues": [Issue]
}

DelegateStatementSource

Values
Enum Value Description

user

script

Example
"user"

DelegatesFiltersInput

Fields
Input Field Description
address - Address address filter in combination with organizationId allows fetching delegate info of this address from each chain
governorId - AccountID
hasVotes - Boolean
hasDelegators - Boolean
issueIds - [IntID!]
isSeekingDelegation - Boolean
organizationId - IntID
Example
{
  "address": "0x1234567800000000000000000000000000000abc",
  "governorId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
  "hasVotes": true,
  "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

id

The default sorting method. It sorts by date.

votes

Sorts by voting power.

delegators

Sorts by total delegators.

prioritized

Sorts by DAO prioritization.
Example
"id"

DelegatesSortInput

Fields
Input Field Description
isDescending - Boolean!
sortBy - DelegatesSortBy!
Example
{"isDescending": false, "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

Fields
Input Field Description
address - Address!
governorId - AccountID
tokenId - AssetID
Example
{
  "address": "0x1234567800000000000000000000000000000abc",
  "governorId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
  "tokenId": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"
}

DelegationsFiltersInput

Fields
Input Field Description
address - Address!
governorId - AccountID
organizationId - IntID
Example
{
  "address": "0x1234567800000000000000000000000000000abc",
  "governorId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
  "organizationId": 2207450143689540900
}

DelegationsInput

Fields
Input Field Description
filters - DelegationsFiltersInput!
page - PageInput
sort - DelegationsSortInput
Example
{
  "filters": DelegationsFiltersInput,
  "page": PageInput,
  "sort": DelegationsSortInput
}

DelegationsSortBy

Values
Enum Value Description

id

The default sorting method. It sorts by date.

votes

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

NOTELIGIBLE

ELIGIBLE

CLAIMED

Example
"NOTELIGIBLE"

ExecutableCall

Fields
Field Name Description
calldata - Bytes!
chainId - ChainID!
index - Int!
offchaindata - ExecutableCallOffchainData
signature - String Target contract's function signature.
target - Address!
type - ExecutableCallType
value - Uint256!
Example
{
  "calldata": "0x4321abcd",
  "chainId": "eip155:1",
  "index": 123,
  "offchaindata": ExecutableCallSwap,
  "signature": "xyz789",
  "target": "0x1234567800000000000000000000000000000abc",
  "type": "custom",
  "value": 10987654321
}

ExecutableCallOffchainData

Example
ExecutableCallSwap

ExecutableCallRewards

Fields
Field Name Description
contributorFee - Int!
recipients - [String!]!
tallyFee - Int!
Example
{
  "contributorFee": 987,
  "recipients": ["abc123"],
  "tallyFee": 987
}

ExecutableCallSwap

Fields
Field Name Description
amountIn - Uint256! Sell amount for the swap.
buyToken - TokenData!
fee - Uint256 Tally fee
order - SwapOrder Order if the proposal is executed.
priceChecker - PriceChecker!
quote - SwapQuote Quote if no order exists yet.
sellToken - TokenData!
to - AccountID!
Example
{
  "amountIn": 10987654321,
  "buyToken": TokenData,
  "fee": 10987654321,
  "order": SwapOrder,
  "priceChecker": PriceChecker,
  "quote": SwapQuote,
  "sellToken": TokenData,
  "to": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"
}

ExecutableCallType

Values
Enum Value Description

custom

erc20transfer

erc20transferarbitrum

empty

nativetransfer

orcamanagepod

other

reward

swap

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": false,
  "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": 123,
  "metadata": GovernorMetadata
}

GovernorContract

Fields
Field Name Description
address - Address!
type - GovernorType!
lastBlock - Int!
Example
{
  "address": "0x1234567800000000000000000000000000000abc",
  "type": "governoralpha",
  "lastBlock": 123
}

GovernorInput

Fields
Input Field Description
id - AccountID
slug - String
Example
{
  "id": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
  "slug": "abc123"
}

GovernorKind

Values
Enum Value Description

single

multiprimary

multisecondary

multiother

hub

spoke

Example
"single"

GovernorMetadata

Fields
Field Name Description
description - String
Example
{"description": "xyz789"}

GovernorMetadataInput

Fields
Input Field Description
description - String
Example
{"description": "abc123"}

GovernorParameters

Fields
Field Name Description
quorumVotes - Uint256
proposalThreshold - Uint256
votingDelay - Uint256
votingPeriod - Uint256
gracePeriod - Uint256
quorumNumerator - Uint256
quorumDenominator - Uint256
clockMode - String
nomineeVettingDuration - Uint256
fullWeightDuration - Uint256
Example
{
  "quorumVotes": 10987654321,
  "proposalThreshold": 10987654321,
  "votingDelay": 10987654321,
  "votingPeriod": 10987654321,
  "gracePeriod": 10987654321,
  "quorumNumerator": 10987654321,
  "quorumDenominator": 10987654321,
  "clockMode": "xyz789",
  "nomineeVettingDuration": 10987654321,
  "fullWeightDuration": 10987654321
}

GovernorType

Values
Enum Value Description

governoralpha

governorbravo

openzeppelingovernor

aave

nounsfork

nomineeelection

memberelection

hub

spoke

Example
"governoralpha"

GovernorsFiltersInput

Fields
Input Field Description
organizationId - IntID!
includeInactive - Boolean
excludeSecondary - Boolean
Example
{
  "organizationId": 2207450143689540900,
  "includeInactive": false,
  "excludeSecondary": true
}

GovernorsInput

Fields
Input Field Description
filters - GovernorsFiltersInput!
page - PageInput
sort - GovernorsSortInput
Example
{
  "filters": GovernorsFiltersInput,
  "page": PageInput,
  "sort": GovernorsSortInput
}

GovernorsSortBy

Values
Enum Value Description

id

The default sorting method. It sorts by date.
Example
"id"

GovernorsSortInput

Fields
Input Field Description
isDescending - Boolean!
sortBy - GovernorsSortBy!
Example
{"isDescending": true, "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

Fields
Field Name Description
id - IntID!
organizationId - IntID
name - String
description - String
Example
{
  "id": 2207450143689540900,
  "organizationId": 2207450143689540900,
  "name": "xyz789",
  "description": "xyz789"
}

Member

Fields
Field Name Description
id - ID!
account - Account!
organization - Organization!
Example
{
  "id": "4",
  "account": Account,
  "organization": Organization
}

NativeCurrency

Fields
Field Name Description
name - String! Name of the Currency. e.g.: Ether
symbol - String! Symbol of the Currency. e.g.: ETH
decimals - Int! Decimals of the Currency. e.g.: 18
Example
{
  "name": "abc123",
  "symbol": "xyz789",
  "decimals": 987
}

Node

Description

Union of all node types that are paginated.

Example
Delegate

OrgUxVersion

Values
Enum Value Description

governor

tokenless

Example
"governor"

Organization

Fields
Field Name Description
id - IntID!
slug - String!
name - String!
chainIds - [ChainID!]!
governorIds - [AccountID!]!
tokenIds - [AssetID!]!
metadata - OrganizationMetadata
creator - Account
hasActiveProposals - Boolean!
proposalsCount - Int!
votersCount - Int! use delegatesCount instead
delegatesCount - Int!
delegatesVotesCount - Uint256!
tokenHoldersCount - Int! use tokenOwnersCount instead
tokenOwnersCount - Int!
Example
{
  "id": 2207450143689540900,
  "slug": "abc123",
  "name": "xyz789",
  "chainIds": ["eip155:1"],
  "governorIds": [
    "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc"
  ],
  "tokenIds": [
    "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"
  ],
  "metadata": OrganizationMetadata,
  "creator": Account,
  "hasActiveProposals": false,
  "proposalsCount": 123,
  "votersCount": 987,
  "delegatesCount": 987,
  "delegatesVotesCount": 10987654321,
  "tokenHoldersCount": 123,
  "tokenOwnersCount": 987
}

OrganizationInput

Fields
Input Field Description
id - IntID
slug - String
Example
{
  "id": 2207450143689540900,
  "slug": "abc123"
}

OrganizationMetadata

Fields
Field Name Description
color - String
contact - Contact
description - String
icon - String
socials - Socials
karmaName - String Name of this Organization in the Karma API, also if set, it signals to the FE to fetch data from karma
Example
{
  "color": "abc123",
  "contact": Contact,
  "description": "abc123",
  "icon": "abc123",
  "socials": Socials,
  "karmaName": "xyz789"
}

OrganizationMetadataInput

Fields
Input Field Description
color - String
contact - ContactInput
description - String
icon - String
socials - SocialsInput
Example
{
  "color": "abc123",
  "contact": ContactInput,
  "description": "xyz789",
  "icon": "abc123",
  "socials": SocialsInput
}

OrganizationsFiltersInput

Fields
Input Field Description
address - Address
chainId - ChainID
hasLogo - Boolean
isMember - Boolean Indicates whether the user holds any of the governance tokens associated with the organization.
Example
{
  "address": "0x1234567800000000000000000000000000000abc",
  "chainId": "eip155:1",
  "hasLogo": true,
  "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

id

The default sorting method. It sorts by date.

name

explore

Sorts by live proposals and voters as on the Tally explore page.
Example
"id"

OrganizationsSortInput

Fields
Input Field Description
isDescending - Boolean!
sortBy - OrganizationsSortBy!
Example
{"isDescending": true, "sortBy": "id"}

OtherLinkInput

Fields
Input Field Description
label - String!
value - String!
Example
{
  "label": "xyz789",
  "value": "abc123"
}

PageInfo

Description

Page metadata including pagination cursors and total count

Fields
Field Name Description
firstCursor - String Cursor of the first item in the page
lastCursor - String Cursor of the last item in the page
count - Int Total number of items across all pages. FYI, this is not yet implemented so the value will always be 0
Example
{
  "firstCursor": "abc123",
  "lastCursor": "abc123",
  "count": 123
}

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

Fields
Input Field Description
afterCursor - String Cursor to start pagination after to fetch the next page
beforeCursor - String Cursor to start pagination before to fetch the previous page
limit - Int Maximum number of items per page 20 is the hard limit set on the backend
Example
{
  "afterCursor": "xyz789",
  "beforeCursor": "xyz789",
  "limit": 987
}

PaginatedOutput

Description

Wraps a list of nodes and the pagination info

Fields
Field Name Description
nodes - [Node!]! List of nodes for the page
pageInfo - PageInfo! Pagination information
Example
{
  "nodes": [Delegate],
  "pageInfo": PageInfo
}

Parameter

Fields
Field Name Description
name - String!
type - String!
value - String!
valueDecoded - [ValueDecoded!]
Example
{
  "name": "xyz789",
  "type": "xyz789",
  "value": "xyz789",
  "valueDecoded": [ValueDecoded]
}

PriceChecker

Fields
Field Name Description
slippage - Uint256!
tokenPath - [String!]!
feePath - [Uint256!]!
uniPoolPath - [String!] List of Uniswap pool ids.
Example
{
  "slippage": 10987654321,
  "tokenPath": ["xyz789"],
  "feePath": [10987654321],
  "uniPoolPath": ["abc123"]
}

Proposal

Fields
Field Name Description
id - IntID!
onchainId - String
block - Block
chainId - ChainID!
creator - Account Account that submitted this proposal onchain
createdAt - Timestamp!
delegateVotesCount - Uint256! Delegated votes count of a given address on this proposal
Arguments
address - Address!
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!
l1ChainId - ChainID
metadata - ProposalMetadata!
originalId - IntID
organization - Organization!
participationType - ProposalParticipationType!
Arguments
address - Address!
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": "abc123",
  "block": Block,
  "chainId": "eip155:1",
  "creator": Account,
  "createdAt": 1663224162,
  "delegateVotesCount": 10987654321,
  "end": Block,
  "events": [ProposalEvent],
  "executableCalls": [ExecutableCall],
  "governor": Governor,
  "l1ChainId": "eip155:1",
  "metadata": ProposalMetadata,
  "originalId": 2207450143689540900,
  "organization": Organization,
  "participationType": "votedfor",
  "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

activated

canceled

created

defeated

drafted

executed

expired

extended

pendingexecution

queued

succeeded

callexecuted

Example
"activated"

ProposalInput

Fields
Input Field Description
id - IntID
onchainId - String this is not unique across governors; so must be used in combination with governorId
governorId - AccountID
includeArchived - Boolean
isLatest - Boolean
Example
{
  "id": 2207450143689540900,
  "onchainId": "xyz789",
  "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": "abc123",
  "previousEnd": 987,
  "timelockId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
  "txHash": "0xcd31cf5dbd3281442d80ceaa529eba678d55be86b7a342f5ed9cc8e49dadc855",
  "discourseURL": "abc123",
  "snapshotURL": "abc123"
}

ProposalParticipationType

Values
Enum Value Description

votedfor

votedagainst

votedabstain

notdelegate

notvoted

unknown

Example
"votedfor"

ProposalStats

Fields
Field Name Description
total - Int! Total count of proposals
active - Int! Total count of active proposals
failed - Int! Total count of failed proposals including quorum not reached
passed - Int! Total count of passed proposals
Example
{"total": 987, "active": 987, "failed": 123, "passed": 123}

ProposalStatus

Values
Enum Value Description

active

archived

canceled

callexecuted

defeated

draft

executed

expired

extended

pending

queued

pendingexecution

submitted

succeeded

Example
"active"

ProposalsCreatedCountInput

Fields
Input Field Description
governorId - AccountID
organizationId - IntID
Example
{
  "governorId": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
  "organizationId": 2207450143689540900
}

ProposalsFiltersInput

Fields
Input Field Description
governorId - AccountID
includeArchived - Boolean Only drafts can be archived; so, this works ONLY with isDraft: true
isDraft - Boolean
organizationId - IntID
proposer - Address Address that created the proposal offchain; in other words, created the draft
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

id

The default sorting method. It sorts by date.
Example
"id"

ProposalsSortInput

Fields
Input Field Description
isDescending - Boolean!
sortBy - ProposalsSortBy!
Example
{"isDescending": true, "sortBy": "id"}

Role

Values
Enum Value Description

ADMIN

USER

Example
"ADMIN"

Socials

Fields
Field Name Description
discord - String
telegram - String
twitter - String
website - String
discourse - String
others - [OtherLink]
Example
{
  "discord": "abc123",
  "telegram": "xyz789",
  "twitter": "abc123",
  "website": "xyz789",
  "discourse": "xyz789",
  "others": [OtherLink]
}

SocialsInput

Fields
Input Field Description
discord - String
telegram - String
twitter - String
website - String
discourse - String
others - [OtherLinkInput]
Example
{
  "discord": "abc123",
  "telegram": "xyz789",
  "twitter": "abc123",
  "website": "xyz789",
  "discourse": "xyz789",
  "others": [OtherLinkInput]
}

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
"abc123"

SwapOrder

Fields
Field Name Description
status - SwapOrderStatus! Status of the order.
address - String Address of the order smart contract.
id - String CoW order id if status is fulfilled.
buyAmount - Uint256 Buy amount if status is fulfilled.
Example
{
  "status": "PENDING_EXECUTION",
  "address": "xyz789",
  "id": "xyz789",
  "buyAmount": 10987654321
}

SwapOrderStatus

Values
Enum Value Description

PENDING_EXECUTION

PENDING

FULFILLED

FAILED

Example
"PENDING_EXECUTION"

SwapQuote

Fields
Field Name Description
buyAmount - Uint256!
buyTokenQuoteRate - Float
sellAmount - Uint256!
feeAmount - Uint256!
validTo - Timestamp!
Example
{
  "buyAmount": 10987654321,
  "buyTokenQuoteRate": 123.45,
  "sellAmount": 10987654321,
  "feeAmount": 10987654321,
  "validTo": 1663224162
}

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
id - AccountID!
isIndexing - Boolean!
isBehind - Boolean!
Example
{
  "id": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f",
  "type": "ERC20",
  "name": "abc123",
  "symbol": "abc123",
  "supply": 10987654321,
  "lastIndexedBlock": Block,
  "decimals": 987,
  "eligibility": Eligibility,
  "isIndexing": true,
  "isBehind": false
}

TokenBalance

Fields
Field Name Description
token - Token!
balance - Uint256!
Example
{"token": Token, "balance": 10987654321}

TokenBalancesInput

Fields
Input Field Description
address - Address!
governorID - AccountID
organizationID - IntID
tokenId - AssetID
Example
{
  "address": "0x1234567800000000000000000000000000000abc",
  "governorID": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
  "organizationID": 2207450143689540900,
  "tokenId": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"
}

TokenContract

Fields
Field Name Description
address - Address!
lastBlock - Int!
type - TokenType!
Example
{
  "address": "0x1234567800000000000000000000000000000abc",
  "lastBlock": 123,
  "type": "ERC20"
}

TokenData

Fields
Field Name Description
id - AccountID!
data - CovalentData!
Example
{
  "id": "eip155:1:0x7e90e03654732abedf89Faf87f05BcD03ACEeFdc",
  "data": CovalentData
}

TokenInput

Fields
Input Field Description
id - AssetID!
Example
{
  "id": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"
}

TokenType

Values
Enum Value Description

ERC20

ERC721

ERC20AAVE

Example
"ERC20"

Transaction

Fields
Field Name Description
id - HashID!
block - Block!
Example
{
  "id": "eip155:1:0xcd31cf5dbd3281442d80ceaa529eba678d55be86b7a342f5ed9cc8e49dadc855",
  "block": Block
}

Uint256

Description

Uint256 is a large unsigned integer represented as a string.

Example
10987654321

ValueDecoded

Fields
Field Name Description
operation - Int!
to - String!
value - String!
data - String!
dataDecoded - DataDecoded
Example
{
  "operation": 987,
  "to": "abc123",
  "value": "abc123",
  "data": "abc123",
  "dataDecoded": DataDecoded
}

Vote

Fields
Field Name Description
id - IntID!
amount - Uint256!
block - Block!
chainId - ChainID!
isBridged - Boolean
proposal - Proposal!
reason - String
type - VoteType!
txHash - Hash!
voter - Account!
Example
{
  "id": 2207450143689540900,
  "amount": 10987654321,
  "block": Block,
  "chainId": "eip155:1",
  "isBridged": true,
  "proposal": Proposal,
  "reason": "xyz789",
  "type": "abstain",
  "txHash": "0xcd31cf5dbd3281442d80ceaa529eba678d55be86b7a342f5ed9cc8e49dadc855",
  "voter": Account
}

VoteStats

Description

Voting Summary per Choice

Fields
Field Name Description
type - VoteType!
votesCount - Uint256! Total votes casted for this Choice/VoteType
votersCount - Int! Total number of distinct voters for this Choice/VoteType
percent - Float! Percent of votes casted for this Choice/`Votetype'
Example
{
  "type": "abstain",
  "votesCount": 10987654321,
  "votersCount": 123,
  "percent": 987.65
}

VoteType

Values
Enum Value Description

abstain

against

for

pendingabstain

pendingagainst

pendingfor

Example
"abstain"

VotesFiltersInput

Fields
Input Field Description
proposalId - IntID!
voter - Address
includePendingVotes - Boolean
Example
{
  "proposalId": 2207450143689540900,
  "voter": "0x1234567800000000000000000000000000000abc",
  "includePendingVotes": false
}

VotesInput

Fields
Input Field Description
filters - VotesFiltersInput!
page - PageInput
sort - VotesSortInput
Example
{
  "filters": VotesFiltersInput,
  "page": PageInput,
  "sort": VotesSortInput
}

VotesSortInput

Fields
Input Field Description
isDescending - Boolean!
sortBy - VotesSoryBy!
Example
{"isDescending": true, "sortBy": "id"}

VotesSoryBy

Values
Enum Value Description

id

The default sorting method. It sorts by date.

amount

Example
"id"

VotingPowerChange

Description

Represents a voting power change over an interval or triggered by an event.

Fields
Field Name Description
token - Token!
delegate - Account! The delegate address whose voting power is changing
prevBalance - Uint256! Voting power prior to this event or interval
newBalance - Uint256! Voting power after this event or interval
netChange - Uint256! Net change in voting power caused by this event
timestamp - Timestamp! Timestamp of event or beginging of the interval this voting power change represents
transaction - Transaction Transaction that triggered this voting change, unset if this is an interval
Example
{
  "token": Token,
  "delegate": Account,
  "prevBalance": 10987654321,
  "newBalance": 10987654321,
  "netChange": 10987654321,
  "timestamp": 1663224162,
  "transaction": Transaction
}