Skip to main content
GET
/
api
/
v1
/
subscribers
/
external
Subscribers By External ID
curl --request GET \
  --url https://api.sequenzy.com/api/v1/subscribers/external \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "email": "<string>",
  "externalId": "<string>",
  "firstName": "<string>",
  "lastName": "<string>",
  "status": "<string>",
  "tags": [
    {}
  ],
  "customAttributes": {},
  "customAttributesStrategy": "<string>"
}
'
{
  "success": true,
  "subscriber": {
    "id": "sub_abc123",
    "email": "anna@example.com",
    "externalId": "user_123",
    "status": "active",
    "tags": ["customer"],
    "customAttributes": {
      "plan": "pro"
    }
  }
}
Use external-ID routes when your app has a stable customer, account, or user ID. Prefer the query form because it supports external IDs that contain slashes. For GET, email engagement stats and recent activity exclude detected email-security scanners and tracked brand assets by default.

Request

externalId
string
required
Customer-owned external ID. Required for GET, PATCH, and DELETE /subscribers/external.
externalId
string
Compatibility path form for external IDs that do not contain slashes.
includeMachineEngagement
boolean
default:"false"
Set to true on GET requests to include detected scanner, preview, and tracked asset open/click events in emailStats and recent activity.
When machine engagement is included, open/click activity events include machine, engagementQuality, and classificationReasons fields.
email
string
New subscriber email when updating.
externalId
string
New external ID when updating.
firstName
string
Updated first name.
lastName
string
Updated last name.
status
string
Updated status: active or unsubscribed.
tags
array
Replacement tag list.
customAttributes
object
Custom attributes to update. By default this replaces the existing public custom-attribute map.
customAttributesStrategy
string
default:"replace"
How to apply customAttributes: replace replaces the existing public custom-attribute map, while merge overwrites only the provided keys and retains unspecified existing keys.
curl "https://api.sequenzy.com/api/v1/subscribers/external?externalId=user_123" \
  -H "Authorization: Bearer YOUR_API_KEY"
curl -X PATCH "https://api.sequenzy.com/api/v1/subscribers/external?externalId=user_123" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "anna@example.com", "customAttributesStrategy": "merge", "customAttributes": {"plan": "pro"}}'
curl -X DELETE "https://api.sequenzy.com/api/v1/subscribers/external?externalId=user_123" \
  -H "Authorization: Bearer YOUR_API_KEY"

Responses

{
  "success": true,
  "subscriber": {
    "id": "sub_abc123",
    "email": "anna@example.com",
    "externalId": "user_123",
    "status": "active",
    "tags": ["customer"],
    "customAttributes": {
      "plan": "pro"
    }
  }
}