Strive Messaging API

Download OpenAPI specification:Download

Auth

First, you’ll need to generate a key via the API Keys page in your account.

Once you have a key, send it in the Authorization header.

Authorization: Bearer <your key>

You can test that your key is properly configured by sending a GET or POST request to /rpc/ping

Filtering (Rows)

You can filter result rows by adding conditions on columns that you see in the ‘query’ section of the API documentation. For instance, to return members with the state of Georgia

HTTP

GET **/members?state=eq.GA** **HTTP**/1.1

You can evaluate multiple conditions on columns by adding more query string parameters.

HTTP

GET **/members?state=eq.IL&phone_number=like*312*** **HTTP**/1.1

Operators

These operators are available:

Abbreviation In PostgreSQL Meaning
eq = equals
gt > greater than
gte >= greater than or equal
lt < less than
lte <= less than or equal
neq <> or != not equal
like LIKE LIKE operator (to avoid URL encoding you can use * as an alias of the percent sign % for the pattern)
ilike ILIKE ILIKE operator (to avoid URL encoding you can use * as an alias of the percent sign % for the pattern)
in IN one of a list of values, e.g. ?a=in.(1,2,3) – also supports commas in quoted strings like ?a=in.("hi,there","yes,you")
is IS checking for exact equality (null,true,false,unknown)
isdistinct IS DISTINCTFROM not equal, treating NULL as a comparable value

Flow Webhooks Guide

When would I use the webhook step in a flow?

In cases where a Simple Message, Collect Info, or Ask a Question action type(s) cannot be used to accomplish your messaging use case, you'll want to use a webhook. A Strive webhook will interact with an API that you define, allowing you to use code to:

  • Build custom responses to messages from members via your own backend.
  • Process messages or extracted values to save member information in a third-party system.
  • Update member information in Strive based on message results.

Use case example:

An organization wants to create a flow to tell members where their nearest chapter is. They set up a webhook to sync Strive with an existing app. A member replies with their zip code “43004”. The Strive webhook sends the member's info and message to the organization’s app.

Their app has built a custom response: "Your nearest chapter is in Columbus, OH". Strive sends the custom response to the member. The organization saves the information on the member in Strive as a custom field, "Nearest Chapter."

How to set up a webhook step:

To set up a flow webhook step:

  1. In the flow builder, click Add Bot Action.

    Screen snippet showing the "Add Bot Action" button.

  2. Select the Webhook bot action type.

    Screen snippet showing the "Webhook" bot action type button.

  3. Add a Webhook URL. Example: https://api.orgname.org/mywebhookurl

    Screen snippet showing the "Webhook Url" input field.

  4. If you do not select the Continuous checkbox, the flow will move on to the next flow step after your webhook is called once. If you do select the Continuous checkbox, the flow will not move on to the next step until you respond with { ..., complete:true }.

  5. Click Save on the bottom of your bot action.

Documentation on how to create or edit a flow can be found in our Resources library.

What happens when a member interacts with the webhook step?

The payload you'll receive will contain data for the member who interacted with the flow. Check out the members section of the Strive API docs for more information on the fields that will be sent. Your payload will receive the message that triggered the webhook step in Strive.

{
  "member": {
    "phoneNumber",
    ...other fields we know
  },
  "message": "What the member said"
}

How can I update member information in Strive and/or respond with a message?

To update member info in Strive so a member can move to the next flow step:

{
  "member": {
    ...any field you want to update
    "custom": {
      "any field you want to see in the Strive app"
    }
  },
  "message": "Response to the member",
  "complete": true
}

To update member info in Strive and keep member on the same flow step:

{
  "member": {
    ...any field you want to update
    "custom": {
      "any field you want to see in the Strive app"
    }
  },
  "message": "Response to the member",
  "complete": false
}

What if the member replies with something unexpected?

If a member is messaging you something unexpected or invalid, you can move the member to the inbox, where an organizer or volunteer from your team can respond. To stop the flow, unarchive the member in the inbox, and begin a one-on-one conversation, reply with:

{ "assist": true }

Frequently Asked Questions

How can I test my webhook?

There are two ways to test your webhook:

  1. Use the simulator on the flows page to test your flow.
  2. Send a test broadcast to yourself or your team.

Do I need an API key to set up a webhook?

No, an API key is not needed for webhooks. Simply enter a URL into the flow step.

What happens if a member responds with a compliance keyword?

Messages containing compliance keywords such as “STOP” or “HELP” will not be sent to the webhook, as these keywords return auto-replies sent by Strive.

How often will the webhook be called?

The maximum rate at which the webhook will be called is determined by your shortcode or 10DLC’s MPS rate.

What happens if my webhook fails?

If your webhook fails to respond within 15 seconds or responds with a non-200 HTTP status code, we will retry sending the webhook after 10 seconds.

Is there a way to see my failed webhooks?

Currently, we do not return information on failed webhooks. If you observe a webhook failure, please reach out to help@strivemessaging.org.

Data Dictionary

call_logs

last_event

