Saasco logoSaasco logo
Saasco logoSaasco logo

Introduction

Quick StartWhat is Saasco?

Analytics

CRM

postList ContactsgetGet ContactgetGet By EmailgetList RelatedpostUpsert ContactpatchUpdate ContactdelDelete ContactpostGet PropertiespostCount SubscribedpostMigrate Distinct Id

Email Marketing

Knowledge

Support

Projects

Contacts

Get Properties

Returns just a contact's property bag, without the surrounding contact record. Naming specific attributes keeps the response small when you only need a few values from a contact with many properties.

POST
/projects/{projectId}/crm/contacts/properties

Authorization

Authorization
AuthorizationBearer <token>

In: header

Path Parameters

projectIdrequiredstring

ID of the project that owns the contact.

Request Body

application/json

attributesarray<string>

Property names to return, e.g. ["email", "$country"]. Omit for every stored property.

distinctIdrequiredstring

Distinct ID of the contact whose properties to read.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://www.saasco.com/api/v2/projects/string/crm/contacts/properties" \  -H "Content-Type: application/json" \  -d '{    "distinctId": "string"  }'
{
  "age": 0,
  "avatar": "http://example.com",
  "birthday": "string",
  "createdAt": "string",
  "description": "string",
  "displayName": "string",
  "email": "user@example.com",
  "firstName": "string",
  "gender": "string",
  "id": "string",
  "lastName": "string",
  "name": "string",
  "phone": "string",
  "title": "string",
  "username": "string",
  "website": "string",
  "$id": "string",
  "$lastSeen": "string",
  "$lastIdentifiedAt": "string",
  "$processedAt": "string",
  "$unsubscribed": true,
  "$subscribed": true,
  "$unsubscribeReason": "manual",
  "$unsubscribeSource": "string",
  "$emailValidated": true,
  "$lastEmailValidatedAt": "string",
  "$emailValidationResult": "string",
  "$emailScore": 0,
  "$stripeCustomerId": "string",
  "$os": "string",
  "$browser": "string",
  "$browserVersion": "string",
  "$screenHeight": 0,
  "$screenWidth": 0,
  "$screenDpi": 0,
  "$device": "string",
  "$userAgent": "string",
  "$ip": "string",
  "$timezone": "string",
  "$city": "string",
  "$country": "string",
  "$countryCode": "string",
  "$continent": "string",
  "$region": "string",
  "$locale": "string",
  "$latitude": 0,
  "$longitude": 0,
  "$referrer": "string",
  "$referringDomain": "string",
  "$initialReferrer": "string",
  "$initialReferringDomain": "string",
  "$utmSource": "string",
  "$utmMedium": "string",
  "$utmCampaign": "string",
  "$utmTerm": "string",
  "$utmContent": "string",
  "$initialUtmSource": "string",
  "$initialUtmMedium": "string",
  "$initialUtmCampaign": "string",
  "$initialUtmTerm": "string",
  "$initialUtmContent": "string",
  "$_toDelete": true,
  "$_emailScoreActions": "string",
  "property1": "string",
  "property2": "string"
}
{
  "code": "BAD_REQUEST",
  "message": "Invalid input data",
  "issues": []
}
{
  "code": "UNAUTHORIZED",
  "message": "Authorization not provided",
  "issues": []
}
{
  "code": "FORBIDDEN",
  "message": "Insufficient access",
  "issues": []
}
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "Internal server error",
  "issues": []
}

Delete Contact

Deletes a contact. The removal is processed asynchronously and can take up to 15 minutes; in the meantime the contact stays queryable with the system property `$_toDelete` set to true, which is how you can tell a deletion is pending rather than lost. Cannot be undone.

Count Subscribed

Counts how many contacts match an audience *and* are still subscribed: the number that would actually receive a campaign, which is lower than a plain contact count once unsubscribes are excluded. Use it to size an audience before sending. Returns only the count, so it is much cheaper than paging List Contacts.