Volt GraphQL API

The Volt GraphQL API is the primary way for apps to interact with the Volt platform.

Contact

Volt Customer Success
help@textvolt.com

Terms of Service: https://www.respondflow.com/terms-of-service

API Endpoints
Production Server:
https://api.respondflow.com/graphql
Version: v1.0
Respond Flow

Prior to 2022, Volt was known as Respond Flow. As we're making the transition to our new name, you may see technical details and domains that refer to Respond Flow throughout the documentation. Note that this is not a mistake, and no support for existing endpoints will be dropped for customers once the transition is complete.

Retrieving an Access Token

To generate an access token, log in to your Volt account, navigate to Settings and click the Developers tab. If the tab is not available, be sure your user has proper permissions to manage users in Volt.

Validating Webhooks

Each Volt webhook event that we send you will include a cryptographic signature in the X-Respond-Flow-Signature header. The signature allows you to validate that webhooks were not sent by a third-party. Our RSA public key is available at https://callbacks.respondflow.com/id_rsa.pub, which can be used to validate the signature sent with each request using a standard cryptographic library in your language of choice.

Queries

contact

Get a contact by phone number
Returns a Contact

Name Description
primaryPhone - String! Primary number on the Volt account (as shown in the interface)
phoneNumber - String! Phone number of the desired contact

Example

Query
query contact($primaryPhone: String!, $phoneNumber: String!) {
  contact(primaryPhone: $primaryPhone, phoneNumber: $phoneNumber) {
    id
    account {
      ...AccountFragment
    }
    organization {
      ...OrganizationFragment
    }
    phoneNumber
    name
    mappedNumber
    customFields {
      ...ContactCustomFieldFragment
    }
    createdAt
    lastUpdatedAt
    lists {
      ...ListFragment
    }
    blocked
  }
}
Variables
{"primaryPhone": "abc123", "phoneNumber": "abc123"}
Response
{
  "data": {
    "contact": {
      "id": 1234,
      "account": Account,
      "organization": Organization,
      "phoneNumber": "+15555556893",
      "name": "Wile E. Coyote",
      "mappedNumber": "+15555551234",
      "customFields": [ContactCustomField],
      "createdAt": "2021-03-29T20:00:35.344134Z",
      "lastUpdatedAt": "2021-03-29T20:00:35.344134Z",
      "lists": [List],
      "blocked": true
    }
  }
}

conversation

Get a conversation between two entities
Returns a Conversation!

Name Description
to - String! Outgoing number
from - String! Your Volt number (as shown in UI)
before - String Base 64 encoded cursor

Example