Message Description
Member call failed The member call failed due to a connection or call handling issue by the network provider
Failed to connect to target A carrier routing error was detected while routing the caller to the target.
Could not answer An error was detected on the member’s incoming call to your call number.
The call was cancelled by the member A caller requested to be called by your call number but cancelled the call before the call to the target number was successful.
Starting greeting audio Caller reached your audio message and hung up before the audio message was complete.
Call ended before transfer Caller hung up after the audio greeting but before their call could be routed to the target line.
Call succeeded A call is considered successfully routed when the caller reaches the target or target voicemail. Additionally, calls are marked as successful if the the target refuses the call, the line is busy, or the call is successfully routed but the target does not pick up, as with each of these scenarios no network or transfer error occurred.
Connected Deprecated status.
ERROR: Cannot read property 'detectAnsweringMachineAsync' of undefined [Displayed as: ‘Strive Application Error’] An unexpected error occurred. Please reach out to help@strivemessaging.org for assistance.
Member answering machine detected Caller requested to be called by your call number but did not pick up and did not have a voicemail bot set up yet.
Ended Deprecated status
Failed An aggregator error resulted in a failed call to the member. No additional information is available.
Connected to target This will include all calls where the member was connected to the target and the target picks up.
No unstarted found Incoming call to the call number was received and ended before any other events occurred.
ERROR: Cannot read property 'on' of undefined [Displayed as: ‘Strive Application Error’] An unexpected error occurred. Please reach out to help@strivemessaging.org for assistance.
Call queue event log creation Member received a patch a call bot action but the call was never initiated. This event is not an error, it logs that the member reached the bot action.
There was no answer at the number you were calling A caller requested to be called by your call number but did not pick up and did not have a voicemail bot set up yet.
No call target available Caller’s district has a vacant seat and their target match does not have a line to contact.
“Empty string” This is due to an unexpected set of events that occurred and was not captured correctly by Strive during the call.
Call ended before connection made The call was ended by the caller before we could detect a connection with the target line.
Finished greeting audio Caller reached your audio message and hung up after the audio message was complete.

member_change_log

change_type

Type Source of Change
actionKit From an ActionKit integration.
actionNetwork From an ActionNetwork integration.
api From the API.
autoInitial From a member texting in when they were not previously members of a campaign.
automation From an automation.
broadcast From an outgoing message.
bulk From the bulk action in the Inbox.
csv From a CSV Import
deac From a carrier telling Strive that this is no longer a valid number. Carriers periodically send Strive deactivation lists of known disabled phone numbers, and Strive uses that list as a compliance measure to unsubscribe the Member with this type.
everyAction From an EveryAction integration.
fbLeadAd From a Facebook lead ad.
flow From a flow interaction.
incoming From an action triggered by an incoming message that was not an exact match for a phrase or a keyword match.
keyword From an incoming message received that matched a keyword.
manual From an update by a user in the platform user-interface, either from the Inbox or the Members List.
salesforce From a Salesforce integration.
status From a carrier status code received when trying to send them a message.
phrase From an incoming message received with the specific phrase "HELP," "STOP," or "JOIN”.
tech From the Strive Product team doing an operation programmatically at the request of the Partner. These are one-offs from a task our engineers performed manually.
unknown From an unknown source. Most likely this is legacy data before we tracked an event.
webhook From a received webhook.

SQL Mirror

broadcasts

Broadcasts are messages or flows sent out to multiple members from the Broadcast page.

Column Type Description
id integer The ID of the Broadcast
user_id integer The Strive user who sent the broadcast
campaign_id integer The campaign that the broadcast belongs to
flow_id integer The flow that was broadcasted
name text The name of the Broadcast
message text The content of the first message sent in the broadcast
attachment text The attachment or MMS included in the broadcast
force_mms boolean
recipient_count integer How many members were targeted for the broadcast
scheduled_at timestamp with time zone When the broadcast is scheduled to send
cancelled_at timestamp with time zone When the broadcast was cancelled
sent_at timestamp with time zone When the broadcast began to deliver
created_at timestamp with time zone When the broadcast was first created
updated_at timestamp with time zone When the broadcast was last updated

broadcasts_groups

The groups targeted by a broadcast

Column Type Description
broadcast_id integer The ID of the broadcast
group_id integer The ID of the group of members targeted by the broadcast
updated_at timestamp with time zone
campaign_id integer

call_logs

Each call queued or connected through the campaign

Column Type Description
id integer The ID of the call log
campaign_id integer The ID of the campaign for which the call was connected
member_id integer The ID of the member for whom the call was connected
call_target_id integer The ID of the call target
bot_conversation_id integer The ID of the bot conversation from which the call, or call invitation, was dispatched
call_number_id integer The ID of the call number
from_number text The number of the member for whom the call was connected
to_number text The number to which the call was connected
machine_detected boolean Whether an answering machine was detected after connecting to the target
successful_connection boolean Whether a successful connection was made to the member
created_at timestamp with time zone When the target was first looked up and the call queued
connected_at timestamp with time zone When the call connected to the member
redirected_at timestamp with time zone When the call redirected to the target
ended_at timestamp with time zone When the call ended
updated_at timestamp with time zone
flow_id integer The flow of which this call was a part
step_idx integer The step of the flow in which this call took place
office character varying(255) The office of the target contacted
state character varying(255) The state in which the target exists
party character varying(255) The party of the target
name character varying(255) The name of the target
member_voicemail_answered_at timestamp with time zone The time at which the voicemail of the member picked up
member_call_failed_at timestamp with time zone The time at which the call to the member failed
target_call_failed_at timestamp with time zone The time at which the call to the target failed
last_event character varying(1024) The status of the call based on last event recorded
call_number_name character varying(255)
broadcast_id integer The broadcast in which the call was made
call_number character varying(255)

campaigns

Camapigns are instances of Strive. Organizations may choose to create multiple campaigns for different chapters of their organization.

Column Type Description
id integer The ID of the campaign
primary_text_in_number character varying(255) The phone number new supporters can text to become a member
is_active boolean The status of the campaign's subscription
custom_fields json Custom fields added or active to the campaign
organization_id integer The ID of the parent account, which the campaign is part of
name character varying(255) The name of the campaign
updated_at timestamp with time zone When the campaign was last updated

custom_fields

Custom fields are fields created by users in the members list that can be used as dynamic fields in messages or filtering criteria in the members list.

Column Type Description
campaign_id integer The ID of the campaign that the custom field is associated with
field text The name of the field within the API
label text The name of the field within the product
type text The type of field the custom field is
updated_at timestamp with time zone When the custom field was last updated

enhanced_member_data

