Download OpenAPI specification:Download
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
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
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 |
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:
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."
To set up a flow webhook step:
In the flow builder, click Add Bot Action.
Select the Webhook bot action type.
Add a Webhook URL. Example: https://api.orgname.org/mywebhookurl
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 }
.
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.
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"
}
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
}
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 }
There are two ways to test your webhook:
No, an API key is not needed for webhooks. Simply enter a URL into the flow step.
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.
The maximum rate at which the webhook will be called is determined by your shortcode or 10DLC’s MPS rate.
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.
Currently, we do not return information on failed webhooks. If you observe a webhook failure, please reach out to help@strivemessaging.org.
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. |
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. |
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 |
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 |
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) |
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 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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
The links sent to, or clicked by specific members
Column | Type | Description |
---|---|---|
id | integer | The ID of the member_link |
link_id | integer | The link this member_link references |
member_id | integer | The member the link was sent to |
outgoing_message_id | integer | The outgoing message in which this link was sent |
broadcast_id | integer | The broadcast in which this link was sent |
url | text | The url that the trackable link directed to |
was_visited | boolean | Whether or not the member visited the link |
created_at | timestamp with time zone | When the link was sent to the member |
updated_at | timestamp with time zone | When the link was last updated |
visited_at | timestamp with time zone | When the member visited the link |
crawled_at | timestamp with time zone | When an automated process visited the link |
user_agent | text | The user agent string recorded when the link was visited |
visitor_ip | text | The IP address recorded when the link was visited |
campaign_id | integer | The campaign this link belongs to |
Organizations are groups of campaigns
Column | Type | Description |
---|---|---|
id | integer | Identifier for the organization |
name | character varying(255) | The name of the organization |
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 |
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 |
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 |
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "user_id": 0,
- "campaign_id": 0,
- "flow_id": 0,
- "name": "string",
- "message": "string",
- "attachment": "string",
- "force_mms": true,
- "recipient_count": 0,
- "scheduled_at": "string",
- "cancelled_at": "string",
- "sent_at": "string",
- "created_at": "string",
- "updated_at": "string"
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "broadcast_id": 0,
- "group_id": 0,
- "updated_at": "string",
- "campaign_id": 0
}
]
See Data Dictionary for a description of last_event values.
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "campaign_id": 0,
- "member_id": 0,
- "call_target_id": 0,
- "bot_conversation_id": 0,
- "call_number_id": 0,
- "from_number": "string",
- "to_number": "string",
- "machine_detected": true,
- "successful_connection": true,
- "created_at": "string",
- "connected_at": "string",
- "redirected_at": "string",
- "ended_at": "string",
- "updated_at": "string",
- "flow_id": 0,
- "step_idx": 0,
- "office": "string",
- "state": "string",
- "party": "string",
- "name": "string",
- "member_voicemail_answered_at": "string",
- "member_call_failed_at": "string",
- "target_call_failed_at": "string",
- "last_event": "string",
- "call_number_name": "string",
- "broadcast_id": 0,
- "call_number": "string"
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "primary_text_in_number": "string",
- "is_active": true,
- "custom_fields": null,
- "organization_id": 0,
- "name": "string",
- "updated_at": "string"
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "campaign_id": 0,
- "field": "string",
- "label": "string",
- "type": "string",
- "updated_at": "string"
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "member_id": 0,
- "campaign_id": 0,
- "federal_house_district": "string",
- "state_upper_chamber_district": "string",
- "state_lower_chamber_district": "string",
- "created_at": "string",
- "updated_at": "string",
- "federal_representative": "string",
- "federal_senator_one": "string",
- "federal_senator_two": "string"
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "flow_id": 0,
- "member_id": 0,
- "incoming_message_id": 0,
- "step_number": 0,
- "is_response_valid": true,
- "collected_value": "string",
- "is_additional_response": true,
- "created_at": "string",
- "updated_at": "string",
- "campaign_id": 0
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "flow_id": 0,
- "step_number": 0,
- "type": "string",
- "message": "string",
- "child_flows": [
- 0
], - "updated_at": "string",
- "campaign_id": 0
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "campaign_id": 0,
- "name": "string",
- "created_at": "string",
- "updated_at": "string"
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "name": "string",
- "campaign_id": 0,
- "created_at": "string",
- "updated_at": "string",
- "keyword": "string",
- "synonyms": [
- "string"
], - "flow_id": 0,
- "groupable_type": "activistCode",
- "groupable_id": 0
}
]
Post is used to create a group record.
The request body must include campaign_id
and name
to succeed.
select | string Filtering Columns |
Prefer | string Enum: "return=representation" "return=minimal" "return=none" "resolution=ignore-duplicates" "resolution=merge-duplicates" Preference |
groups
campaign_id | integer <integer> The campaign associated with the group Note:
This is a Foreign Key to |
name | string <character varying> <= 255 characters The name of the group |
{- "campaign_id": 0,
- "name": "string"
}
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "member_id": 0,
- "group_id": 0,
- "created_at": "string",
- "updated_at": "string",
- "organizer_ids": [
- 0
], - "campaign_id": 0,
- "user_id": 0
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "campaign_id": 0,
- "member_id": 0,
- "from_number": "string",
- "to_number": "string",
- "message": "string",
- "attachments": null,
- "sent_at": "string",
- "is_opt_out": true,
- "updated_at": "string",
- "conversation_id": 0,
- "flow_id": 0,
- "step_idx": 0,
- "response_to_id": 0,
- "keyword": "string",
- "automation": "string"
}
]
See Data Dictionary for a description of change_type values.
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "member_id": 0,
- "campaign_id": 0,
- "change_action": "string",
- "previous_value": null,
- "new_value": null,
- "change_type": "string",
- "change_value": "string",
- "updated_at": "string",
- "id": 0
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "key": "string",
- "prior_value": "string",
- "updated_value": "string",
- "member_id": 0,
- "campaign_id": 0,
- "change_action": "string",
- "previous_value": null,
- "new_value": null,
- "change_type": "string",
- "change_value": "string",
- "updated_at": "string",
- "id": 0
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "group_id": 0,
- "campaign_id": 0,
- "member_id": 0,
- "member_added_on": "string",
- "delete_source": "string",
- "delete_source_id": 0,
- "removed_by": 0,
- "member_removed_on": "string",
- "id": 0
}
]
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 |
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "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
}
]
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 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)
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.
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",
}
}
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)
select | string Filtering Columns |
Prefer | string Enum: "return=representation" "return=minimal" "return=none" "resolution=ignore-duplicates" "resolution=merge-duplicates" Preference |
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 |
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 |
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 |
{- "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
}
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.
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.
PATCH does not support adding or removing groups.
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 |
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 |
Prefer | string Enum: "return=representation" "return=minimal" "return=none" Preference |
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 |
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 |
{- "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"
}
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "field": "string",
- "value": null,
- "updated_at": "string",
- "campaign_id": 0
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "link_id": 0,
- "member_id": 0,
- "outgoing_message_id": 0,
- "broadcast_id": 0,
- "url": "string",
- "was_visited": true,
- "created_at": "string",
- "updated_at": "string",
- "visited_at": "string",
- "crawled_at": "string",
- "user_agent": "string",
- "visitor_ip": "string",
- "campaign_id": 0
}
]
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 |
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 |
broadcast_id | string <integer> The broadcast in which this link was sent |
select | string Filtering Columns |
order | string Ordering |
offset | string Limiting and Pagination |
limit | string Limiting and Pagination |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "link_id": 0,
- "member_id": 0,
- "outgoing_message_id": 0,
- "url": "string",
- "was_visited": true,
- "created_at": "string",
- "updated_at": "string",
- "visited_at": "string",
- "crawled_at": "string",
- "user_agent": "string",
- "visitor_ip": "string",
- "campaign_id": 0,
- "broadcast_id": 0
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "name": "string"
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "campaign_id": 0,
- "member_id": 0,
- "message": "string",
- "broadcast_id": 0,
- "p2p_id": 0,
- "flow_action_id": "string",
- "status": "string",
- "error_code": 0,
- "sent_at": "string",
- "attachment": "string",
- "force_mms": true,
- "error_type": "string",
- "queued_at": "string",
- "delivered_at": "string",
- "updated_at": "string",
- "broadcast_flow_id": 0,
- "conversation_id": 0,
- "flow_id": 0,
- "step_idx": 0
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "user_id": 0,
- "campaign_id": 0,
- "message": "string",
- "attachment": "string",
- "scheduled_at": "string",
- "cancelled_at": "string",
- "sent_at": "string",
- "created_at": "string",
- "updated_at": "string"
}
]
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 |
Range | string Limiting and Pagination |
Range-Unit | string Default: items Limiting and Pagination |
Prefer | string Value: "count=none" Preference |
[- {
- "id": 0,
- "member_id": 0,
- "type": "string",
- "created_at": "string",
- "ref_id": 0,
- "supplemental": "string",
- "unsubscribe": true,
- "campaign_id": 0
}
]