Skip to main content
iPetition

API Reference

Programmatic access to iPetition petitions, signatures, and analytics.

Authentication

Bearer token via API key. Create keys in your dashboard.

Rate limits

60 requests/minute per key (default). Returns 429 with Retry-After header.

Base URL

https://xdvazlxpuculyktqdjjc.supabase.co/functions/v1/api-v1

Quick start

curl -H "Authorization: Bearer ipk_your_api_key" \
  "https://xdvazlxpuculyktqdjjc.supabase.co/functions/v1/api-v1/v1/petitions?status=active&per_page=5"

All responses follow a JSON:API-subset format with data and meta (total, page, perPage, hasMore).

Endpoints

GET/v1/petitionspetitions:read

List petitions with optional geo, category, and status filters. Returns paginated results.

Query parameters

geo_iduuidFilter by geographic area
include_childrenbooleanInclude child geo locations
category_iduuidFilter by category
statusstringactive, victory, or closed (default: active)
sortstringrecent, popular, or trending (default: recent)
pageintegerPage number (default: 1)
per_pageintegerItems per page, max 100 (default: 20)
GET/v1/petitions/:slugpetitions:read

Get a single petition by its URL slug. Returns full petition detail with geo and escalation data.

POST/v1/petitionspetitions:write

Create a new petition in draft status. Requires title (10-150 chars), description (50+ chars), categoryId, and geoId.

GET/v1/petitions/:id/signaturessignatures:read

List public signatures for a petition. Paginated, sorted by most recent.

Query parameters

pageintegerPage number (default: 1)
per_pageintegerItems per page, max 100 (default: 20)
GET/v1/petitions/:id/analyticsanalytics:read

Get analytics summary for a petition including views, shares, and signature growth.

Available scopes

petitions:readList and view petitions
petitions:writeCreate new petitions
signatures:readList public signatures
analytics:readAccess petition analytics

Error codes

401Invalid or missing API key
403Insufficient scope for this endpoint
404Resource not found
422Validation error (check request body)
429Rate limit exceeded (check Retry-After header)