Organization's member data populated through Strive automations

Column Type Description
id integer
member_id integer The ID of the member
campaign_id integer The campaign associated with the member
federal_house_district character varying The federal district for the member
state_upper_chamber_district character varying(155) The district of the upper state chamber
state_lower_chamber_district character varying(155) The district of the lower state chamber
created_at timestamp with time zone When this member's Strive data was first populated
updated_at timestamp with time zone The last time we updated a member's automated data
federal_representative text The member's federal representative
federal_senator_one text One member's federal senator
federal_senator_two text The other federal senator for the member

flow_actions

Actions taken by members when interacting with flows

Column Type Description
id integer
flow_id integer The flow associated with the action
member_id integer The member who took the action
incoming_message_id integer The message the member responded wtih
step_number integer The position of the message within the flow sequence
is_response_valid boolean Whether or not the member's response was successfully qualified
collected_value text The data successfully parsed and mapped by the flow's "Collect"
is_additional_response boolean The flow action was an unexpected additional response
created_at timestamp with time zone When the flow action occurred
updated_at timestamp with time zone When the flow action was updated, usually the same as created
campaign_id integer The campaign the flow action belongs to

flow_steps

The steps within a flow sequence

Column Type Description
flow_id integer The flow associated with the flow step
step_number bigint The position of the flow step within the larger flow sequence
type text The type of the step, typically one of these three types: Simple, Collect Info, or Ask A Question type
message text The content of the message inlcuded in the flow step
child_flows integer[] The flows that are spawned from an A/B broadcast parent flow when present. Will only be populated on flows of type route.
updated_at timestamp with time zone When this flow was last updated
campaign_id integer The campaign the flow step belongs to

flows

Automated sequences of messages

Column Type Description
id integer The ID of the flow
campaign_id integer The campaign associated with the flow
name character varying(255) The name of the flow
created_at timestamp with time zone When the flow was first created
updated_at timestamp with time zone When the flow was last updated with a change

groups

Tags for cohorts of members

Column Type Description
id integer The ID of the group
name character varying(255) The name of the group
campaign_id integer The campaign associated with the group
created_at timestamp with time zone When the group was first created
updated_at timestamp with time zone When the group was last updated with a change
keyword character varying(255) DEPRECATED. This column is not used and may be removed in the future.
synonyms character varying(255)[] DEPRECATED. The synonyms of the keyword that, when used by members, adds members to the group
flow_id integer DEPRECATED. The flow that is sent to members when they join the group
groupable_type groupable The type of attribute or relationship on which members are added to the group
groupable_id integer The identifier of the attribute or relationship on which members are added to the group

groups_members

Members of a group

Column Type Description
member_id integer The ID of the member
group_id integer The ID of the group
created_at timestamp with time zone When the group membership was created
updated_at timestamp with time zone When the group membership was updated
organizer_ids integer[]
campaign_id integer The campaign that the group and member belong to
user_id integer The ID of the user that added the member to the group

incoming_messages

Messages sent by members to the campaign

Column Type Description
id integer The ID of the incoming message
campaign_id integer The campaign the incoming message was sent to
member_id integer The member who sent the message
from_number character varying(255) The member's phone number
to_number character varying(255) The phone number the member targeted
message text The contents of the incoming message
attachments json The attachement, or MMS included in the incoming message
sent_at timestamp with time zone When the message was sent
is_opt_out boolean Whether or not the message was registered as a request to unsubscribe from further messages
updated_at timestamp with time zone When the message was updated
conversation_id integer The id of the conversation that this message belongs to
flow_id integer The flow that the message belongs to
step_idx integer The step in the flow this message corresponds to
response_to_id integer The id of the broadcast the incoming message was a response to
keyword character varying(255) The matched keyword for the incoming message
automation character varying(255) The automation triggered by the incoming message

member_change_log

Organization's change data as it relates to member fields

Column Type Description
member_id integer The ID of the member
campaign_id integer The campaign associated with the member
change_action character varying(65) The action that changed the previous value to the new value
previous_value jsonb The previous value for the field(s) denoted in the object
new_value jsonb The new value for the field(s) denoted in the object
change_type text The source of the member change
change_value text The value of the source of the member change
updated_at timestamp with time zone The date and time at which this member value was created
id integer

member_change_log_flat

Organization's change data as it relates to member fields

Column Type Description
key text The name of the field affected by a change
prior_value text The prior value of the field
updated_value text The new value of the field
member_id integer The ID of the member
campaign_id integer The campaign associated with the member
change_action character varying(65) The action that changed the previous value to the new value
previous_value jsonb The previous value for the field(s) denoted in the object
new_value jsonb The new value for the field(s) denoted in the object
change_type text The source of the member change
change_value text The value of the source of the member change
updated_at timestamp with time zone The date and time at which this member value was created
id integer

member_group_delete_log

Organization's records on when members are removed from groups

Column Type Description
group_id integer The ID of the group
campaign_id integer The campaign associated with the group and member
member_id integer The member that has been removed
member_added_on timestamp with time zone Date that the member was added to the group
delete_source character varying(55) The general source of the member being removed from the group
delete_source_id integer The id of the source of the member group removal if there is one
removed_by integer The admin/orgainzer that removed the member of the group if there was one
member_removed_on timestamp with time zone Date that the member was removed from the group
id integer

members

Organization's supporters and people

