Read Vision6 lists, contacts, messages and reports; update contacts; send transactional email/SMS.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: add up to 200 contacts to a list in one request (faster than one by one). Each needs an email and/or mobile. Vision6 returns no contact data (HTTP 204), so use vision6_list_contacts to read them back. May trigger automations. POST /lists/{list_id}/contacts.
Skip addresses that are on the unsubscribers list: any (account-wide), list (this list), none (default: create everyone).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
WRITE: add up to 200 contacts to a list in one request (faster than one by one). Each needs an email and/or mobile. Vision6 returns no contact data (HTTP 204), so use vision6_list_contacts to read them back. May trigger automations. POST /lists/{list_id}/contacts.
| Argument | Type | Description |
|---|---|---|
| list_id* | integer | |
| contacts* | array | |
| remove_unsubscribers | string | Skip addresses that are on the unsubscribers list: any (account-wide), list (this list), none (default: create everyone). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"list_id",
"contacts"
],
"properties": {
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"contacts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Email address (the list must have an Email field)."
},
"fields": {
"type": "object",
"description": "Custom list field values, keyed by the lowercase key of the field name (underscores for spaces/dashes, e.g. first_name). Use vision6_list_list_fields to see the list's fields.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 10000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"mobile": {
"type": "string",
"pattern": "^\\d{6,15}$",
"description": "Mobile number in international format without + or spaces (Australia: 61400000009). The list must have a Mobile field."
},
"double_opt_in": {
"type": "boolean",
"description": "true marks the contact as already confirmed (sets the double opt-in time to now). It cannot be reset to false afterwards."
},
"email_subscribed": {
"type": "boolean",
"description": "Whether the email address is subscribed to receive messages."
},
"mobile_subscribed": {
"type": "boolean",
"description": "Whether the mobile number is subscribed to receive messages."
}
}
},
"maxItems": 200,
"minItems": 1
},
"remove_unsubscribers": {
"enum": [
"none",
"list",
"any"
],
"type": "string",
"description": "Skip addresses that are on the unsubscribers list: any (account-wide), list (this list), none (default: create everyone)."
}
}
}WRITE: add one contact to a list (needs an email and/or mobile that matches a field of the list). May trigger the list's 'contact created' automations and notification emails. Returns the new contact. POST /lists/{list_id}/contacts.
| Argument | Type | Description |
|---|---|---|
| string | Email address (the list must have an Email field). | |
| fields | object | Custom list field values, keyed by the lowercase key of the field name (underscores for spaces/dashes, e.g. first_name). Use vision6_list_list_fields to see the list's fields. |
| mobile | string | Mobile number in international format without + or spaces (Australia: 61400000009). The list must have a Mobile field. |
| list_id* | integer | |
| is_active | boolean | The contact's active status. |
| double_opt_in | boolean | true marks the contact as already confirmed (sets the double opt-in time to now). It cannot be reset to false afterwards. |
| email_subscribed | boolean | Whether the email address is subscribed to receive messages. |
| mobile_subscribed | boolean | Whether the mobile number is subscribed to receive messages. |
WRITE: create a new, empty contact list inside a list folder (see vision6_list_folders with type list). Returns the new list. POST /lists.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| folder_id* | integer | Id of the list folder to create the list in. |
| is_gdpr_compliant | boolean | |
| on_update_address | array | Email addresses to notify when a contact is updated. |
| on_register_address | array | Email addresses to notify when a contact is added. |
| on_unsubscribe_address | array | Email addresses to notify when a contact unsubscribes. |
| allow_send_to_duplicates | boolean | Allow sends to duplicate email or mobile addresses. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"folder_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"folder_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Id of the list folder to create the list in.",
"exclusiveMinimum": 0
},
"is_gdpr_compliant": {
"type": "boolean"
},
"on_update_address": {
"type": "array",
"items": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"maxItems": 20,
"description": "Email addresses to notify when a contact is updated."
},
"on_register_address": {
"type": "array",
"items": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"maxItems": 20,
"description": "Email addresses to notify when a contact is added."
},
"on_unsubscribe_address": {
"type": "array",
"items": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"maxItems": 20,
"description": "Email addresses to notify when a contact unsubscribes."
},
"allow_send_to_duplicates": {
"type": "boolean",
"description": "Allow sends to duplicate email or mobile addresses."
}
}
}WRITE: save a new email or SMS message in Vision6. This only stores the message; it is NOT sent (use the Vision6 app to send a campaign, or vision6_send_transactional for a one-off send). Email needs email_type, subject and matching body fields (plain: content_text; html: content_html; plain-html: both; raw_html: content_html or content_html_raw). SMS needs content_sms. The drag-and-drop builder is not supported. POST /messages.
| Argument | Type | Description |
|---|---|---|
| name* | string | Display name of the message in Vision6. |
| type* | string | |
| subject | string | Email subject line (required for email). Supports wildcards like %%first_name**there%%. |
| reply_to | string | |
| folder_id | integer | Message folder id (see vision6_list_folders with type message). Omit to use the account's first message folder. |
| from_name | string | |
| email_type | string | Required for email. |
| content_sms | string | SMS text (required for an sms message; keep it near 500 characters). |
WRITE, IRREVERSIBLE: permanently delete one contact from a list (for example for a privacy erasure request). To stop emailing someone but keep the record, use vision6_update_contact with email_subscribed=false instead. Pass confirm=true only after the user agreed to the deletion. DELETE /lists/{list_id}/contacts?id={contact_id}.
| Argument | Type | Description |
|---|---|---|
| confirm* | boolean | Must be true: you confirm the user asked to permanently delete this contact. |
| list_id* | integer | |
| contact_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"list_id",
"contact_id",
"confirm"
],
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: you confirm the user asked to permanently delete this contact."
},
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}Details of the API key this server uses: the scopes it grants (e.g. list.view, contact.create, message.edit, report.view) and its creation/expiry time. Use it to see why a request is refused. GET /v1/.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One contact by id within a list, with all fields. GET /lists/{list_id}/contacts/{contact_id}.
| Argument | Type | Description |
|---|---|---|
| fields | string | Optional comma separated list of response fields to return, e.g. id,email. |
| list_id* | integer | |
| contact_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"list_id",
"contact_id"
],
"properties": {
"fields": {
"type": "string",
"pattern": "^[A-Za-z0-9_,]+$",
"maxLength": 500,
"description": "Optional comma separated list of response fields to return, e.g. id,email."
},
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}One contact list by id. GET /lists/{list_id}.
| Argument | Type | Description |
|---|---|---|
| list_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"list_id"
],
"properties": {
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}One message by id. With include_content=true the HTML and plain-text body is included. GET /messages/{message_id}.
| Argument | Type | Description |
|---|---|---|
| message_id* | integer | |
| include_content | boolean | Also return the message body (body_html, body_text). Can be large. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message_id"
],
"properties": {
"message_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"include_content": {
"type": "boolean",
"description": "Also return the message body (body_html, body_text). Can be large."
}
}
}The account's default from name, from address and reply-to, applied to new email messages when you omit them. GET /message-sender-defaults.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One send report by id with all delivery and engagement counts, per-link click counts and recipient domain distribution. Optionally includes A/B test results and social click/share statistics. GET /reports/{report_id}.
| Argument | Type | Description |
|---|---|---|
| fields | string | Optional comma separated list of response fields to return, e.g. id,email. |
| report_id* | integer | |
| include_social | boolean | Include Facebook/Twitter/LinkedIn click and share statistics. |
| include_ab_test | boolean | Include A/B test variant statistics (only for A/B test reports). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"report_id"
],
"properties": {
"fields": {
"type": "string",
"pattern": "^[A-Za-z0-9_,]+$",
"maxLength": 500,
"description": "Optional comma separated list of response fields to return, e.g. id,email."
},
"report_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"include_social": {
"type": "boolean",
"description": "Include Facebook/Twitter/LinkedIn click and share statistics."
},
"include_ab_test": {
"type": "boolean",
"description": "Include A/B test variant statistics (only for A/B test reports)."
}
}
}One transactional group by id with its delivery statistics. GET /transactional-groups/{group_id}.
| Argument | Type | Description |
|---|---|---|
| group_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"group_id"
],
"properties": {
"group_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}List the contacts of one list: email, mobile, subscribed/blocked status, active flag, double opt-in and the list's custom fields. Filter by email, mobile, active flag, creation/modification time or any custom field (`filters`, e.g. {"city":"Brisbane"} or {"source:ne":"promo"}). GET /lists/{list_id}/contacts.
| Argument | Type | Description |
|---|---|---|
| string | Exact email address. | |
| limit | integer | Results per page, 1-1000 (default 50). |
| fields | string | Optional comma separated list of response fields to return, e.g. id,email. |
| mobile | string | Exact mobile number (international format without +). |
| offset | integer | Skip this many results (default 0). Pass the previous reply's next_offset. |
| filters | object | Custom field filters: key = lowercase field key, optionally with :ne or :in (comma separated values), e.g. {"state:in":"qld,nsw"}. |
| list_id* | integer | |
| is_active | boolean |
List the account's folders (list folders and message folders) with id, name, type and size. Needed for the folder id when creating a list or message. GET /folders.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| type | string | Folder type, e.g. list or message. |
| limit | integer | Results per page, 1-1000 (default 50). |
| offset | integer | Skip this many results (default 0). Pass the previous reply's next_offset. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 255
},
"type": {
"type": "string",
"maxLength": 50,
"description": "Folder type, e.g. list or message."
},
"limit": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 50).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Skip this many results (default 0). Pass the previous reply's next_offset."
}
}
}The fields (columns) of a contact list: label, type (email, mobile, text, dropdown, date ...), allowed values and whether they are mandatory. The lowercase underscore form of a label is the key used for contact values and filters. GET /lists/{list_id}/fields.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-1000 (default 50). |
| offset | integer | Skip this many results (default 0). Pass the previous reply's next_offset. |
| list_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"list_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 50).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Skip this many results (default 0). Pass the previous reply's next_offset."
},
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}List the account's contact lists with id, name, creation/modification time and notification settings. Filter by exact name. GET /lists.
| Argument | Type | Description |
|---|---|---|
| name | string | Exact list name. |
| limit | integer | Results per page, 1-1000 (default 50). |
| offset | integer | Skip this many results (default 0). Pass the previous reply's next_offset. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"description": "Exact list name."
},
"limit": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 50).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Skip this many results (default 0). Pass the previous reply's next_offset."
}
}
}List saved email and SMS messages (templates and campaigns) with id, type, name, subject and sender. Filter by type or exact name/subject. GET /messages.
| Argument | Type | Description |
|---|---|---|
| name | string | Exact message name. |
| type | string | |
| limit | integer | Results per page, 1-1000 (default 50). |
| offset | integer | Skip this many results (default 0). Pass the previous reply's next_offset. |
| subject | string | Exact subject. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"description": "Exact message name."
},
"type": {
"enum": [
"email",
"sms"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 50).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Skip this many results (default 0). Pass the previous reply's next_offset."
},
"subject": {
"type": "string",
"maxLength": 998,
"description": "Exact subject."
}
}
}Send reports for campaigns, newest first: message name, type, sent, bounced, opened, unique clicks, unsubscribes, complaints, total recipients and last sent time. Filter by message, type, test sends or creation time. Click and domain breakdowns are only returned when requested via `fields`. GET /reports.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-1000 (default 50). |
| fields | string | Optional comma separated list of response fields to return, e.g. id,email. |
| offset | integer | Skip this many results (default 0). Pass the previous reply's next_offset. |
| is_test | boolean | false = only real campaign sends, true = only test sends. |
| message_id | integer | |
| message_type | string | |
| created_since | string | Only reports created at or after this UTC timestamp. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 50).",
"exclusiveMinimum": 0
},
"fields": {
"type": "string",
"pattern": "^[A-Za-z0-9_,]+$",
"maxLength": 500,
"description": "Optional comma separated list of response fields to return, e.g. id,email."
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Skip this many results (default 0). Pass the previous reply's next_offset."
},
"is_test": {
"type": "boolean",
"description": "false = only real campaign sends, true = only test sends."
},
"message_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"message_type": {
"enum": [
"email",
"sms"
],
"type": "string"
},
"created_since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$",
"description": "Only reports created at or after this UTC timestamp."
}
}
}The contacts one message was sent to, with send time, first/last open time and open type (html, text, sms or not_opened). Use it to see who opened a campaign. GET /messages/{message_id}/sent-contacts.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page, 1-1000 (default 50). |
| offset | integer | Skip this many results (default 0). Pass the previous reply's next_offset. |
| list_id | integer | |
| open_type | string | |
| report_id | integer | Only sends belonging to this report. |
| contact_id | integer | |
| message_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 50).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Skip this many results (default 0). Pass the previous reply's next_offset."
},
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"open_type": {
"enum": [
"not_opened",
"html",
"text",
"sms"
],
"type": "string"
},
"report_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only sends belonging to this report.",
"exclusiveMinimum": 0
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"message_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}Transactional send groups (one per group name used with vision6_send_transactional) with sent, failed, bounced, delivered, opened, clicked and unsubscribed counts. GET /transactional-groups.
| Argument | Type | Description |
|---|---|---|
| name | string | Exact group name. |
| type* | string | Group type (the reference marks it required; call once per type). |
| limit | integer | Results per page, 1-1000 (default 50). |
| offset | integer | Skip this many results (default 0). Pass the previous reply's next_offset. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"description": "Exact group name."
},
"type": {
"enum": [
"email",
"sms"
],
"type": "string",
"description": "Group type (the reference marks it required; call once per type)."
},
"limit": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 50).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Skip this many results (default 0). Pass the previous reply's next_offset."
}
}
}WRITE: SENDS REAL EMAIL OR SMS to the recipients immediately (asynchronously) and USES ACCOUNT SENDING CREDITS. It cannot be recalled. Up to 100 recipients per call, each identified by exactly one of contact_id, email or mobile, plus optional personalisation values (wildcards %%key%% in the body). Either send a saved message (message_id) or custom content (subject/body_html/body_text, and for SMS body_text + from_address). Unsubscribed addresses are skipped. Email always needs list_id. Results appear in the transactional group (vision6_get_transactional_group). The account owner's email must be confirmed in Vision6 first. Pass confirm_send=true only after the user approved these recipients and this content. POST /transactional-sends.
| Argument | Type | Description |
|---|---|---|
| type* | string | |
| list_id | integer | List the recipients belong to (required for email; optional for SMS). |
| subject | string | Custom email subject (without message_id). |
| group_id | integer | |
| reply_to | string | |
| body_html | string | Custom HTML body (email, without message_id). |
| body_text | string |
WRITE: change one contact's email, mobile, custom field values, subscription status (email_subscribed/mobile_subscribed=false unsubscribes), active flag or double opt-in. Only the fields you pass change. May trigger 'contact updated' automations. Returns the updated contact. PATCH /lists/{list_id}/contacts/{contact_id}.
| Argument | Type | Description |
|---|---|---|
| string | Email address (the list must have an Email field). | |
| fields | object | Custom list field values, keyed by the lowercase key of the field name (underscores for spaces/dashes, e.g. first_name). Use vision6_list_list_fields to see the list's fields. |
| mobile | string | Mobile number in international format without + or spaces (Australia: 61400000009). The list must have a Mobile field. |
| list_id* | integer | |
| is_active | boolean | The contact's active status. |
| contact_id* | integer | |
| double_opt_in | boolean | true marks the contact as already confirmed (sets the double opt-in time to now). It cannot be reset to false afterwards. |
WRITE: change a saved message's name, subject, sender, folder or body. Only the fields you pass change. It does not send anything. PATCH /messages/{message_id}.
| Argument | Type | Description |
|---|---|---|
| name | string | Display name of the message in Vision6. |
| subject | string | Email subject line (required for email). Supports wildcards like %%first_name**there%%. |
| reply_to | string | |
| folder_id | integer | Message folder id (see vision6_list_folders with type message). Omit to use the account's first message folder. |
| from_name | string | |
| message_id* | integer | |
| content_sms | string | SMS text (required for an sms message; keep it near 500 characters). |
| is_template | boolean | Mark the message as reusable starter content. |
| content_html | string |
| remove_unsubscribers | string | Skip addresses that are on the unsubscribers list: any (account-wide), list (this list), none (default: create everyone). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"list_id"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Email address (the list must have an Email field)."
},
"fields": {
"type": "object",
"description": "Custom list field values, keyed by the lowercase key of the field name (underscores for spaces/dashes, e.g. first_name). Use vision6_list_list_fields to see the list's fields.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 10000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"mobile": {
"type": "string",
"pattern": "^\\d{6,15}$",
"description": "Mobile number in international format without + or spaces (Australia: 61400000009). The list must have a Mobile field."
},
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"is_active": {
"type": "boolean",
"description": "The contact's active status."
},
"double_opt_in": {
"type": "boolean",
"description": "true marks the contact as already confirmed (sets the double opt-in time to now). It cannot be reset to false afterwards."
},
"email_subscribed": {
"type": "boolean",
"description": "Whether the email address is subscribed to receive messages."
},
"mobile_subscribed": {
"type": "boolean",
"description": "Whether the mobile number is subscribed to receive messages."
},
"remove_unsubscribers": {
"enum": [
"none",
"list",
"any"
],
"type": "string",
"description": "Skip addresses that are on the unsubscribers list: any (account-wide), list (this list), none (default: create everyone)."
}
}
}| is_template |
| boolean |
| Mark the message as reusable starter content. |
| content_html | string | HTML body (email types html and plain-html; raw_html accepts it or content_html_raw). |
| content_text | string | Plain-text body (email types plain and plain-html). |
| from_address | string | Sender address. For email it must be a verified address/domain in the account. Omit to use the account's saved default (see vision6_get_message_sender_defaults). |
| is_responsive | boolean | Responsive HTML flag (email). |
| content_html_raw | string | Raw HTML document (email type raw_html). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Display name of the message in Vision6."
},
"type": {
"enum": [
"email",
"sms"
],
"type": "string"
},
"subject": {
"type": "string",
"maxLength": 998,
"minLength": 1,
"description": "Email subject line (required for email). Supports wildcards like %%first_name**there%%."
},
"reply_to": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254
},
"folder_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Message folder id (see vision6_list_folders with type message). Omit to use the account's first message folder.",
"exclusiveMinimum": 0
},
"from_name": {
"type": "string",
"maxLength": 255
},
"email_type": {
"enum": [
"plain",
"plain-html",
"html",
"raw_html"
],
"type": "string",
"description": "Required for email."
},
"content_sms": {
"type": "string",
"maxLength": 2000,
"description": "SMS text (required for an sms message; keep it near 500 characters)."
},
"is_template": {
"type": "boolean",
"description": "Mark the message as reusable starter content."
},
"content_html": {
"type": "string",
"maxLength": 2000000,
"description": "HTML body (email types html and plain-html; raw_html accepts it or content_html_raw)."
},
"content_text": {
"type": "string",
"maxLength": 200000,
"description": "Plain-text body (email types plain and plain-html)."
},
"from_address": {
"type": "string",
"maxLength": 254,
"description": "Sender address. For email it must be a verified address/domain in the account. Omit to use the account's saved default (see vision6_get_message_sender_defaults)."
},
"is_responsive": {
"type": "boolean",
"description": "Responsive HTML flag (email)."
},
"content_html_raw": {
"type": "string",
"maxLength": 2000000,
"description": "Raw HTML document (email type raw_html)."
}
}
}| created_since | string | Only contacts created at or after this UTC timestamp. |
| modified_since | string | Only contacts changed at or after this UTC timestamp. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"list_id"
],
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"description": "Exact email address."
},
"limit": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 50).",
"exclusiveMinimum": 0
},
"fields": {
"type": "string",
"pattern": "^[A-Za-z0-9_,]+$",
"maxLength": 500,
"description": "Optional comma separated list of response fields to return, e.g. id,email."
},
"mobile": {
"type": "string",
"maxLength": 30,
"description": "Exact mobile number (international format without +)."
},
"offset": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Skip this many results (default 0). Pass the previous reply's next_offset."
},
"filters": {
"type": "object",
"description": "Custom field filters: key = lowercase field key, optionally with :ne or :in (comma separated values), e.g. {\"state:in\":\"qld,nsw\"}.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"maxLength": 500
}
},
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"is_active": {
"type": "boolean"
},
"created_since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$",
"description": "Only contacts created at or after this UTC timestamp."
},
"modified_since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$",
"description": "Only contacts changed at or after this UTC timestamp."
}
}
}| Custom plain-text body (email or SMS, without message_id). |
| from_name | string |
| group_name | string | Name of the transactional group that collects the results (created if new). One of group_name or group_id is required. |
| message_id | integer | A saved message to send. Do not combine with custom content. |
| recipients* | array |
| confirm_send* | boolean | Must be true: you confirm the user approved sending this email/SMS now (it cannot be recalled and uses credits). |
| from_address | string | Verified sender email address, or the sender mobile number for SMS. |
| unsubscribe_type | string | SMS with custom content only: how recipients can opt out. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"recipients",
"confirm_send"
],
"properties": {
"type": {
"enum": [
"email",
"sms"
],
"type": "string"
},
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "List the recipients belong to (required for email; optional for SMS).",
"exclusiveMinimum": 0
},
"subject": {
"type": "string",
"maxLength": 998,
"description": "Custom email subject (without message_id)."
},
"group_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"reply_to": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254
},
"body_html": {
"type": "string",
"maxLength": 2000000,
"description": "Custom HTML body (email, without message_id)."
},
"body_text": {
"type": "string",
"maxLength": 200000,
"description": "Custom plain-text body (email or SMS, without message_id)."
},
"from_name": {
"type": "string",
"maxLength": 255
},
"group_name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Name of the transactional group that collects the results (created if new). One of group_name or group_id is required."
},
"message_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "A saved message to send. Do not combine with custom content.",
"exclusiveMinimum": 0
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"data": {
"type": "object",
"description": "Personalisation values by wildcard key (lowercase letters, digits, underscores).",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 10000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254
},
"mobile": {
"type": "string",
"pattern": "^\\d{6,15}$"
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
},
"maxItems": 100,
"minItems": 1
},
"confirm_send": {
"type": "boolean",
"const": true,
"description": "Must be true: you confirm the user approved sending this email/SMS now (it cannot be recalled and uses credits)."
},
"from_address": {
"type": "string",
"maxLength": 254,
"description": "Verified sender email address, or the sender mobile number for SMS."
},
"unsubscribe_type": {
"enum": [
"none",
"word",
"link"
],
"type": "string",
"description": "SMS with custom content only: how recipients can opt out."
}
}
}| email_subscribed |
| boolean |
| Whether the email address is subscribed to receive messages. |
| mobile_subscribed | boolean | Whether the mobile number is subscribed to receive messages. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"list_id",
"contact_id"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Email address (the list must have an Email field)."
},
"fields": {
"type": "object",
"description": "Custom list field values, keyed by the lowercase key of the field name (underscores for spaces/dashes, e.g. first_name). Use vision6_list_list_fields to see the list's fields.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 10000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"mobile": {
"type": "string",
"pattern": "^\\d{6,15}$",
"description": "Mobile number in international format without + or spaces (Australia: 61400000009). The list must have a Mobile field."
},
"list_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"is_active": {
"type": "boolean",
"description": "The contact's active status."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"double_opt_in": {
"type": "boolean",
"description": "true marks the contact as already confirmed (sets the double opt-in time to now). It cannot be reset to false afterwards."
},
"email_subscribed": {
"type": "boolean",
"description": "Whether the email address is subscribed to receive messages."
},
"mobile_subscribed": {
"type": "boolean",
"description": "Whether the mobile number is subscribed to receive messages."
}
}
}| HTML body (email types html and plain-html; raw_html accepts it or content_html_raw). |
| content_text | string | Plain-text body (email types plain and plain-html). |
| from_address | string | Sender address. For email it must be a verified address/domain in the account. Omit to use the account's saved default (see vision6_get_message_sender_defaults). |
| is_responsive | boolean | Responsive HTML flag (email). |
| content_html_raw | string | Raw HTML document (email type raw_html). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Display name of the message in Vision6."
},
"subject": {
"type": "string",
"maxLength": 998,
"minLength": 1,
"description": "Email subject line (required for email). Supports wildcards like %%first_name**there%%."
},
"reply_to": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254
},
"folder_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Message folder id (see vision6_list_folders with type message). Omit to use the account's first message folder.",
"exclusiveMinimum": 0
},
"from_name": {
"type": "string",
"maxLength": 255
},
"message_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"content_sms": {
"type": "string",
"maxLength": 2000,
"description": "SMS text (required for an sms message; keep it near 500 characters)."
},
"is_template": {
"type": "boolean",
"description": "Mark the message as reusable starter content."
},
"content_html": {
"type": "string",
"maxLength": 2000000,
"description": "HTML body (email types html and plain-html; raw_html accepts it or content_html_raw)."
},
"content_text": {
"type": "string",
"maxLength": 200000,
"description": "Plain-text body (email types plain and plain-html)."
},
"from_address": {
"type": "string",
"maxLength": 254,
"description": "Sender address. For email it must be a verified address/domain in the account. Omit to use the account's saved default (see vision6_get_message_sender_defaults)."
},
"is_responsive": {
"type": "boolean",
"description": "Responsive HTML flag (email)."
},
"content_html_raw": {
"type": "string",
"maxLength": 2000000,
"description": "Raw HTML document (email type raw_html)."
}
}
}