API referenceContacts

Create or update a contact by channel identity

PUT
/v2/contacts/by-identity/{channel}/{externalId}

Updates the contact holding {channel}/{externalId}, or creates one with that identity (201). Safe to repeat.

Authorization

ApiKey
headerAuthorizationBearer <token>

An API key from Developers → API keys: Authorization: Bearer gauge_live_… (or pulse_k_live_…).

Path Parameters

channel*string

A channel kind.

externalId*string

The handle on that channel.

Header Parameters

Gauge-Version?string

A dated version. Default 2026-10-21.

Request Body

application/json
  1. body
displayName?string
Length1 <= length <= 200
title?string
Lengthlength <= 200
companyId?string
Formatuuid
companyName?string
Length1 <= length <= 200
customFields?
country?string
Value in"US""CA""GB"

Response Body

The contact (201 when it was created).

application/json
  1. response
id*string
Formatuuid
displayName*string|null
email*string|null
phone*string|null
title*string|null
companyId*|
Formatuuid
companyName*string|null
lifecycleStage*string
isVip*boolean
tags*array<string>
customFields*
identities*array<>
createdAt*string
updatedAt*string
Example Request
curl -X PUT 'https://app.gauge.chat/api/v2/contacts/by-identity/string/string' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "displayName": "string",  "email": "string",  "phone": "string",  "title": "string",  "companyId": "8bb73d03-06b4-47c7-80c7-59301f770eda",  "companyName": "string",  "lifecycleStage": "string",  "isVip": true,  "tags": [    "string"  ],  "customFields": {    "property1": null,    "property2": null  },  "identities": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "channel": "string",      "externalId": "string",      "connectionId": "84b500d7-71c8-4b1f-adf4-f1eb0000973d"    }  ],  "createdAt": "string",  "updatedAt": "string"}