Query
query conversation($to: String!, $from: String!, $before: String) {
  conversation(to: $to, from: $from, before: $before) {
    messages {
      ...MessageFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
  }
}
Variables
{
  "to": "+15555551234",
  "from": "+15555554321",
  "before": "<cursor>"
}
Response
{
  "data": {
    "conversation": {
      "messages": [Message],
      "pageInfo": PageInfo
    }
  }
}

inbox

Get inbox for account
Returns an Inbox

Name Description
from - String! Primary number on the Volt account (as shown in the interface)
before - String Base 64 encoded cursor

Example

Query
query inbox($from: String!, $before: String) {
  inbox(from: $from, before: $before) {
    account {
      ...AccountFragment
    }
    items {
      ...InboxMessageFragment
    }
    pageInfo {
      ...PageInfoFragment
    }
  }
}
Variables
{
  "from": "+15555554321",
  "before": "<cursor>"
}
Response
{
  "data": {
    "inbox": {
      "account": Account,
      "items": [InboxMessage],
      "pageInfo": PageInfo
    }
  }
}

legacyMessage

Get a message by provider ID
Returns a Message

Name Description
id - ID! Message ID assigned by telecom provider (uuid)

Example

Query
query legacyMessage($id: ID!) {
  legacyMessage(id: $id) {
    id
    legacyId
    account {
      ...AccountFragment
    }
    organization {
      ...OrganizationFragment
    }
    toNumber
    fromNumber
    status
    statusDescription
    media
    body
    sentAt
    confirmedAt
    wave {
      ...WaveFragment
    }
    contact {
      ...ContactFragment
    }
  }
}
Variables
{"id": ID}
Response
{
  "data": {
    "legacyMessage": {
      "id": rf_1234abcd,
      "legacyId": "40317653-15ed-444e-b232-98933f63adf8",
      "account": Account,
      "organization": Organization,
      "toNumber": "+15555556893",
      "fromNumber": "+15555556894",
      "status": "received",
      "statusDescription": "Incoming message received",
      "media": [
        [
          "https://example.com/image.png"
        ]
      ],
      "body": "Well, back to the old drawing board.",
      "sentAt": "2021-03-29T20:00:35.344134Z",
      "confirmedAt": "2021-03-29T20:00:35.344134Z",
      "wave": Wave,
      "contact": Contact
    }
  }
}

list

Get a list
Returns a List!

Name Description
primaryPhone - String! Primary number on the Volt account (as shown in the interface)
listName - String! Name of the desired list to fetch

Example

Query
query list($primaryPhone: String!, $listName: String!) {
  list(primaryPhone: $primaryPhone, listName: $listName) {
    id
    createdBy
    name
    createdAt
    lastUpdatedAt
    account {
      ...AccountFragment
    }
    size
    querySourceListName
    queryNameSearchTerm
    queryCustomFields {
      ...ListQueryRuleFragment
    }
  }
}
Variables
{
  "primaryPhone": "+15555554321",
  "listName": "Loyal Customers"
}
Response
{
  "data": {
    "list": {
      "id": 12345,
      "createdBy": "your.user@example.com",
      "name": "Loyal Customers",
      "createdAt": "2021-03-29T20:00:35.344134Z",
      "lastUpdatedAt": "2021-03-29T20:00:35.344134Z",
      "account": Account,
      "size": 542,
      "querySourceListName": "All",
      "queryNameSearchTerm": ,
      "queryCustomFields": [ListQueryRule]
    }
  }
}

message

Get a message by Volt ID
Returns a Message

Name Description
id - ID! Volt ID of a message (rf_*)

Example

Query
query message($id: ID!) {
  message(id: $id) {
    id
    legacyId
    account {
      ...AccountFragment
    }
    organization {
      ...OrganizationFragment
    }
    toNumber
    fromNumber
    status
    statusDescription
    media
    body
    sentAt
    confirmedAt
    wave {
      ...WaveFragment
    }
    contact {
      ...ContactFragment
    }
  }
}
Variables
{"id": ID}
Response
{
  "data": {
    "message": {
      "id": rf_1234abcd,
      "legacyId": "40317653-15ed-444e-b232-98933f63adf8",
      "account": Account,
      "organization": Organization,
      "toNumber": "+15555556893",
      "fromNumber": "+15555556894",
      "status": "received",
      "statusDescription": "Incoming message received",
      "media": [
        [
          "https://example.com/image.png"
        ]
      ],
      "body": "Well, back to the old drawing board.",
      "sentAt": "2021-03-29T20:00:35.344134Z",
      "confirmedAt": "2021-03-29T20:00:35.344134Z",
      "wave": Wave,
      "contact": Contact
    }
  }
}

wave

Get a wave by ID
Returns a Wave

Name Description
id - ID! Numeric id assigned to a Wave given in the id attribute

Example

Query
query wave($id: ID!) {
  wave(id: $id) {
    id
    scheduledTime
    name
    account {
      ...AccountFragment
    }
    organization {
      ...OrganizationFragment
    }
    body
    media
    sentBy
    lists {
      ...ListFragment
    }
    totalMessages
    totalMessagesDelivered
    totalMessagesFailed
    type
  }
}
Variables
{"id": ID}
Response
{
  "data": {
    "wave": {
      "id": 12345,
      "scheduledTime": "abc123",
      "name": "Memorial Day Brick Sale",
      "account": Account,
      "organization": Organization,
      "body": "Hi {contact.first_name}, we're having a great sale on bricks this weekend.",
      "media": [
        [
          "https://example.com/image.png"
        ]
      ],
      "sentBy": "your.user@example.com",
      "lists": [List],
      "totalMessages": 100,
      "totalMessagesDelivered": 98,
      "totalMessagesFailed": 2,
      "type": "account"
    }
  }
}

webhooks

Get all webhooks
Returns [Webhook]!

Example

Query
query webhooks {
  webhooks {
    id
    organization {
      ...OrganizationFragment
    }
    url
    createdAt
    lastUpdatedAt
  }
}
Response
{
  "data": {
    "webhooks": [
      {
        "id": 1234,
        "organization": Organization,
        "url": "https://example.com/webhook",
        "createdAt": "2021-03-29T20:00:35.344134Z",
        "lastUpdatedAt": "2021-03-29T20:00:35.344134Z"
      }
    ]
  }
}

Mutations

createMessage

Send a message
Returns a Message!

Name Description
to - String! Number to which to send the message
from - String! Primary number on the Volt account (as shown in the interface, the message will be mapped appropriately)
body - String! Text body of the message
media - [String!] Media (URLs) to attach to the image

Example

Query
mutation createMessage($to: String!, $from: String!, $body: String!, $media: [String!]) {
  createMessage(to: $to, from: $from, body: $body, media: $media) {
    id
    legacyId
    account {
      ...AccountFragment
    }
    organization {
      ...OrganizationFragment
    }
    toNumber
    fromNumber
    status
    statusDescription
    media
    body
    sentAt
    confirmedAt
    wave {
      ...WaveFragment
    }
    contact {
      ...ContactFragment
    }
  }
}
Variables
{
  "to": "+15555556893",
  "from": "+15555556894",
  "body": "Thanks for coming in!",
  "media": [
    "https://example.com/thanks.png"
  ]
}
Response
{
  "data": {
    "createMessage": {
      "id": rf_1234abcd,
      "legacyId": "40317653-15ed-444e-b232-98933f63adf8",
      "account": Account,
      "organization": Organization,
      "toNumber": "+15555556893",
      "fromNumber": "+15555556894",
      "status": "received",
      "statusDescription": "Incoming message received",
      "media": [
        [
          "https://example.com/image.png"
        ]
      ],
      "body": "Well, back to the old drawing board.",
      "sentAt": "2021-03-29T20:00:35.344134Z",
      "confirmedAt": "2021-03-29T20:00:35.344134Z",
      "wave": Wave,
      "contact": Contact
    }
  }
}

createOrUpdateContact

Create or update a contact
Returns a Contact!

Name Description
name - String! Display name of the contact
phoneNumber - String! Contact's phone number
accountPhone - String! Primary number on the Volt account (as shown in the interface)
customFields - [ContactCustomFieldInput]! Key-value pairs containing other identifying information on the contact
blocked - Boolean! If the contact should be marked as blocked, and receivals not processed

Example

Query
mutation createOrUpdateContact($name: String!, $phoneNumber: String!, $accountPhone: String!, $customFields: [ContactCustomFieldInput]!, $blocked: Boolean!) {
  createOrUpdateContact(name: $name, phoneNumber: $phoneNumber, accountPhone: $accountPhone, customFields: $customFields, blocked: $blocked) {
    id
    account {
      ...AccountFragment
    }
    organization {
      ...OrganizationFragment
    }
    phoneNumber
    name
    mappedNumber
    customFields {
      ...ContactCustomFieldFragment
    }
    createdAt
    lastUpdatedAt
    lists {
      ...ListFragment
    }
    blocked
  }
}
Variables
{
  "name": "Wile E. Coyote",
  "phoneNumber": "+15555554321",
  "accountPhone": "+15555551234",
  "customFields": [ContactCustomFieldInput],
  "blocked": false
}
Response
{
  "data": {
    "createOrUpdateContact": {
      "id": 1234,
      "account": Account,
      "organization": Organization,
      "phoneNumber": "+15555556893",
      "name": "Wile E. Coyote",
      "mappedNumber": "+15555551234",
      "customFields": [ContactCustomField],
      "createdAt": "2021-03-29T20:00:35.344134Z",
      "lastUpdatedAt": "2021-03-29T20:00:35.344134Z",
      "lists": [List],
      "blocked": false
    }
  }
}

createOrUpdateList

Create a or update a list
Returns a List!

Name Description
primaryPhone - String! Primary number on the Volt account (as shown in the interface)
listQuery - ListQuery! List building information

Example

Query
mutation createOrUpdateList($primaryPhone: String!, $listQuery: ListQuery!) {
  createOrUpdateList(primaryPhone: $primaryPhone, listQuery: $listQuery) {
    id
    createdBy
    name
    createdAt
    lastUpdatedAt
    account {
      ...AccountFragment
    }
    size
    querySourceListName
    queryNameSearchTerm
    queryCustomFields {
      ...ListQueryRuleFragment
    }
  }
}
Variables
{
  "primaryPhone": "+15555556893",
  "listQuery": ListQuery
}
Response
{
  "data": {
    "createOrUpdateList": {
      "id": 12345,
      "createdBy": "your.user@example.com",
      "name": "Loyal Customers",
      "createdAt": "2021-03-29T20:00:35.344134Z",
      "lastUpdatedAt": "2021-03-29T20:00:35.344134Z",
      "account": Account,
      "size": 542,
      "querySourceListName": "All",
      "queryNameSearchTerm": ,
      "queryCustomFields": [ListQueryRule]
    }
  }
}

deleteWebhook

Delete a webhook by id
Returns a Webhook

Name Description
id - ID! Numeric id assigned to a Webhook given in the id attribute

Example

Query
mutation deleteWebhook($id: ID!) {
  deleteWebhook(id: $id) {
    id
    organization {
      ...OrganizationFragment
    }
    url
    createdAt
    lastUpdatedAt
  }
}
Variables
{"id": ID}
Response
{
  "data": {
    "deleteWebhook": {
      "id": 1234,
      "organization": Organization,
      "url": "https://example.com/webhook",
      "createdAt": "2021-03-29T20:00:35.344134Z",
      "lastUpdatedAt": "2021-03-29T20:00:35.344134Z"
    }
  }
}

registerWebhook

Create a webhook destination
Returns a Webhook

Name Description
url - String! URL of the POST request Volt will make with a message status update

Example

Query
mutation registerWebhook($url: String!) {
  registerWebhook(url: $url) {
    id
    organization {
      ...OrganizationFragment
    }
    url
    createdAt
    lastUpdatedAt
  }
}
Variables
{
  "url": "https://example.com/webhook"
}
Response
{
  "data": {
    "registerWebhook": {
      "id": 1234,
      "organization": Organization,
      "url": "https://example.com/webhook",
      "createdAt": "2021-03-29T20:00:35.344134Z",
      "lastUpdatedAt": "2021-03-29T20:00:35.344134Z"
    }
  }
}

scheduleMessage

Schedule a singular message
Returns a Wave

Name Description
primaryPhone - String! Primary number on the Volt account (as shown in the interface)
message - MessageSchedulingJob! Other messaging information

Example

Query
mutation scheduleMessage($primaryPhone: String!, $message: MessageSchedulingJob!) {
  scheduleMessage(primaryPhone: $primaryPhone, message: $message) {
    id
    scheduledTime
    name
    account {
      ...AccountFragment
    }
    organization {
      ...OrganizationFragment
    }
    body
    media
    sentBy
    lists {
      ...ListFragment
    }
    totalMessages
    totalMessagesDelivered
    totalMessagesFailed
    type
  }
}
Variables
{
  "primaryPhone": "+15555554321",
  "message": MessageSchedulingJob
}
Response
{
  "data": {
    "scheduleMessage": {
      "id": 12345,
      "scheduledTime": "xyz789",
      "name": "Memorial Day Brick Sale",
      "account": Account,
      "organization": Organization,
      "body": "Hi {contact.first_name}, we're having a great sale on bricks this weekend.",
      "media": [
        [
          "https://example.com/image.png"
        ]
      ],
      "sentBy": "your.user@example.com",
      "lists": [List],
      "totalMessages": 100,
      "totalMessagesDelivered": 98,
      "totalMessagesFailed": 2,
      "type": "account"
    }
  }
}

scheduleWave

Schedule a wave
Returns a Wave

Name Description
type - WaveType! Wave type (account/organization)
primaryPhone - String Primary number on the Volt account (as shown in the interface)
status - NewWaveStatus! Status of the wave (draft/scheduled, draft waves will not be processed)
wave - WaveSchedulingJob! Other messaging information

Example

Query
mutation scheduleWave($type: WaveType!, $primaryPhone: String, $status: NewWaveStatus!, $wave: WaveSchedulingJob!) {
  scheduleWave(type: $type, primaryPhone: $primaryPhone, status: $status, wave: $wave) {
    id
    scheduledTime
    name
    account {
      ...AccountFragment
    }
    organization {
      ...OrganizationFragment
    }
    body
    media
    sentBy
    lists {
      ...ListFragment
    }
    totalMessages
    totalMessagesDelivered
    totalMessagesFailed
    type
  }
}
Variables
{
  "type": WaveType,
  "primaryPhone": "+15555554321",
  "status": NewWaveStatus,
  "wave": WaveSchedulingJob
}
Response
{
  "data": {
    "scheduleWave": {
      "id": 12345,
      "scheduledTime": "xyz789",
      "name": "Memorial Day Brick Sale",
      "account": Account,
      "organization": Organization,
      "body": "Hi {contact.first_name}, we're having a great sale on bricks this weekend.",
      "media": [
        [
          "https://example.com/image.png"
        ]
      ],
      "sentBy": "your.user@example.com",
      "lists": [List],
      "totalMessages": 100,
      "totalMessagesDelivered": 98,
      "totalMessagesFailed": 2,
      "type": "account"
    }
  }
}

Types

Account

Field Name Description
id - ID! ID of the account owning the phone number
organization - Organization! Root organization to which the account is associated
createdBy - String! Email of user who created the account
name - String! Name of the account
primaryPhone - String! Root phone number of the account (aside from numbers in pool if enabled)
createdAt - String! Account creation date
lastUpdatedAt - String! Time the organization was last updated
callForwardingNumber - String Number to which a call to the primaryPhone or any phone in the pool is forwarded
location - String Location of the entity this account represents
Example
{
  "id": 1234567,
  "organization": Organization,
  "createdBy": "your.user@example.com",
  "name": "Tulsa Store",
  "primaryPhone": "+15555554321",
  "createdAt": "2021-03-29T20:00:35.344134Z",
  "lastUpdatedAt": "2021-03-29T20:00:35.344134Z",
  "callForwardingNumber": "+15555551234",
  "location": "Tulsa, Oklahoma"
}

Boolean

The Boolean scalar type represents true or false.

Example
false

Contact

Field Name Description
id - ID! ID of the contact
account - Account Account to which the contact is associated
organization - Organization Root organization to which the contact is associated
phoneNumber - String! Contact's receiving phone number
name - String! Name of the contact
mappedNumber - String Number the contact is mapped to if number pooling is enabled
customFields - [ContactCustomField!]! Custom field values on the contact
createdAt - String! Contact creation date
lastUpdatedAt - String! Time the contact was last updated
lists - [List!]! Lists to which this contact is a member
blocked - Boolean! If the contact is blocked
Example
{
  "id": 1234,
  "account": Account,
  "organization": Organization,
  "phoneNumber": "+15555556893",
  "name": "Wile E. Coyote",
  "mappedNumber": "+15555551234",
  "customFields": [ContactCustomField],
  "createdAt": "2021-03-29T20:00:35.344134Z",
  "lastUpdatedAt": "2021-03-29T20:00:35.344134Z",
  "lists": [List],
  "blocked": false
}

ContactCustomField

Field Name Description
key - String! Field name
type - String! Field type
value - String! Field value
Example
{
  "key": "species",
  "type": "string",
  "value": "Canis latrans"
}

ContactCustomFieldInput

Input Field Description
key - String!

Field name

value - String!

Field value

Example
{"key": "abc123", "value": "xyz789"}

Conversation

Field Name Description
messages - [Message!]! Messages in conversation
pageInfo - PageInfo! Paging information on conversation
Example
{
  "messages": [Message],
  "pageInfo": PageInfo
}

ID

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
object

Inbox

Field Name Description
account - Account Account to which the contact is associated
items - [InboxMessage!]! Inbox Items for the account
pageInfo - PageInfo! Paging information on conversation
Example
{
  "account": Account,
  "items": [InboxMessage],
  "pageInfo": PageInfo
}

InboxMessage

Field Name Description
contact - Contact Contact object for the message in inbox
lastMessage - String! Last message content for the contact
isUnread - Boolean! If the message is unread
lastMessageTime - String! Timestamp of the last message
Example
{
  "contact": Contact,
  "lastMessage": "xyz789",
  "isUnread": false,
  "lastMessageTime": "abc123"
}

Int

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
987

List

Field Name Description
id - ID! ID of the list
createdBy - String! Email of the user who created the list
name - String! Name of the list
createdAt - String! List creation date
lastUpdatedAt - String! Time the list was last updated
account - Account Account to which the list is associated
size - Int! Number of contacts on this list
querySourceListName - String The name of the list used as the basis for filtering based on a query; defaults to the All list
queryNameSearchTerm - String Filters list contacts by name
queryCustomFields - [ListQueryRule!] Filters list contacts by a rule
Example
{
  "id": 12345,
  "createdBy": "your.user@example.com",
  "name": "Loyal Customers",
  "createdAt": "2021-03-29T20:00:35.344134Z",
  "lastUpdatedAt": "2021-03-29T20:00:35.344134Z",
  "account": Account,
  "size": 542,
  "querySourceListName": "All",
  "queryNameSearchTerm": ,
  "queryCustomFields": [ListQueryRule]
}

ListQuery

Outlines a query used in our contact center to define a list.

Input Field Description
listName - String!

The name of the new list; must be unique per account

querySourceListName - String

The name of the list used as the basis for filtering based on a query

queryNameSearchTerm - String

Filters list contacts by name

queryCustomFields - [ListQueryRuleInput!]

Filters list contacts by a rule

Example
{
  "listName": "abc123",
  "querySourceListName": "xyz789",
  "queryNameSearchTerm": "xyz789",
  "queryCustomFields": [ListQueryRuleInput]
}

ListQueryOperator

An operator used for comparison during list filtering

Enum Value Description

gt

Contact value is greater than the query rule value

gte

Contact value is greater than or equal to the query rule value

lt

Contact value is less than the query rule value

lte

Contact value is less than or equal to the query rule value

eq

Contact value is numerically equal to the query rule value

bf

Contact value is before the query rule value; valid for Dates

af

Contact value is after the query rule value; valid for Dates

is

Contact value is equivalent to the query rule value; valid for text

has

Contact value contains the query rule value; valid for text

neq

Contact value is not numerically equal to the query rule value

nc

Contact value does not contain the query rule value; valid for text

ListQueryRule

Describes a filtering rule for a list query

Field Name Description
field - String! A custom dynamic field used in a query; should already be defined on an organization
operator - ListQueryOperator! An operator used for comparison during filtering
queryValue - String! The JSON-serialized value of a query field
Example
{
  "field": "purchases",
  "operator": ListQueryOperator,
  "queryValue": 5
}

ListQueryRuleInput

Describes a filtering rule for a list query

Input Field Description
field - String!

A custom dynamic field used in a query; should already be defined on an organization

operator - ListQueryOperator!

An operator used for comparison during filtering

queryValue - String!

The JSON-serialized value of a query field

Example
{
  "field": "xyz789",
  "operator": ListQueryOperator,
  "queryValue": "abc123"
}

Message

Field Name Description
id - ID! Volt assigned message ID
legacyId - String! Provider assigned message ID
account - Account Account from which the message originated
organization - Organization Organization from which the message originated
toNumber - String! Number to which the message was sent
fromNumber - String! Number from which the message originated
status - String! Message status (failed, sending, sent, or delivered)
statusDescription - String! Detailed description associated with message status
media - [String!]! Media sent with the message
body - String! Message body
sentAt - String! Time the message was sent to provider
confirmedAt - String! Time message status was confirmed by provider
wave - Wave Wave from which the message originated
contact - Contact Contact on the receiving end of the message
Example
{
  "id": rf_1234abcd,
  "legacyId": "40317653-15ed-444e-b232-98933f63adf8",
  "account": Account,
  "organization": Organization,
  "toNumber": "+15555556893",
  "fromNumber": "+15555556894",
  "status": "received",
  "statusDescription": "Incoming message received",
  "media": [
    "https://example.com/image.png"
  ],
  "body": "Well, back to the old drawing board.",
  "sentAt": "2021-03-29T20:00:35.344134Z",
  "confirmedAt": "2021-03-29T20:00:35.344134Z",
  "wave": Wave,
  "contact": Contact
}

MessageSchedulingJob

Input Field Description
scheduledTime - String!

Time the message will be sent in UTC (YYYY-MM-DD HH:MM:SS)

messageBody - String!

Body of the message

contactNumbers - [String!]!

Contacts associated with the message

media - [String!]

Media to be sent with the message

Example
{
  "scheduledTime": "xyz789",
  "messageBody": "xyz789",
  "contactNumbers": ["abc123"],
  "media": ["abc123"]
}

NewWaveStatus

Enum Value Description

draft

Signifies a draft wave

scheduled

Signifies a scheduled wave

Organization

Field Name Description
id - ID! ID of the organization tied to the access token
companyName - String! Name of the organization that owns the phone numbers used in messaging
domain - String Web domain of the organization
size - String Organization size as input during onboarding
industry - String Organization industry as input during onboarding
createdAt - String! Organization creation date
lastUpdatedAt - String! Time the organization was last updated
isOnFreeTrial - Boolean! If the organization is on a free trial
isActive - Boolean! If the organization is active (has not submit disabling request)
Example
{
  "id": 1234567,
  "companyName": "Acme Corporation",
  "domain": "example.com",
  "size": "11-50",
  "industry": "Retail",
  "createdAt": "2021-03-29T20:00:35.344134Z",
  "lastUpdatedAt": "2021-03-29T20:00:35.344134Z",
  "isOnFreeTrial": false,
  "isActive": true
}

PageInfo

Field Name Description
totalItems - Int! Total items in set
nextPage - String Next page cursor
hasNextPage - Boolean! If the set has a next page
Example
{"totalItems": 123, "nextPage": "xyz789", "hasNextPage": true}

String

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Wave

Field Name Description
id - ID! ID of the wave
scheduledTime - String! Time the wave is scheduled to begin processing
name - String! Name of the wave
account - Account Account from which the wave originated
organization - Organization Root organization from which the wave originiated
body - String! Message body
media - [String!]! Associated media
sentBy - String! Sending user
lists - [List!] Lists included in the wave
totalMessages - Int! Total message in the wave
totalMessagesDelivered - Int! Total messages delivered
totalMessagesFailed - Int! Total messages failed
type - String! Wave type (one of contact, account, or group)
Example
{
  "id": 12345,
  "scheduledTime": "xyz789",
  "name": "Memorial Day Brick Sale",
  "account": Account,
  "organization": Organization,
  "body": "Hi {contact.first_name}, we're having a great sale on bricks this weekend.",
  "media": [
    "https://example.com/image.png"
  ],
  "sentBy": "your.user@example.com",
  "lists": [List],
  "totalMessages": 100,
  "totalMessagesDelivered": 98,
  "totalMessagesFailed": 2,
  "type": "account"
}

WaveSchedulingJob

Field Name Description
waveName - String! Name of the wave
scheduledTime - String! Time the wave will be sent in UTC (YYYY-MM-DD HH:MM:SS)
messageBody - String! Body of the wave
listNames - [String!]! Lists involved in the wave
media - [String] Media associated with the wave
Example
{
  "waveName": "abc123",
  "scheduledTime": "abc123",
  "messageBody": "abc123",
  "listNames": ["xyz789"],
  "media": ["xyz789"]
}

WaveType

Enum Value Description

account

Signifies an account wave

organization

Signifies a group wave

Webhook

Field Name Description
id - ID! Webhook ID
organization - Organization! Root organization to which this webhook is associated
url - String! Webhook destination URL
createdAt - String! Webhook creation date
lastUpdatedAt - String! Time the webhook was last updated
Example
{
  "id": 1234,
  "organization": Organization,
  "url": "https://example.com/webhook",
  "createdAt": "2021-03-29T20:00:35.344134Z",
  "lastUpdatedAt": "2021-03-29T20:00:35.344134Z"
}