openapi: 3.2.0 info: title: Splio Contact API version: 1.0.0 description: 'Operations tagged Contact across 2 of this provider''s published API definitions: splio-doc-swagger2.json, splio-customer-platform-openapi.json. Each path carries the servers of the definition it was published in.' servers: - url: https://api.splio.com - url: http://api.splio.com tags: - name: Contact paths: /data/contacts: get: summary: List & search contacts description: Get the list of contacts and search for contacts parameters: - name: per_page in: query required: false description: Number of items displayed per page. schema: type: integer default: 20 maximum: 1000 minimum: 1 - name: page_number in: query required: false description: Page number. schema: type: integer default: 1 minimum: 1 - name: fields in: query required: false description: Use a combination of the field, the operator and the searched value. It will return contacts matched to your search. fields available on search in contacts are 'unique key', 'firstname', 'lastname', 'creation date', 'language', 'email', 'cellphone', 'custom fields' (using cXX with XX being the custom field ID) and 'card code' (with loyalty option). style: form explode: true schema: type: array format: application/json items: example: - key: lastname operator: equal value: Doe properties: key: description: search fields, in contacts type: string enum: - key - firstname - lastname - creation_date - language - email - cellphone - card code operator: description: operator for search operators are limited by the type of value expected type: string enum: - is - after - before - contains - ends - equal - greater - isnot - lower - notequal - starts value: type: string type: object responses: '200': description: the retrieval of contacts search and their subscriptions and loyalty informations. content: application/json: example: count_element: 2 current_page: 1 per_page: 50 sort: [] elements: - id: 1 lastname: Doe firstname: John email: jdoe@personal.com cellphone: '' date_added: '2019-01-03' language: fr custom_fields: - id: 0 name: civility value: mr data_type: '' lists: - id: 50 name: List1 loyalty: [] - id: 2 lastname: Doe firstname: Jane email: janedoe@personal.com cellphone: '' creation_date: '2015-03-01' language: fr custom_fields: - id: 0 name: civility value: mme data_type: '' lists: - id: 51 name: List2 loyalty: - card_code: '33010000001' id_program: '1' '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] post: summary: Create a contact description: Create a contact. responses: '201': description: contact creation is successful. content: application/json: example: id: 1 lastname: Doe firstname: John email: jdoe@personal.com cellphone: '' creation_date: '2018-01-24 15:00:00' language: fr custom_fields: - id: 0 name: civility value: mr data_type: '' lists: - id: 50 name: List1 - id: 51 name: List2 '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] requestBody: content: application/json: schema: description: Following the configuration set on the universe, the mandatory field should email OR cellphone OR unique_key properties: lastname: example: Doe type: string firstname: example: John type: string creation_date: description: 'This date of creation of this contact, will be used for trigger campaigns, Ex: Welcome email. Warning the timezone set for this date is the user api timezone and not the system timezone.' example: '2018-01-24 15:00:00' type: string pattern: ^\d\d\d\d-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[01]) (00|[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])$ language: description: en, fr, it, es, ... example: en type: string email: example: jdoe@mysite.com type: string cellphone: example: '+331122334455' type: string lists: example: - id: 25 name: newsletter shoes items: properties: id: type: integer name: type: string type: object type: array double_optin: description: "[Optional] **Require subscribers to confirm their subscription by sending a confirmation request.**
\n
\n **Legacy Version**
\n - `message`: id of the message that must be sent. This message must contain a link to $confirmUrl$
\n - `reminder`: id of the reminder message. This message must contain $confirmUrl$ as well.
\n - `reminder_delay`: if you want a reminder to be sent, specify the number of days between the first message and the reminder.
\n ```\n {\n \"message\": \"aw94xefgh\",\n \"reminder\": \"94was76ef\",\n \"reminder_delay\": 34\n }\n ```\n
\n
\n **Splio Edition 2025**
\n - `enabled`: Enable double optin
\n ```\n {\n \"enabled\": true\n }```" type: object custom_fields: description: Custom fields settings example: - name: foo value: bar - name: foo2 value: bar2 items: properties: id: type: integer name: type: string value: description: The custom field value, can be an integer, a float, a string or a date at format YYYY-MM-DD HH:MM:SS, depending on the configuration of the custom field type: string type: object type: array tracking_consent: description: '[Optional] Track consent events for this contact. Each entry records a consent state change. The date is interpreted in the universe timezone.' example: - channel: email scope: open enabled: true date: '2026-07-01 10:00:00' items: properties: channel: description: Consent channel. Currently only 'email' is supported. example: email type: string scope: description: Consent scope. Currently only 'open' is supported. example: open type: string enabled: description: 'Consent state: true = opted in, false = opted out.' example: true type: boolean source: description: '[Optional] Source of the consent action.' example: shopify type: string date: description: '[Optional] Date of the consent action in format YYYY-MM-DD HH:mm:ss (universe timezone). Defaults to current date if not provided.' example: '2026-07-01 10:00:00' type: string type: object type: array type: object description: Individual data. required: true servers: - url: https://api.splio.com - url: http://api.splio.com /data/contacts/bulk: post: summary: Create bulk of contacts description: Create bulk of contacts (max 1000). responses: '207': description: contacts creation is successful. content: application/json: example: time: 59 errors: 1 items: - contact_id: hhogan@gmail.com code: 400 description: Contact with unique key hhogan@gmail.com already exists - contact_id: jdoe@msn.com code: 201 description: '' '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] requestBody: content: application/json: schema: properties: contacts: items: description: Following the configuration set on the universe, the mandatory field should email OR cellphone OR unique_key properties: lastname: example: Doe type: string firstname: example: John type: string creation_date: description: 'This date of creation of this contact, will be used for trigger campaigns. Ex: Welcome email. Warning the timezone set for this date is the user api timezone and not the system timezone.' example: '2018-01-24 15:00:00' type: string pattern: ^\d\d\d\d-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[01]) (00|[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])$ language: description: en, fr, it, es, ... example: en type: string email: example: jdoe@mysite.com type: string cellphone: example: '+331122334455' type: string lists: example: - id: 25 name: newsletter shoes items: properties: id: type: integer name: type: string type: object type: array double_optin: description: "[Optional] **Require subscribers to confirm their subscription by sending a confirmation request.**
\n
\n **Legacy Version**
\n - `message`: id of the message that must be sent. This message must contain a link to $confirmUrl$
\n - `reminder`: id of the reminder message. This message must contain $confirmUrl$ as well.
\n - `reminder_delay`: if you want a reminder to be sent, specify the number of days between the first message and the reminder.
\n ```\n {\n \"message\": \"aw94xefgh\",\n \"reminder\": \"94was76ef\",\n \"reminder_delay\": 34\n }\n ```\n
\n
\n **Splio Edition 2025**
\n - `enabled`: Enable double optin
\n ```\n {\n \"enabled\": true\n }```" type: object custom_fields: example: - name: foo value: bar - name: foo2 value: bar2 items: properties: id: type: integer name: type: string value: description: The custom field value, can be an integer, a float, a string or a date at format YYYY-MM-DD HH:MM:SS, depending on the configuration of the custom field type: string type: object type: array type: object type: array type: object description: Contacts data. required: true delete: summary: Delete bulk of contacts description: Asynchronous delete bulk of contacts (max 1000). responses: '207': description: contacts deletion is successful. content: application/json: example: time: 59 errors: 1 items: - contact_id: jdoe@yahoo.com code: 404 description: Contact not found for id jdoe@gmail.com. - contact_id: jdoe@msn.com code: 204 description: '' '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] requestBody: content: application/json: schema: properties: contacts: example: - jdoe@gmail.com - jane@gmail.com - martin@gmail.com - pierce@gmail.com items: description: an array of all contact unique keys to remove, the number of elements accepted is between 1 and 1000 type: string type: array type: object description: contacts unique keys that will be deleted. required: true servers: - url: https://api.splio.com - url: http://api.splio.com /data/contacts/{id}/activities: get: summary: Get a contact's activities description: Get a contact activities based on its unique_key. parameters: - name: id in: path required: true description: Contact's unique key. schema: type: string - name: channel in: query required: false description: Activity channel. By default all channels are returned schema: type: string enum: - email - sms - x_channel - fwd_email - name: per_page in: query required: false description: Number of items displayed per page. schema: type: integer default: 20 maximum: 1000 minimum: 1 - name: page_number in: query required: false description: Page number. schema: type: integer default: 1 minimum: 1 responses: '200': description: Contact's activity retrieval is successful. content: application/json: example: count_element: 1 current_page: 1 per_page: 50 elements: - channel: email contact: null channel_details_id: 6CsVXxX4D channel_details_name: Winter's VIP Campaign event_type: system event: opened value_date: '2019-08-29 00:00:00' source_id: 6CsVatjvl source_name: '[Template] 20% CGX' source_type: standard source_date: '2020-12-23 11:58:16' '404': description: Contact not found. content: application/json: example: status: 404 errors: - error_key: ext_id error: wrong_value error_description: Individual not found for given identifier. '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] servers: - url: https://api.splio.com - url: http://api.splio.com /data/contacts/optout: post: summary: Optout contacts description: Optout contacts from all the lists (max 1000). responses: '207': description: contacts optout is successful. content: application/json: example: time: 59 errors: 1 items: - contact_id: jdoe@yahoo.com code: 404 description: Contact not found for id jdoe@gmail.com. - contact_id: jdoe@msn.com code: 200 description: '' '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] requestBody: content: application/json: schema: properties: contacts: example: - jdoe@gmail.com - jane@gmail.com - martin@gmail.com - pierce@gmail.com items: description: an array of all contact unique keys to optout, the number of elements accepted is between 1 and 1000 type: string type: array type: object description: contacts unique keys that will be opted out. required: true servers: - url: https://api.splio.com - url: http://api.splio.com /data/v1/lists: get: summary: List membership lists description: Get the list of lists. parameters: - name: per_page in: query required: false description: Number of items displayed per page. schema: type: integer default: 50 maximum: 1000 minimum: 1 - name: page_number in: query required: false description: Page number. schema: type: integer default: 1 minimum: 1 responses: '200': description: Lists retrieval is successful. content: application/json: example: count_element: 1 current_page: 1 per_page: 50 sort: id: desc elements: - id: 1 name: news shoes members: 4000 nb_emails: 3700 nb_sms: 700 is_displayed_by_default: true is_selected_by_default: false '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] servers: - url: https://api.splio.com - url: http://api.splio.com /data/contacts/{id}/lists/subscribe: post: summary: Subscribe a contact to list(s) description: Subscribe a contact to one or more lists. parameters: - name: id in: path required: true description: Contact unique key. schema: type: string pattern: .+ responses: '200': description: Contact has been sucessfully subscribed to the list(s). content: application/json: example: lastname: Doe firstname: John email: jdoe@splio.com cellphone: 0612345678 creation_date: '2019-01-03 09:00:00' language: fr custom_fields: - id: 0 name: My custom field 1 value: value1 data_type: string lists: - id: 50 name: Liste1 - id: 51 name: Liste2 '404': description: Contact not found. content: application/json: example: status: 404 errors: - error_key: id error: wrong_value error_description: Contact not found for given identifier. '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] requestBody: content: application/json: schema: required: - list_ids properties: list_ids: items: type: integer type: array type: object description: Sucessful subscription to list(s). required: true servers: - url: https://api.splio.com - url: http://api.splio.com /data/contacts/{id}/lists/unsubscribe: post: summary: Unsubscribe a contact to list(s) description: Unsubscribe a contact from one or more lists. parameters: - name: id in: path required: true description: Contact unique key. schema: type: string pattern: .+ responses: '200': description: Contact has been sucessfully unsubscribed from the list(s). content: application/json: example: lastname: Doe firstname: John email: jdoe@splio.com cellphone: 0612345678 creation_date: '2019-01-03 09:00:00' language: fr custom_fields: - id: 0 name: My custom field 1 value: value1 data_type: string lists: - id: 51 name: Liste2 '404': description: Contact not found. content: application/json: example: status: 404 errors: - error_key: id error: wrong_value error_description: Contact not found for given identifier. '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] requestBody: content: application/json: schema: required: - list_ids properties: list_ids: items: type: integer type: array type: object description: Sucessful unsubscription from list(s). required: true servers: - url: https://api.splio.com - url: http://api.splio.com /data/contacts/{id}/orders/abandoned: get: summary: Get a contact's abandoned carts description: Get a contact's abandoned carts formatted as a list. parameters: - name: id in: path required: true description: Individual external identifier. schema: type: string pattern: .+ - name: per_page in: query required: false description: Number of items displayed per page. schema: type: integer default: 50 maximum: 1000 minimum: 1 - name: page_number in: query required: false description: Page number. schema: type: integer default: 1 minimum: 1 - name: fields in: query required: false description: Use a combination of field, operator and searched value. It will return carts that matched your search. Fields available on search in carts are 'external_id', 'shipping_amount', 'discount_amount', 'total_price', 'tax_amount', 'currency', 'sales_person', 'created_at', 'ordered_at' and custom fields numbers (0, 1, 2, ...) schema: type: array items: example: - key: external_id operator: equal value: CGX00000945842 properties: key: description: search fields, in contacts type: string enum: - external_id - shipping_amount - discount_amount - total_price - tax_amount - currency - sales_person - created_at - ordered_at operator: description: operator for search operators are limited by the type of value expected type: string enum: - is - after - before - contains - ends - equal - greater - isnot - lower - notequal - starts value: type: string type: object responses: '200': description: Abandoned carts retrieval is successful. content: application/json: example: count_element: 2 current_page: 1 sort: id: ASC elements: - external_id: 3 created_at: '2017-12-26 10:09:12' ordered_at: null shipping_amount: 15.24 discount_amount: 0 total_price: 1337.42 tax_amount: 0.42 currency: EUR sales_person: John Doe store: null custom_fields: - id: 0 name: id_mail value: S2G1190284746300227 - id: 1 name: id_lien value: N1190284R746383111 '404': description: Contact not found. content: application/json: example: status: 404 errors: - error_key: id error: wrong_value error_description: Contact not found for given identifier. '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] servers: - url: https://api.splio.com - url: http://api.splio.com /data/contacts/{id}/orders: get: summary: Get a contact's orders description: Get a contact's orders formatted as a list. parameters: - name: id in: path required: true description: Individual external identifier. schema: type: string pattern: .+ - name: per_page in: query required: false description: Number of items displayed per page. schema: type: integer default: 50 maximum: 1000 minimum: 1 - name: page_number in: query required: false description: Page number. schema: type: integer default: 1 minimum: 1 - name: fields in: query required: false description: Use a combination of field, operator and searched value. It will return orders that matched your search. Fields available on search in orders are 'external_id', 'shipping_amount', 'discount_amount', 'total_price', 'tax_amount', 'currency', 'sales_person', 'created_at', 'ordered_at' and custom fields numbers (0, 1, 2, ...) schema: type: array items: example: - key: external_id operator: equal value: CGX00000945842 properties: key: description: search fields, in contacts type: string enum: - external_id - shipping_amount - discount_amount - total_price - tax_amount - currency - sales_person - created_at - ordered_at operator: description: operator for search operators are limited by the type of value expected type: string enum: - is - after - before - contains - ends - equal - greater - isnot - lower - notequal - starts value: type: string type: object responses: '200': description: Orders retrieval is successful. content: application/json: example: count_element: 2 current_page: 1 sort: id: desc elements: - external_id: 3 created_at: '2017-12-26 10:09:12' ordered_at: '2017-12-26 10:09:12' shipping_amount: 15.24 discount_amount: 0 total_price: 1337.42 tax_amount: 0.42 currency: EUR sales_person: John Doe store: external_id: '5' name: champs élysée custom_fields: - id: 0 name: id_mail value: S2G1190284746300227 - id: 1 name: id_lien value: N1190284R746383111 '404': description: Contact not found. content: application/json: example: status: 404 errors: - error_key: id error: wrong_value error_description: Contact not found for given identifier. '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] servers: - url: https://api.splio.com - url: http://api.splio.com /data/contacts/{id}/products: get: summary: Get a contact's products description: Get a contact's products formatted as a list. parameters: - name: id in: path required: true description: Individual external identifier. schema: type: string pattern: .+ - name: per_page in: query required: false description: Number of items displayed per page. schema: type: integer default: 50 maximum: 1000 minimum: 1 - name: page_number in: query required: false description: Page number. schema: type: integer default: 1 minimum: 1 - name: fields in: query required: false description: Use a combination of field, operator and searched value. It will return products that matched your search. Fields available on search in products are 'external_id', 'name', 'brand' and 'price' schema: type: array items: example: - key: name operator: equal value: Gloss properties: key: description: search fields, in contacts type: string enum: - external_id - name - brand - price operator: description: operator for search operators are limited by the type of value expected type: string enum: - is - after - before - contains - ends - equal - greater - isnot - lower - notequal - starts value: type: string type: object responses: '200': description: Products retrieval is successful. content: application/json: example: count_element: 1 current_page: 1 per_page: 50 sort: id: desc elements: - external_id: '1' name: Product Name description: Description brand: Brand category: Product category price: 20 created_at: '2019-02-15 12:55:00' updated_at: '2019-02-22 17:12:15' custom_fields: - id: 0 name: custom field 0 value: Valeur 0 data_type: text - id: 1 name: custom field 1 value: '' data_type: double '404': description: Contact not found. content: application/json: example: status: 404 errors: - error_key: id error: wrong_value error_description: Contact not found for given identifier. '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] servers: - url: https://api.splio.com - url: http://api.splio.com /data/contacts/{id}/stores: get: summary: Get a contact's stores description: Get a contact's stores formatted as a list. parameters: - name: id in: path required: true description: Individual external identifier. schema: type: string pattern: .+ - name: per_page in: query required: false description: Number of items displayed per page. schema: type: integer default: 50 maximum: 1000 minimum: 1 - name: page_number in: query required: false description: Page number. schema: type: integer default: 1 minimum: 1 - name: fields in: query required: false description: Use a combination of field, operator and searched value. It will return stores that matched your search. Fields available on search in stores are 'external_id', 'name', 'online', 'store_type', 'manager' and custom fields numbers (0, 1, 2, ...) schema: type: array items: example: - key: name operator: equal value: Retail Opera properties: key: description: search fields, in contacts type: string enum: - external_id - name - online - store_type - manager operator: description: operator for search operators are limited by the type of value expected type: string enum: - is - after - before - contains - ends - equal - greater - isnot - lower - notequal - starts value: type: string type: object responses: '200': description: Get Stores List. content: application/json: example: count_element: 1 current_page: 1 per_page: 50 sort: id: desc elements: - external_id: '9' name: Mystore 9 online: false store_type: '' manager: '' created_at: '2019-02-15 12:55:00' updated_at: '2019-02-22 17:12:15' custom_fields: - id: 0 name: custom field 0 value: Valeur 0 data_type: text - id: 1 name: custom field 1 value: '' data_type: double '404': description: Contact not found. content: application/json: example: status: 404 errors: - error_key: id error: wrong_value error_description: Contact not found for given identifier. '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] servers: - url: https://api.splio.com - url: http://api.splio.com /data/contacts/{individual_id}: get: summary: Get a contact description: Get a contact. parameters: - name: individual_id in: path required: true description: contact unique key. schema: type: string pattern: .+ - name: key in: query required: false description: Key used to fetch contact (default unique_key) schema: type: string enum: - unique_key - internal_id responses: '200': description: contact retrieval is successful. content: application/json: example: id: 1 lastname: Doe firstname: John email: jdoe@personal.com cellphone: '' creation_date: '2019-01-03' language: fr custom_fields: - id: 0 name: civility value: mr data_type: '' loyalty: - card_code: jdoe_cardcode id_program: '1' lists: - id: 50 name: List1 - id: 51 name: List2 '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] patch: summary: Edit a contact description: Edit a contact. parameters: - name: individual_id in: path required: true description: contact unique key. schema: type: string pattern: .+ responses: '200': description: contact edition is successful. content: application/json: example: id: 1 lastname: Doe firstname: John email: jdoe@personal.com cellphone: '' creation_date: '2018-01-24 15:00:00' language: fr custom_fields: - id: 0 name: civility value: mr data_type: '' lists: - id: 50 name: List1 - id: 51 name: List2 '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] requestBody: content: application/json: schema: description: Following the configuration set on the universe, the email OR cellphone OR unique_key can't be modified properties: key: description: Key used to resolve the contact (default unique_key). Use internal_id to lookup by database ID. example: unique_key type: string enum: - unique_key - internal_id lastname: example: Doe type: string firstname: example: John type: string creation_date: description: 'This date of creation of this contact, will be used for trigger campaigns, Ex: Welcome email. Warning the timezone set for this date is the user api timezone and not the system timezone.' example: '2018-01-24 15:00:00' type: string pattern: ^\d\d\d\d-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[01]) (00|[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])$ language: description: en, fr, it, es, ... example: en type: string email: example: jdoe@mysite.com type: string cellphone: example: '+331122334455' type: string lists: description: All current memberships of the contact will be removed and replaced by the ones given there. If you want to add or remove only specific list, please use end points /subscribe or /unsubscribe example: - id: 25 name: newsletter shoes items: properties: id: type: integer name: type: string type: object type: array double_optin: description: "[Optional] **Require subscribers to confirm their subscription by sending a confirmation request.**
\n
\n **Legacy Version**
\n - `message`: id of the message that must be sent. This message must contain a link to $confirmUrl$
\n - `reminder`: id of the reminder message. This message must contain $confirmUrl$ as well.
\n - `reminder_delay`: if you want a reminder to be sent, specify the number of days between the first message and the reminder.
\n ```\n {\n \"message\": \"aw94xefgh\",\n \"reminder\": \"94was76ef\",\n \"reminder_delay\": 34\n }\n ```\n
\n **Splio Edition 2025**
\n - `enabled`: Enable double optin
\n ```\n {\n \"enabled\": true\n }```" type: object custom_fields: example: - name: foo value: bar - name: foo2 value: bar2 items: properties: id: type: integer name: type: string value: description: The custom field value, can be an integer, a float, a string or a date at format YYYY-MM-DD HH:MM:SS, depending on the configuration of the custom field type: string type: object type: array tracking_consent: description: '[Optional] Track consent events for this contact. Each entry records a consent state change. The date is interpreted in the universe timezone.' example: - channel: email scope: open enabled: true date: '2026-07-01 10:00:00' items: properties: channel: description: Consent channel. Currently only 'email' is supported. example: email type: string scope: description: Consent scope. Currently only 'open' is supported. example: open type: string enabled: description: 'Consent state: true = opted in, false = opted out.' example: true type: boolean source: description: '[Optional] Source of the consent action.' example: shopify type: string date: description: '[Optional] Date of the consent action in format YYYY-MM-DD HH:mm:ss (universe timezone). Defaults to current date if not provided.' example: '2026-07-01 10:00:00' type: string type: object type: array type: object description: Individual data. required: true servers: - url: https://api.splio.com - url: http://api.splio.com /data/contacts/{id}: delete: summary: Delete a contact description: Delete a contact. parameters: - name: id in: path required: true description: contact unique key. schema: type: string pattern: .+ responses: '204': description: deletion is successful. '400': description: The request validation failed. x-readme: BODYBODY content: application/json: example: status: 400 errors: - error_key: field_1 error: wrong_value error_description: The request was malformed and it is unable to be processed. Please review and try again. '401': description: Authentication failed. '403': description: Forbidden. tags: - Contact security: - Bearer: [] servers: - url: https://api.splio.com - url: http://api.splio.com components: securitySchemes: Bearer: name: Authorization type: apiKey in: header description: "For accessing the API a valid JWT token must be passed in all requests in\nthe 'Authorization' header.\n\n\nA valid JWT token is generated by the Authorization API and returned as answer of a call\nto the route /authenticate giving a valid user, password & universe.\n\n\nThe following syntax must be used in the 'Authorization' header :\n\n Bearer xxxxxx.yyyyyyy.zzzzzz\n" x-refined-from: - splio-doc-swagger2.json - splio-customer-platform-openapi.json