Column Type Description
id integer The ID of the member
campaign_id integer The campaign associated with the member
phone_number character varying(255) The member's phone number
first_name character varying(255) The member's first name
last_name character varying(255) The member's last name
city character varying(255) The City associated with the member
state character varying(255) The State associated with the member
postal_code character varying(255) The zip or postal code associated with the member
email character varying(255) The member'r email address
notes text The content of notes associated with the member
additional_notes text The content of additional notes field associated with the member
opt_in boolean Whether or not the member is subscribed to recieve further messages
custom jsonb The custom fields associated with the member
created_at timestamp with time zone When the member was either first imported or opted-in to recieve messages
updated_at timestamp with time zone When the member was last updated with a change
groups json Groups this member belongs to (json)
carrier text The mobile carrier this member uses
first_sub_id integer The ID of the first subscription event retained for the member
street_address character varying(1250) The street address of the member
van_id integer The Every Action ID of the member
ak_id integer The Action Kit ID of the member

members_custom_fields

The custom fields associated with specific members

Column Type Description
id integer The ID of the custom field associated with a member
field text The name of the field in the API
value jsonb The value of the field
updated_at timestamp with time zone When this custom value was updated
campaign_id integer The campaign the value belongs to

organizations

Organizations are groups of campaigns

Column Type Description
id integer Identifier for the organization
name character varying(255) The name of the organization

outgoing_messages

All messages sent by the organization or campaign

Column Type Description
id integer The ID of the outgoing message
campaign_id integer The campaign associated with the outgoing message
member_id integer The member targeted by the outgoing message
message character varying The contents of the outgoing message
broadcast_id integer The parent broadcast that the outgoing message was part of
p2p_id integer The ID of the inbox message the outgoing message was part of
flow_action_id text The flow action that happened in response to the outgoing message
status character varying(255) That status of the outgoing message's delivery
error_code integer The error code returned by carriers in repsonse to the outgoing message
sent_at timestamp with time zone When the outgoing message was sent
attachment text
force_mms boolean
error_type text
queued_at text When the outgoing message was added to our aggregators queue
delivered_at timestamp with time zone When the outgoing message was delivered
updated_at timestamp with time zone
broadcast_flow_id integer The ID of the flow initially sent at the beginning of the conversation
conversation_id integer The ID of the conversation in which the message was sent
flow_id integer The ID of the flow currently in interaction with the member
step_idx integer

p2ps

Messages sent and action taken from the Inbox feature

Column Type Description
id integer The ID of the message sent from the inbox
user_id integer The user who sent the message
campaign_id integer The campaign associated with the message
message text The contents of the message sent from the inbox
attachment text The attachement or MMS sent from the inbox
scheduled_at timestamp with time zone When the message was scheduled to send
cancelled_at timestamp with time zone Whent he message was cancelled from sending
sent_at timestamp with time zone When the message was sent from the inbox
created_at timestamp with time zone When the message was first created and composed in the inbox
updated_at timestamp with time zone

subscription_events

Collection of events by which individual members become subscribed to or unsubscribed from campaigns

Column Type Description
id integer
member_id integer The ID of the member in question
type text The type of event which lead to the subscription or unsubscription
created_at timestamp with time zone When the event occurred
ref_id integer ID of upload, status code, incoming message, or other relevant artifact of subscription event
supplemental text Supplemental information about the event
unsubscribe boolean Whether the member has been unsubscribed
campaign_id integer The ID of the campaign associated with this event

API Endpoints

broadcasts

Broadcasts are messages or flows sent out to multiple members from the Broadcast page.

query Parameters
id
string <integer>

The ID of the Broadcast

user_id
string <integer>

The Strive user who sent the broadcast

campaign_id
string <integer>

The campaign that the broadcast belongs to

flow_id
string <integer>

The flow that was broadcasted

name
string <text>

The name of the Broadcast

message
string <text>

The content of the first message sent in the broadcast

attachment
string <text>

The attachment or MMS included in the broadcast

force_mms
string <boolean>
recipient_count
string <integer>

How many members were targeted for the broadcast

scheduled_at
string <timestamp with time zone>

When the broadcast is scheduled to send

cancelled_at
string <timestamp with time zone>

When the broadcast was cancelled

sent_at
string <timestamp with time zone>

When the broadcast began to deliver

created_at
string <timestamp with time zone>

When the broadcast was first created

updated_at
string <timestamp with time zone>

When the broadcast was last updated

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

broadcasts_groups

The groups targeted by a broadcast

query Parameters
broadcast_id
string <integer>

The ID of the broadcast

group_id
string <integer>

The ID of the group of members targeted by the broadcast

updated_at
string <timestamp with time zone>
campaign_id
string <integer>
select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

call_logs

Each call queued or connected through the campaign

See Data Dictionary for a description of last_event values.

query Parameters
id
string <integer>

The ID of the call log

campaign_id
string <integer>

The ID of the campaign for which the call was connected

member_id
string <integer>

The ID of the member for whom the call was connected

call_target_id
string <integer>

The ID of the call target

bot_conversation_id
string <integer>

The ID of the bot conversation from which the call, or call invitation, was dispatched

call_number_id
string <integer>

The ID of the call number

from_number
string <text>

The number of the member for whom the call was connected

to_number
string <text>

The number to which the call was connected

machine_detected
string <boolean>

Whether an answering machine was detected after connecting to the target

successful_connection
string <boolean>

Whether a successful connection was made to the member

created_at
string <timestamp with time zone>

When the target was first looked up and the call queued

connected_at
string <timestamp with time zone>

When the call connected to the member

redirected_at
string <timestamp with time zone>

When the call redirected to the target

ended_at
string <timestamp with time zone>

When the call ended

updated_at
string <timestamp with time zone>
flow_id
string <integer>

The flow of which this call was a part

step_idx
string <integer>

The step of the flow in which this call took place

office
string <character varying>

The office of the target contacted

state
string <character varying>

The state in which the target exists

party
string <character varying>

The party of the target

name
string <character varying>

The name of the target

member_voicemail_answered_at
string <timestamp with time zone>

The time at which the voicemail of the member picked up

member_call_failed_at
string <timestamp with time zone>

The time at which the call to the member failed

target_call_failed_at
string <timestamp with time zone>

The time at which the call to the target failed

