A read-only REST API is available for integrating with external services. Access is allowed by passing an api_key parameter that is equal to the ADMIN_API_KEY
environment variable, or through flask user authentication. Results can be filtered by any field, using a flask-restless formatted parameter.
GET /api/calls
returns a paginated list of Call objects. Fields include:
- id
- timestamp (UTC)
- campaign_id
- target_id
- call_id (from Twilio, a 40 character string)
- status (from Twilio, one of [completed, no-answer, canceled, failed])
- duration (in seconds)
GET /api/campaign/ID
returns a read-only representation of a campaign object, including:
- id
- name
- campaign_country: a two-character ISO code of the country, used for political data lookups (optional, default US)
- campaign_state: a two-character postal abbreviation of the state (optional)
- campaign_type: one of [executive, congress, state, local, custom]
- campaign_subtype: depends on campaign_type, see
call_server/campaign/constants.py for valid choices
- audio_msgs
- phone_numbers: [formatted for Twilio]
- required_fields: a hash of field names and values required to place a call. May include
- userCountry: a two-character ISO code of the country (default US)
- userLocation: method to locate user, one of [postal, latlon]
- status: one of [archived, paused, live]
- target_ordering: one of [in-order, shuffle, upper-first, lower-first]
GET /api/audiorecording
returns a paginated list of AudioRecording objects. Fields include:
- id
- key:
- version: an incrementing version counter
- description: a textual description of the recording, provided by the user
- file_url: an external url to the recorded file (optional)
- text_to_speech: text to be read by the Twilio verb (optional)
- selected_campaigns: list of campaign names that have selected this recording
- selected_campaign_ids: list of campaign ids that have selected this recording
GET /api/campaign/ID/stats.json
returns aggregate statistics for a campaign, including:
- name
- completed
- total_counts
GET /api/campaign/ID/date_calls.json
returns a list of campaign calls by date and status. Results can be further limited by passing start or end parameters in ISO format, and a timespan as one of (minute, hour, day, month, year).
GET /api/campaign/ID/target_calls.json
returns a list of campaign calls by target and status. Results can be further limited by passing start or end parameters in ISO format.
For display on external sites, these routes do not require authentication. Results are cached for 10 minutes.
GET /api/campaign/ID/count.json
returns calls aggregate statistics for a campaign
- completed: total calls completed
- last_24h: calls completed in last 24 hours
- last_week: calls completed in the last 7 days
- referral_codes: a hash of referral codes which have generated at least two completed calls