Create a contact
Creates a contact and returns it with a 201 status. An identity another contact already holds is a conflict.
POST
Creates a contact and returns it with a 201 status. An identity another contact already holds is a conflict.
apiKeyheader
x-api-key<token>application/json- body
namespaceId?|nullname*stringLength
length <= 120displayName?|null|nullavatar?string|null|nullidentities?array<>|nullprofile?|null|nullpreferences?|null|nulltags?array<string>|nullstatus?|nullstatusReason?string|null|nullexternalId?string|null|nullmetadata?|null|nullSuccess
application/json- response
id*ContactIdMatch
^contact_[0-9a-hjkmnp-tv-z]{16,24}$namespaceId*|nullname*stringdisplayName*string|nullavatar*string|nullstatus*stringValue in
"active""paused""blocked""archived"statusReason*string|nullexternalId*string|nullidentities*array<>profile*|nullpreferences*|nulltags*array<string>metadata*|nullimportProvenance*|nullcreatedAt*stringupdatedAt*stringimport { createClient } from "samva";const samva = createClient({ apiKey: process.env.SAMVA_API_KEY! });const result = await samva.contacts.create({ "name": "example"});Example Response
{ "id": "string", "namespaceId": "string", "name": "string", "displayName": "string", "avatar": "string", "status": "active", "statusReason": "string", "externalId": "string", "identities": [ { "id": "string", "type": "email", "identifier": "string", "verified": true, "channels": [ { "channel": "sms", "reachability": "unknown", "consent": { "status": "opted_in", "source": "string", "capturedAt": "string", "proof": { "property1": "string", "property2": "string" } } } ] } ], "profile": { "firstName": "string", "lastName": "string", "company": "string", "jobTitle": "string", "location": { "country": "string", "state": "string", "city": "string", "timezone": "string" }, "customFields": { "property1": "string", "property2": "string" }, "source": "api" }, "preferences": { "preferredChannels": [ "sms" ], "language": "string", "timezone": "string", "notifications": { "email": true, "sms": true, "whatsapp": true, "quiet_hours": { "start": "string", "end": "string" } } }, "tags": [ "string" ], "metadata": { "property1": "string", "property2": "string" }, "importProvenance": { "first": { "jobId": "string", "topicId": "string", "preset": "beehiiv", "importedAt": "string", "summary": { "signupAt": { "value": "string", "kind": "time" }, "sources": [ "string" ], "omittedSources": 0 }, "evidence": [ { "file": "string", "row": -9007199254740991, "declared": { "kind": "status_column" }, "suppressionFree": true, "sourceStatus": "string", "signupAt": "string", "source": "string" } ] }, "latest": { "jobId": "string", "topicId": "string", "preset": "beehiiv", "importedAt": "string", "summary": { "signupAt": { "value": "string", "kind": "time" }, "sources": [ "string" ], "omittedSources": 0 }, "evidence": [ { "file": "string", "row": -9007199254740991, "declared": { "kind": "status_column" }, "suppressionFree": true, "sourceStatus": "string", "signupAt": "string", "source": "string" } ] } }, "createdAt": "string", "updatedAt": "string"}Related documentation
Bulk update contact tags
Adds, removes, or replaces tags on multiple contacts in one request, returning counts of updated and failed records. One request carries at most 1000 ids.
Export contacts
Exports contacts as JSON or CSV, returning the serialized data and a count of exported records. The ids filter takes at most 1000 ids.