contacts-v2

Add a contact to a list

Creates or updates Contact and ListContact records. Optionally enrolls contact in matching Welcome Journeys.

post/v2/contacts

Request

  • Base URL: https://api.tracklysms.com/api
  • URL: https://api.tracklysms.com/api/v2/contacts
  • Auth: API key in header X-Api-Key

Request body

ad_network_idstring

Ad network campaign/account ID

ad_network_sourcestring

Ad network source (e.g. adwords, facebook)

consent_languagestring

Exact disclosure text shown to consumer at consent

consent_methodstring

How consent was obtained (web_form, sms_keyword, mobile_app, verbal, written, api_with_proof, double_opt_in). Optional; stored on the contact for TCPA compliance when a valid method is provided, null otherwise. Invalid or verbal values are ignored, not rejected.

consent_sourcestring

URL or description of consent capture point. Defaults to url when omitted.

custom_fieldsobject

Custom fields key-value pairs

double_optinboolean

When true, the contact is held pending confirmation (not sendable, not enrolled in journeys) and sent the confirmation message from optin_configuration_id; they activate only after replying Y/YES/CONFIRM within 24h. Requires optin_configuration_id (a double-opt-in config on the same list). For DOI contacts, journey enrollment happens at confirmation and follows the opt-in configuration's journey settings, not this request's use_journeys. Defaults false — omit for standard single opt-in.

ip_addressstring

IP address for consent tracking

list_numberstring required

Sending list phone number in E.164 format

optin_configuration_idstring

Double-opt-in opt-in configuration to drive confirmation. Required when double_optin is true.

override_custom_fieldsboolean

Replace custom fields entirely instead of merging

phone_numberstring required

Contact phone number in E.164 format

screen_litigatorboolean

When true, the contact phone number is screened for litigator / DNC status (Blacklist Alliance) and the result is badged onto the contact profile asynchronously. Independent of use_validation. The contact is always created and never rejected on a hit — suppress litigators downstream via the is_litigator audience filter. Per non-cached screen billed at $0.015. Requires an active payment method (HTTP 402 if not enabled). Single-contact endpoint only for now.

signup_datestring date-time

Initial signup date for a new membership (ISO datetime UTC, defaults to now; existing membership dates are preserved)

skip_journey_if_existsboolean

Skip journey enrollment if ListContact already exists

urlstring

Signup URL for consent tracking

use_journeysboolean

Enroll contact in matching journeys

use_validationboolean

When true, the contact phone number is validated (LRN + DNC) and the validation result is attached to the response and persisted to the contact profile. The contact is created either way — invalid or unreachable numbers are accepted and stored, then can be segmented out of campaigns using the validation_status audience filter. Per non-cached lookup is billed at $0.003 (rolled up monthly). Requires an active payment method (HTTP 402 if not enabled). There is no reject_on_fail flag by design: the audience builder is the right segmentation surface for excluding invalid numbers from sends, and a per-API rejection flag would force callers to choose between two divergent code paths instead of treating accept-and-segment as the universal contract.

user_agentstring

Browser/device user agent string at consent

Response

Contact added

contact_idstring

Contact ID

is_new_contactboolean

Whether a new Contact was created

is_new_list_contactboolean

Whether a new ListContact was created

journeys_enrolledinteger

Number of journeys enrolled

list_contact_idstring

ListContact ID

successboolean

Operation success

warningsstring[]

Warnings about missed configuration

Changes

No recorded changes to this operation across all 1 revision of this API.