last_event
string <character varying>

The status of the call based on last event recorded

call_number_name
string <character varying>
broadcast_id
string <integer>

The broadcast in which the call was made

call_number
string <character varying>
select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

campaigns

Camapigns are instances of Strive. Organizations may choose to create multiple campaigns for different chapters of their organization.

query Parameters
id
string <integer>

The ID of the campaign

primary_text_in_number
string <character varying>

The phone number new supporters can text to become a member

is_active
string <boolean>

The status of the campaign's subscription

custom_fields
string <json>

Custom fields added or active to the campaign

organization_id
string <integer>

The ID of the parent account, which the campaign is part of

name
string <character varying>

The name of the campaign

updated_at
string <timestamp with time zone>

When the campaign was last updated

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

custom_fields

Custom fields are fields created by users in the members list that can be used as dynamic fields in messages or filtering criteria in the members list.

query Parameters
campaign_id
string <integer>

The ID of the campaign that the custom field is associated with

field
string <text>

The name of the field within the API

label
string <text>

The name of the field within the product

type
string <text>

The type of field the custom field is

updated_at
string <timestamp with time zone>

When the custom field was last updated

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

enhanced_member_data

Organization's member data populated through Strive automations

query Parameters
id
string <integer>
member_id
string <integer>

The ID of the member

campaign_id
string <integer>

The campaign associated with the member

federal_house_district
string <character varying>

The federal district for the member

state_upper_chamber_district
string <character varying>

The district of the upper state chamber

state_lower_chamber_district
string <character varying>

The district of the lower state chamber

created_at
string <timestamp with time zone>

When this member's Strive data was first populated

updated_at
string <timestamp with time zone>

The last time we updated a member's automated data

federal_representative
string <text>

The member's federal representative

federal_senator_one
string <text>

One member's federal senator

federal_senator_two
string <text>

The other federal senator for the member

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

flow_actions

Actions taken by members when interacting with flows

query Parameters
id
string <integer>
flow_id
string <integer>

The flow associated with the action

member_id
string <integer>

The member who took the action

incoming_message_id
string <integer>

The message the member responded wtih

step_number
string <integer>

The position of the message within the flow sequence

is_response_valid
string <boolean>

Whether or not the member's response was successfully qualified

collected_value
string <text>

The data successfully parsed and mapped by the flow's "Collect"

is_additional_response
string <boolean>

The flow action was an unexpected additional response

created_at
string <timestamp with time zone>

When the flow action occurred

updated_at
string <timestamp with time zone>

When the flow action was updated, usually the same as created

campaign_id
string <integer>

The campaign the flow action belongs to

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

flow_steps

The steps within a flow sequence

query Parameters
flow_id
string <integer>

The flow associated with the flow step

step_number
string <bigint>

The position of the flow step within the larger flow sequence

type
string <text>

The type of the step, typically one of these three types: Simple, Collect Info, or Ask A Question type

message
string <text>

The content of the message inlcuded in the flow step

child_flows
string <integer[]>

The flows that are spawned from an A/B broadcast parent flow when present. Will only be populated on flows of type route.

updated_at
string <timestamp with time zone>

When this flow was last updated

campaign_id
string <integer>

The campaign the flow step belongs to

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

flows

Automated sequences of messages

query Parameters
id
string <integer>

The ID of the flow

campaign_id
string <integer>

The campaign associated with the flow

name
string <character varying>

The name of the flow

created_at
string <timestamp with time zone>

When the flow was first created

updated_at
string <timestamp with time zone>

When the flow was last updated with a change

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

groups

Tags for cohorts of members

query Parameters
id
string <integer>

The ID of the group

name
string <character varying>

The name of the group

campaign_id
string <integer>

The campaign associated with the group

created_at
string <timestamp with time zone>

When the group was first created

updated_at
string <timestamp with time zone>

When the group was last updated with a change

keyword
string <character varying>

DEPRECATED. This column is not used and may be removed in the future.

synonyms
string <character varying[]>

DEPRECATED. The synonyms of the keyword that, when used by members, adds members to the group

flow_id
string <integer>

DEPRECATED. The flow that is sent to members when they join the group

groupable_type
string <app_public.groupable>

The type of attribute or relationship on which members are added to the group

groupable_id
string <integer>

The identifier of the attribute or relationship on which members are added to the group

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

/groups POST

POST

Post is used to create a group record.

The request body must include campaign_id and name to succeed.

query Parameters
select
string

Filtering Columns

header Parameters
Prefer
string
Enum: "return=representation" "return=minimal" "return=none" "resolution=ignore-duplicates" "resolution=merge-duplicates"

Preference

Request Body schema:

groups

campaign_id
integer <integer>

The campaign associated with the group

Note: This is a Foreign Key to campaigns.id.

name
string <character varying> <= 255 characters

The name of the group

Responses

Request samples

Content type
{
  • "campaign_id": 0,
  • "name": "string"
}

groups_members

Members of a group

query Parameters
member_id
string <integer>

The ID of the member

group_id
string <integer>

The ID of the group

created_at
string <timestamp with time zone>

When the group membership was created

updated_at
string <timestamp with time zone>

When the group membership was updated

organizer_ids
string <integer[]>
campaign_id
string <integer>

The campaign that the group and member belong to

user_id
string <integer>

The ID of the user that added the member to the group

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

incoming_messages

Messages sent by members to the campaign

query Parameters
id
string <integer>

The ID of the incoming message

campaign_id
string <integer>

The campaign the incoming message was sent to

member_id
string <integer>

The member who sent the message

from_number
string <character varying>

The member's phone number

to_number
string <character varying>

The phone number the member targeted

message
string <text>

The contents of the incoming message

attachments
string <json>

The attachement, or MMS included in the incoming message

sent_at
string <timestamp with time zone>

When the message was sent

