Voting System API (1.0.0)

Download OpenAPI specification:

Voting System Support: support@voting.system

Decentralized blockchain voting platform API.

Roles & access levels:

  • auditor: Full read-only access to all polls, votes, and cryptographic proofs
  • operator: Manage communities, polls, invitations
  • member: Vote, delegate, view results
  • journalist: Explorer access, public results only

All blockchain data is verifiable independently. Audit API provides cryptographic proofs.

audit

Auditor endpoints (full read-only access, cryptographic proofs)

Get all votes for a poll (raw data)

Full list of votes with cryptographic signatures. Auditor only.

Authorizations:
ApiKeyAuth
path Parameters
poll_id
required
string
query Parameters
limit
integer
Default: 100
offset
integer
Default: 0

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get Merkle proof for vote verification

Returns Merkle root and proof for a specific vote. Auditor only.

Authorizations:
ApiKeyAuth
path Parameters
poll_id
required
any
query Parameters
transaction_hash
required
string

Responses

Response samples

Content type
application/json
{
  • "poll_id": "string",
  • "merkle_root": "string",
  • "vote_hash": "string",
  • "proof": [
    ],
  • "verified": true
}

Full integrity report

Automatic verification of votes, delegations, quorum, and contract immutability.

Authorizations:
ApiKeyAuth
path Parameters
poll_id
required
any

Responses

Response samples

Content type
application/json
{
  • "poll_id": "string",
  • "checks": {
    },
  • "merkle_root_verified": true,
  • "signatures_verified": true,
  • "generated_at": "2019-08-24T14:15:22Z"
}

Get smart contract bytecode hash

Authorizations:
ApiKeyAuth
path Parameters
contract_address
required
any

Responses

Response samples

Content type
application/json
{
  • "contract_address": "string",
  • "bytecode_hash": "string",
  • "deployed_at_block": 0,
  • "matches_expected": true
}

Export votes as CSV

Authorizations:
ApiKeyAuth
path Parameters
poll_id
required
any

Responses

Export votes as JSON (machine-readable)

Authorizations:
ApiKeyAuth
path Parameters
poll_id
required
any

Responses

polls

Poll management and voting

List polls (filtered by role)

Authorizations:
ApiKeyAuth
query Parameters
community_id
string
status
string
Enum: "active" "closed" "draft"

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Create a new poll (operator only)

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
community_id
required
string
title
required
string
description
string
options
required
Array of strings
start_time
required
string <date-time>
end_time
required
string <date-time>
security_level
string
Enum: "low" "medium" "high"
vote_auth_mode
string
quorum_percent
integer
allow_delegation
boolean

Responses

Request samples

Content type
application/json
{
  • "community_id": "string",
  • "title": "string",
  • "description": "string",
  • "options": [
    ],
  • "start_time": "2019-08-24T14:15:22Z",
  • "end_time": "2019-08-24T14:15:22Z",
  • "security_level": "low",
  • "vote_auth_mode": "string",
  • "quorum_percent": 0,
  • "allow_delegation": true
}

Cast a vote (member only)

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
choice
required
string
wallet_password
string

Required if security level > low

Responses

Request samples

Content type
application/json
{
  • "choice": "string",
  • "wallet_password": "string"
}

Response samples

Content type
application/json
{
  • "transaction_hash": "string",
  • "block_height": 0
}

Get poll results (live or final)

Authorizations:
ApiKeyAuth
path Parameters
poll_id
required
any

Responses

Response samples

Content type
application/json
{
  • "poll_id": "string",
  • "total_votes": 0,
  • "turnout_percent": 0,
  • "quorum_reached": true,
  • "results": [
    ],
  • "winner": "string"
}

communities

Community management

List communities (accessible to member)

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Create a new community (operator only, requires wallet signature)

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
name
required
string
description
string
organization_id
required
string
deposit_amount
number
default_security_level
string
allow_delegation
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "organization_id": "string",
  • "deposit_amount": 0,
  • "default_security_level": "string",
  • "allow_delegation": true
}

Response samples

Content type
application/json
{
  • "community_id": "string",
  • "blockchain_contract_address": "string",
  • "transaction_hash": "string"
}

List community members (operator only)

Authorizations:
ApiKeyAuth
path Parameters
community_id
required
any

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

invitations

Member invitation system

Bulk import members from CSV (operator only)

Authorizations:
ApiKeyAuth
Request Body schema: multipart/form-data
required
file
string <binary>

CSV with columns phone,email,full_name,role

Responses

Response samples

Content type
application/json
{
  • "created": 0,
  • "failed": [
    ]
}

Validate invitation token (public)

Authorizations:
ApiKeyAuth
path Parameters
token
required
any

Responses

Response samples

Content type
application/json
{
  • "community_id": "string",
  • "community_name": "string",
  • "role": "string",
  • "expires_at": "string"
}

Activate account using invitation token

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
token
required
string
account_name
required
string
password
required
string
biometrics_enabled
boolean

Responses

Request samples

Content type
application/json
{
  • "token": "string",
  • "account_name": "string",
  • "password": "string",
  • "biometrics_enabled": true
}

delegations

Vote delegation management

Delegate vote to another member

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
to_wallet
required
string
poll_id
string

Required if scope = single_poll

scope
required
string
Enum: "single_poll" "all_polls"

Responses

Request samples

Content type
application/json
{
  • "to_wallet": "string",
  • "poll_id": "string",
  • "scope": "single_poll"
}

Get my delegations (as delegator)

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Revoke an active delegation

Authorizations:
ApiKeyAuth
path Parameters
delegation_id
required
any

Responses

verification

Cryptographic verification tools

Verify a specific vote (public, no auth required)

Authorizations:
ApiKeyAuth
query Parameters
transaction_hash
required
string

Responses

Response samples

Content type
application/json
{
  • "valid": true,
  • "poll_id": "string",
  • "timestamp": "string",
  • "choice": "string",
  • "voter_wallet": "string",
  • "signature_valid": true
}

Get Merkle root of a poll (public)

Authorizations:
ApiKeyAuth
path Parameters
poll_id
required
any

Responses

Response samples

Content type
application/json
{
  • "merkle_root": "string",
  • "total_votes": 0
}