Dashboard

Responses API

Retrieve and manage form, poll, and widget responses.

All response management endpoints require API key authentication and resource ownership.
GET/api/forms/:id/responses

List form responses

Returns paginated responses for a specific form. Requires API key.

Response

JSON
{
  "responses": [
    {
      "id": "resp_abc123",
      "form_id": "form_xyz789",
      "answers": {
        "q1": "John Doe",
        "q2": "john@example.com",
        "q3": "Hello, I have a question..."
      },
      "submitted_at": "2025-01-15T10:30:00Z",
      "metadata": {
        "browser": "Chrome",
        "browser_version": "120.0",
        "device": "Desktop",
        "os": "macOS",
        "country": "US",
        "ip_hash": "a1b2c3..."
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 1,
    "totalPages": 1
  }
}
GET/api/widgets/:id/responses

List widget responses

Returns paginated responses for a specific widget. Requires API key.

Response

JSON
{
  "responses": [
    {
      "id": "resp_def456",
      "widget_id": "widget_abc123",
      "answers": {
        "rating": 5,
        "comment": "Great experience!"
      },
      "submitted_at": "2025-01-15T10:30:00Z",
      "metadata": {
        "page_url": "https://example.com/pricing",
        "page_title": "Pricing - Example",
        "browser": "Safari",
        "device": "Mobile"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 1,
    "totalPages": 1
  }
}
DELETE/api/responses

Bulk delete responses

Delete multiple responses by ID. Requires ownership of the form, widget, or poll.

Request body

JSON
{
  "ids": ["resp_abc123", "resp_def456"],
  "formId": "form_xyz789"
}

Response

JSON
{
  "success": true,
  "deleted": 2
}

Response metadata

Every response includes comprehensive metadata captured at submission time. Available fields depend on your plan.

All plans

submitted_atISO 8601 timestamp
metadata.browserBrowser name (Chrome, Safari, Firefox...)
metadata.browser_versionBrowser version number
metadata.deviceDevice type (Desktop, Mobile, Tablet)
metadata.osOperating system (macOS, Windows, iOS...)
metadata.ip_hashSHA-256 hashed IP (privacy-safe)
metadata.languageBrowser language preference
metadata.completion_time_msTime to complete in milliseconds

Pro and Business

metadata.screen_widthScreen width in pixels
metadata.screen_heightScreen height in pixels
metadata.fingerprint_hashBrowser fingerprint hash
metadata.refererReferring page URL
metadata.referer_domainReferring domain

Business only

metadata.countryCountry code (US, GB, DE...)
metadata.regionState/region
metadata.cityCity name
metadata.timezoneTimezone identifier
metadata.utm_sourceUTM source parameter
metadata.utm_mediumUTM medium parameter
metadata.utm_campaignUTM campaign parameter
metadata.is_proxyWhether request came through proxy/VPN

Consent records

When a form includes a consent question, each response includes an immutable consent record:

consent_record.consent_givenWhether consent was given (boolean)
consent_record.timestampWhen consent was recorded
consent_record.ip_hashHashed IP at time of consent
consent_record.user_agentFull user agent string
consent_record.consent_textExact text user agreed to
consent_record.form_versionForm version at time of consent

Consent records are designed for GDPR compliance and cannot be modified after creation.

Poll votes

Poll votes are accessed through the results endpoint to protect voter anonymity:

Bash
GET /api/polls/:id/results

Individual vote records are not exposed via API. Use the dashboard to view vote metadata.

Exporting data

Pro and Business plans can export responses to CSV from the dashboard. For programmatic exports, paginate through the responses endpoint:

Bash
# Paginate through responses
GET /api/forms/:id/responses?page=1&limit=100
GET /api/forms/:id/responses?page=2&limit=100