is_opt_out
string <boolean>

Whether or not the message was registered as a request to unsubscribe from further messages

updated_at
string <timestamp with time zone>

When the message was updated

conversation_id
string <integer>

The id of the conversation that this message belongs to

flow_id
string <integer>

The flow that the message belongs to

step_idx
string <integer>

The step in the flow this message corresponds to

response_to_id
string <integer>

The id of the broadcast the incoming message was a response to

keyword
string <character varying>

The matched keyword for the incoming message

automation
string <character varying>

The automation triggered by the incoming message

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

member_change_log

Organization's change data as it relates to member fields

See Data Dictionary for a description of change_type values.

query Parameters
member_id
string <integer>

The ID of the member

campaign_id
string <integer>

The campaign associated with the member

change_action
string <character varying>

The action that changed the previous value to the new value

previous_value
string <jsonb>

The previous value for the field(s) denoted in the object

new_value
string <jsonb>

The new value for the field(s) denoted in the object

change_type
string <text>

The source of the member change

change_value
string <text>

The value of the source of the member change

updated_at
string <timestamp with time zone>

The date and time at which this member value was created

id
string <integer>
select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

member_change_log_flat

Organization's change data as it relates to member fields

query Parameters
key
string <text>

The name of the field affected by a change

prior_value
string <text>

The prior value of the field

updated_value
string <text>

The new value of the field

member_id
string <integer>

The ID of the member

campaign_id
string <integer>

The campaign associated with the member

change_action
string <character varying>

The action that changed the previous value to the new value

previous_value
string <jsonb>

The previous value for the field(s) denoted in the object

new_value
string <jsonb>

The new value for the field(s) denoted in the object

change_type
string <text>

The source of the member change

change_value
string <text>

The value of the source of the member change

updated_at
string <timestamp with time zone>

The date and time at which this member value was created

id
string <integer>
select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

member_group_delete_log

Organization's records on when members are removed from groups

query Parameters
group_id
string <integer>

The ID of the group

campaign_id
string <integer>

The campaign associated with the group and member

member_id
string <integer>

The member that has been removed

member_added_on
string <timestamp with time zone>

Date that the member was added to the group

delete_source
string <character varying>

The general source of the member being removed from the group

delete_source_id
string <integer>

The id of the source of the member group removal if there is one

removed_by
string <integer>

The admin/orgainzer that removed the member of the group if there was one

member_removed_on
string <timestamp with time zone>

Date that the member was removed from the group

id
string <integer>
select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

members

Organization's supporters and people

query Parameters
id
string <integer>

The ID of the member

campaign_id
string <integer>

The campaign associated with the member

phone_number
string <character varying>

The member's phone number

first_name
string <character varying>

The member's first name

last_name
string <character varying>

The member's last name

city
string <character varying>

The City associated with the member

state
string <character varying>

The State associated with the member

postal_code
string <character varying>

The zip or postal code associated with the member

email
string <character varying>

The member'r email address

notes
string <text>

The content of notes associated with the member

additional_notes
string <text>

The content of additional notes field associated with the member

opt_in
string <boolean>

Whether or not the member is subscribed to recieve further messages

custom
string <jsonb>

The custom fields associated with the member

created_at
string <timestamp with time zone>

When the member was either first imported or opted-in to recieve messages

updated_at
string <timestamp with time zone>

When the member was last updated with a change

groups
string <json>

Groups this member belongs to (json)

carrier
string <text>

The mobile carrier this member uses

first_sub_id
string <integer>

The ID of the first subscription event retained for the member

street_address
string <character varying>

The street address of the member

van_id
string <integer>

The Every Action ID of the member

ak_id
string <integer>

The Action Kit ID of the member

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

/members POST

POST

Post is used to create or replace a member record. When performing a post, Strive will update all fields on a matching member, treating fields that are not included in the body as null, and updating the values in the member record to null. Only Groups, Custom, Carrier and First Sub ID will be retained. (Carrier and First Sub ID are not updatable. Groups and Custom fields can be added to, but not deleted)

Matching

Matching is always done via phone_number and campaign_id. Within a campaign.

payload = {
  "phone_number": "+15555555555",
  "campaign_id": 273,
  "first_name": "Person",
  "last_name": "Name"
}

headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer ' + os.environ.get('STRIVE_KEY')
}

response = requests.request("POST", 'https://api.strivemessaging.org/members', headers=headers, data=json.dumps(payload))

print(response.text.encode('utf8'))

This will add or update a member with the phone number +15555555555 in campaign 273. The members First and last names will be added to a new record or updated, and all other values will be created as null or set to null. (Except Groups, Custom Fields, Carrier and First Sub ID. See intro paragraph for more on these fields)

Reading the Updated Result

You can add a Prefer header if you need the request to return the member. The header value is 'Prefer': 'return=representation',

payload = {
  "phone_number": "+15555555555",
  "campaign_id": 273,
  "first_name": "Person",
  "last_name": "Name"
}

headers = {
  'Content-Type': 'application/json',
  'Prefer': 'return=representation',
  'Authorization': 'Bearer ' + os.environ.get('STRIVE_KEY')
}

response = requests.request("POST", 'https://api.strivemessaging.org/members', headers=headers, data=json.dumps(payload))

print(response.text.encode('utf8'))

This will return the entire json for the member with your updates applied.

Custom Fields

When you POST to the members endpoint with custom fields, they’ll be merged into any existing custom fields. You can add any custom fields you want, and they’ll be merged on top of any existing custom fields.

You can add them in the Strive UI after you add them via the API.

If you run:

payload = {
  "phone_number": "+15555555555",
  "campaign_id": 273,
  "custom": {
    "donation_amount": 300,
  }
}

headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer ' + os.environ.get('STRIVE_KEY')
}

response = requests.request("POST", 'https://api.strivemessaging.org/members', headers=headers, data=json.dumps(payload))

