StrideOps.aiStrideOps.ai Documentation
DocumentationAPI Reference
Contacts

POST Upsert contact

Create or update a contact matched by email, phone, or externalId.

Endpoint

POST https://api.strideops.ai/v1/contacts/upsert

Looks up an existing contact by the chosen match key. Updates it if found, creates it otherwise. Idempotent - safe to retry.

Request body

FieldTypeRequiredNotes
matchOnenumyes"email" | "phone" | "externalId".
emailstringconditionalRequired when matchOn: "email".
phonestringconditionalRequired when matchOn: "phone".
externalIdstringconditionalRequired when matchOn: "externalId".
All Create contact fieldsnoMerged into the existing record (or used for create).

Merge semantics

  • Scalar fields (firstName, lastName, etc.): the supplied value wins.
  • tags: union of existing + supplied (no duplicates).
  • customFields: shallow merge - supplied keys overwrite existing.
  • null values clear the field.

Response

Returns the upserted contact in the same shape as Create contact. The response includes a created boolean - true if a new record was inserted, false if an existing record was updated.

{
  "id": "ctc_…",
  "created": false,
  "email": "jane@example.com",
  "firstName": "Jane",
  ...
}

Example

curl -X POST https://api.strideops.ai/v1/contacts/upsert \
  -H "Authorization: Bearer $STRIDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "matchOn":   "email",
    "email":     "jane@example.com",
    "firstName": "Jane",
    "tags":      ["webinar-2026-q2"]
  }'

On this page