Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.recotap.com/llms.txt

Use this file to discover all available pages before exploring further.

POST /sales-activities Pushes sales activities and their associated contacts into Recotap. Max 50 activities per request. This endpoint is create-only. A duplicate externalActivityId is returned as failed. Returns HTTP 200 regardless of per-item outcome. Only call and email activity types are processed. Items with any other activityType value are returned as skipped in the results.
curl -X POST "http://eapi.recotap.com/api/v1/crm/sales-activities" \
  -H "X-Api-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "activities": [
      {
        "externalActivityId": "call-001",
        "activityType":       "call",
        "occurredAt":         "2026-04-22T10:30:00Z",
        "domain":             "acme.com",
        "accountName":        "Acme Corp",
        "ownerEmail":         "jane@yourcompany.com",
        "ownerName":          "Jane Smith",
        "ownerId":            "rep-123",
        "callTitle":          "Discovery call",
        "durationMinutes":    30,
        "outcome":            "Connected",
        "direction":          "outbound",
        "from": {
          "name":  "Jane Smith",
          "email": "jane@yourcompany.com"
        },
        "contacts": [
          {
            "email":             "john@acme.com",
            "externalContactId": "contact-456",
            "name":              "John Doe",
            "title":             "VP of Engineering",
            "department":        "Engineering",
            "seniority":         "VP",
            "phone":             "+1 415 555 0101",
            "linkedinUrl":       "https://linkedin.com/in/johndoe"
          }
        ]
      }
    ]
  }'
Request body
FieldTypeRequiredDescription
activitiesarrayYesMin 1, max 50 activity objects
Activity object
FieldTypeRequiredDescription
externalActivityIdstringYesYour CRM activity ID — used for deduplication e.g. "act-001"
activityTypestringYescall or email. Any other value returns the item as skipped.
occurredAtstringYesISO 8601 datetime e.g. "2026-04-22T10:30:00Z"
domainstringYesAccount domain e.g. "acme.com" — links activity to a Recotap account
ownerEmailstringYesEmail of the rep who made the call or sent the email e.g. "jane@yourcompany.com"
contactsarrayYesMin 1 — people involved in this activity
accountNamestringNoCompany name e.g. "Acme Corp"
subjectstringNoActivity title or email subject e.g. "Follow up on our call"
ownerNamestringNoRep’s full name e.g. "Jane Smith"
ownerIdstringNoRep’s owner ID in your CRM e.g. "rep-123"
fromobjectNoSender info — { name?, email? } e.g. { "name": "Jane Smith", "email": "jane@yourcompany.com" }
Call-specific fields (only relevant when activityType is call)
FieldTypeRequiredDescription
callTitlestringNoCall title shown in the activity feed
durationMinutesnumberNoDuration of the call in minutes
outcomestringNoe.g. Connected, Left voicemail, No answer
directionstringNoinbound or outbound
Email-specific fields (only relevant when activityType is email)
FieldTypeRequiredDescription
openCountnumberNoNumber of times the email was opened
clickCountnumberNoNumber of link clicks
Contact object
FieldTypeRequiredDescription
emailstringYesDeduplication key for the contact e.g. "john@acme.com"
externalContactIdstringNoYour CRM contact ID e.g. "contact-456"
namestringNoContact’s full name e.g. "John Doe"
titlestringNoJob title e.g. "VP of Engineering"
departmentstringNoe.g. "Engineering"
senioritystringNoe.g. "VP", "Director", "Manager", "IC"
phonestringNoe.g. "+1 415 555 0101"
linkedinUrlstringNoe.g. "https://linkedin.com/in/johndoe"
Call example
{
  "activities": [
    {
      "externalActivityId": "call-001",
      "activityType":       "call",
      "occurredAt":         "2026-04-22T10:30:00Z",
      "domain":             "acme.com",
      "accountName":        "Acme Corp",
      "ownerEmail":         "jane@yourcompany.com",
      "ownerName":          "Jane Smith",
      "ownerId":            "rep-123",
      "callTitle":          "Discovery call",
      "durationMinutes":    30,
      "outcome":            "Connected",
      "direction":          "outbound",
      "from": {
        "name":  "Jane Smith",
        "email": "jane@yourcompany.com"
      },
      "contacts": [
        {
          "email":             "john@acme.com",
          "externalContactId": "contact-456",
          "name":              "John Doe",
          "title":             "VP of Engineering",
          "department":        "Engineering",
          "seniority":         "VP",
          "phone":             "+1 415 555 0101",
          "linkedinUrl":       "https://linkedin.com/in/johndoe"
        }
      ]
    }
  ]
}
Email example
{
  "activities": [
    {
      "externalActivityId": "email-001",
      "activityType":       "email",
      "occurredAt":         "2026-04-23T08:15:00Z",
      "domain":             "acme.com",
      "accountName":        "Acme Corp",
      "ownerEmail":         "jane@yourcompany.com",
      "ownerName":          "Jane Smith",
      "ownerId":            "rep-123",
      "subject":            "Follow up on our call",
      "openCount":          3,
      "clickCount":         1,
      "from": {
        "name":  "Jane Smith",
        "email": "jane@yourcompany.com"
      },
      "contacts": [
        {
          "email":             "john@acme.com",
          "externalContactId": "contact-456",
          "name":              "John Doe",
          "title":             "VP of Engineering",
          "department":        "Engineering",
          "seniority":         "VP",
          "phone":             "+1 415 555 0101",
          "linkedinUrl":       "https://linkedin.com/in/johndoe"
        }
      ]
    }
  ]
}
Response data
{
  "results": [
    { "externalActivityId": "act-001", "status": "created" },
    { "externalActivityId": "act-002", "status": "failed",  "error": "Activity with externalActivityId 'act-002' already exists." },
    { "externalActivityId": "act-003", "status": "skipped", "reason": "Only call and email activity types are supported" }
  ],
  "summary": { "total": 3, "created": 1, "failed": 1, "skipped": 1 }
}