And then:

payload = {
  "phone_number": "+15555555555",
  "campaign_id": 273,
  "custom": {
    "favorite_food": "bananas",
  }
}

headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer ' + os.environ.get('STRIVE_KEY')
}

response = requests.request("POST", 'https://api.strivemessaging.org/members', headers=headers, data=json.dumps(payload))

You can expect to see the member's custom fields to contain:

{
  "custom": {
    "donation_amount": 300,
    "favorite_food": "bananas",
  }
}

Adding Groups

To add members to groups, you can add an array of “groups” to your json. You can either add a group by “id” or by “name”. If you add them by name, we will try to find an existing group with that name. If the group doesn’t exist, it will be created.

payload = {
  "phone_number": "+15555555555",
  "campaign_id": 273,
  "groups": [
    { "name": "Test Group 2" },
  ]
}

headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer ' + os.environ.get('STRIVE_KEY')
}

response = requests.request("POST", 'https://api.strivemessaging.org/members', headers=headers, data=json.dumps(payload)

To add a member to an existing group by id:

payload = {
  "phone_number": "+15555555555",
  "campaign_id": 273,
  "groups": [
    { "id": 123 },
  ]
}

headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer ' + os.environ.get('STRIVE_KEY')
}

response = requests.request("POST", 'https://api.strivemessaging.org/members', headers=headers, data=json.dumps(payload)
query Parameters
select
string

Filtering Columns

header Parameters
Prefer
string
Enum: "return=representation" "return=minimal" "return=none" "resolution=ignore-duplicates" "resolution=merge-duplicates"

Preference

Request Body schema:

members

id
integer <integer>

The ID of the member

Note: This is a Primary Key.

campaign_id
integer <integer>

The campaign associated with the member

Note: This is a Foreign Key to campaigns.id.

phone_number
string <character varying> <= 255 characters

The member's phone number

first_name
string <character varying> <= 255 characters

The member's first name

last_name
string <character varying> <= 255 characters

The member's last name

city
string <character varying> <= 255 characters

The City associated with the member

state
string <character varying> <= 255 characters

The State associated with the member

postal_code
string <character varying> <= 255 characters

The zip or postal code associated with the member

email
string <character varying> <= 255 characters

The member'r email address

notes
string <text>

The content of notes associated with the member

additional_notes
string <text>

The content of additional notes field associated with the member

opt_in
boolean <boolean>

Whether or not the member is subscribed to recieve further messages

custom
any <jsonb>

The custom fields associated with the member

created_at
string <timestamp with time zone>

When the member was either first imported or opted-in to recieve messages

updated_at
string <timestamp with time zone>

When the member was last updated with a change

groups
any <json>

Groups this member belongs to (json)

carrier
string <text>

The mobile carrier this member uses

first_sub_id
integer <integer>

The ID of the first subscription event retained for the member

street_address
string <character varying> <= 1250 characters

The street address of the member

van_id
integer <integer>

The Every Action ID of the member

ak_id
integer <integer>

The Action Kit ID of the member

Responses

Request samples

Content type
{
  • "id": 0,
  • "campaign_id": 0,
  • "phone_number": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "city": "string",
  • "state": "string",
  • "postal_code": "string",
  • "email": "string",
  • "notes": "string",
  • "additional_notes": "string",
  • "opt_in": true,
  • "custom": null,
  • "created_at": "string",
  • "updated_at": "string",
  • "groups": null,
  • "carrier": "string",
  • "first_sub_id": 0,
  • "street_address": "string",
  • "van_id": 0,
  • "ak_id": 0
}

/members PATCH

WARNING

The PATCH method can be used to update one or more existing members. USE WITH CAUTION: PATCH can be dangerous - Patching can update more than one record and will OVERWRITE any values that are specified, even if they are null. To limit the records you update, please include limiting query parameters. The example below limits the request to a single phone number by included ‘?phone_number=eq.%2B15555555555’ to the PATCH Url. Learn more about filtering in the Filtering section of this documentation.

payload = {
  "first_name": "Person",
  "last_name": "Name"
}

headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer ' + os.environ.get('STRIVE_KEY')
}

response = requests.request("PATCH", 'https://api.strivemessaging.org/members?phone_number=eq.%2B15555555555', headers=headers, data=json.dumps(payload))

print(response.text.encode('utf8'))

This will update a member with the phone number +15555555555. The members First and Last names will be updated.

Reading the Updated Result

You can add a Prefer header if you need the request to return the member. The header value is 'Prefer': 'return=representation',

payload = {
  "first_name": "Person",
  "last_name": "Name"
}

headers = {
  'Content-Type': 'application/json',
  'Prefer': 'return=representation',
  'Authorization': 'Bearer ' + os.environ.get('STRIVE_KEY')
}

response = requests.request("PATCH", 'https://api.strivemessaging.org/members?phone_number=eq.%2B15555555555', headers=headers, data=json.dumps(payload))

print(response.text.encode('utf8'))

This will return the entire json for the member with your updates applied.

Adding Groups

PATCH does not support adding or removing groups.

query Parameters
id
string <integer>

The ID of the member

campaign_id
string <integer>

The campaign associated with the member

phone_number
string <character varying>

The member's phone number

first_name
string <character varying>

The member's first name

last_name
string <character varying>

The member's last name

city
string <character varying>

The City associated with the member

state
string <character varying>

The State associated with the member

postal_code
string <character varying>

The zip or postal code associated with the member

email
string <character varying>

The member'r email address

notes
string <text>

The content of notes associated with the member

additional_notes
string <text>

The content of additional notes field associated with the member

opt_in
string <boolean>

Whether or not the member is subscribed to recieve further messages

custom
string <jsonb>

The custom fields associated with the member

created_at
string <timestamp with time zone>

When the member was either first imported or opted-in to recieve messages

updated_at
string <timestamp with time zone>

When the member was last updated with a change

street_address
string <character varying>

The street address of the member

header Parameters
Prefer
string
Enum: "return=representation" "return=minimal" "return=none"

Preference

Request Body schema:

members

phone_number
string <character varying> <= 255 characters

The member's phone number

first_name
string <character varying> <= 255 characters

The member's first name

last_name
string <character varying> <= 255 characters

The member's last name

notes
string <text>

The content of notes associated with the member

opt_in
boolean <boolean>

Whether or not the member is subscribed to recieve further messages

custom
any <jsonb>

The custom fields associated with the member

postal_code
string <character varying> <= 255 characters

The zip or postal code associated with the member

email
string <character varying> <= 255 characters

The member'r email address

city
string <character varying> <= 255 characters

The City associated with the member

state
string <character varying> <= 255 characters

The State associated with the member

additional_notes
string <text>

The content of additional notes field associated with the member

street_address
string <character varying> <= 1250 characters

The street address of the member

Responses

Request samples

Content type
{
  • "phone_number": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "notes": "string",
  • "opt_in": true,
  • "custom": null,
  • "postal_code": "string",
  • "email": "string",
  • "city": "string",
  • "state": "string",
  • "additional_notes": "string",
  • "street_address": "string"
}

members_custom_fields

The custom fields associated with specific members

query Parameters
id
string <integer>

The ID of the custom field associated with a member

field
string <text>

The name of the field in the API

value
string <jsonb>

The value of the field

updated_at
string <timestamp with time zone>

When this custom value was updated

campaign_id
string <integer>

The campaign the value belongs to

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

The links sent to, or clicked by specific members

query Parameters
id
string <integer>

The ID of the member_link

link_id
string <integer>

The link this member_link references

member_id
string <integer>

The member the link was sent to

outgoing_message_id
string <integer>

The outgoing message in which this link was sent

broadcast_id
string <integer>

The broadcast in which this link was sent

url
string <text>

The url that the trackable link directed to

was_visited
string <boolean>

Whether or not the member visited the link

created_at
string <timestamp with time zone>

When the link was sent to the member

updated_at
string <timestamp with time zone>

When the link was last updated

visited_at
string <timestamp with time zone>

When the member visited the link

crawled_at
string <timestamp with time zone>

When an automated process visited the link

user_agent
string <text>

The user agent string recorded when the link was visited

visitor_ip
string <text>

The IP address recorded when the link was visited

campaign_id
string <integer>

The campaign this link belongs to

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

organizations

Organizations are groups of campaigns

query Parameters
id
string <integer>

Identifier for the organization

name
string <character varying>

The name of the organization

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

outgoing_messages

All messages sent by the organization or campaign

query Parameters
id
string <integer>

The ID of the outgoing message

campaign_id
string <integer>

The campaign associated with the outgoing message

member_id
string <integer>

The member targeted by the outgoing message

message
string <character varying>

The contents of the outgoing message

broadcast_id
string <integer>

The parent broadcast that the outgoing message was part of

p2p_id
string <integer>

The ID of the inbox message the outgoing message was part of

flow_action_id
string <text>

The flow action that happened in response to the outgoing message

status
string <character varying>

That status of the outgoing message's delivery

error_code
string <integer>

The error code returned by carriers in repsonse to the outgoing message

sent_at
string <timestamp with time zone>

When the outgoing message was sent

attachment
string <text>
force_mms
string <boolean>
error_type
string <text>
queued_at
string <text>

When the outgoing message was added to our aggregators queue

delivered_at
string <timestamp with time zone>

When the outgoing message was delivered

updated_at
string <timestamp with time zone>
broadcast_flow_id
string <integer>

The ID of the flow initially sent at the beginning of the conversation

conversation_id
string <integer>

The ID of the conversation in which the message was sent

flow_id
string <integer>

The ID of the flow currently in interaction with the member

step_idx
string <integer>
select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

p2ps

Messages sent and action taken from the Inbox feature

query Parameters
id
string <integer>

The ID of the message sent from the inbox

user_id
string <integer>

The user who sent the message

campaign_id
string <integer>

The campaign associated with the message

message
string <text>

The contents of the message sent from the inbox

attachment
string <text>

The attachement or MMS sent from the inbox

scheduled_at
string <timestamp with time zone>

When the message was scheduled to send

cancelled_at
string <timestamp with time zone>

Whent he message was cancelled from sending

sent_at
string <timestamp with time zone>

When the message was sent from the inbox

created_at
string <timestamp with time zone>

When the message was first created and composed in the inbox

updated_at
string <timestamp with time zone>
select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]

(rpc) function_test

/rpc/function_test

Responses

(rpc) function_test_2

/rpc/function_test_2

Responses

(rpc) ping

/rpc/ping

Responses

(rpc) validate_token

/rpc/validate_token

Responses

subscription_events

Collection of events by which individual members become subscribed to or unsubscribed from campaigns

query Parameters
id
string <integer>
member_id
string <integer>

The ID of the member in question

type
string <text>

The type of event which lead to the subscription or unsubscription

created_at
string <timestamp with time zone>

When the event occurred

ref_id
string <integer>

ID of upload, status code, incoming message, or other relevant artifact of subscription event

supplemental
string <text>

Supplemental information about the event

unsubscribe
string <boolean>

Whether the member has been unsubscribed

campaign_id
string <integer>

The ID of the campaign associated with this event

select
string

Filtering Columns

order
string

Ordering

offset
string

Limiting and Pagination

limit
string

Limiting and Pagination

header Parameters
Range
string

Limiting and Pagination

Range-Unit
string
Default: items

Limiting and Pagination

Prefer
string
Value: "count=none"

Preference

Responses

Response samples

Content type
[
  • {
    }
]