People

Log an outreach activity

Record that a teammate reached out to this person: an email, a DM, a call. The first activity claims an unowned person for whoever reached out and moves not_contacted to contacted; an existing owner and a later stage are kept. `memberId` defaults to the signed-in member; an API key that omits it logs an unattributed activity, which claims nobody.

POST
/v1/people/{id}/activities
AuthorizationBearer <token>

API key minted via POST /v1/api-keys (format mk_live_...)

In: header

Path Parameters

idstring

Person id (aut_...).

Length1 <= length
channelstring

How they were reached: email, x, linkedin, bluesky, reddit, github, call, meeting or other.

Value in"email" | "x" | "linkedin" | "bluesky" | "reddit" | "github" | "call" | "meeting" | "other"
note?string

What was sent or said, briefly.

Default""
Lengthlength <= 2000
occurredAt?string

When the contact happened (ISO 8601, or epoch ms). Defaults to now.

Formatdate-time
memberId?string

The member who reached out (user id). Defaults to the signed-in member; an API key that omits it logs an unattributed activity.

Length1 <= length

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://api.mentio.dev/v1/people/aut_abc123/activities" \  -H "Content-Type: application/json" \  -d '{    "channel": "email"  }'
{
  "id": "string",
  "personId": "string",
  "channel": "email",
  "note": "string",
  "member": {
    "id": "string",
    "name": "string",
    "email": "string"
  },
  "occurredAt": "string",
  "createdAt": "string"
}
{
  "error": {
    "code": "unauthorized",
    "message": "string",
    "requestId": "string",
    "retryAfterSeconds": 0
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "string",
    "requestId": "string",
    "retryAfterSeconds": 0
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "string",
    "requestId": "string",
    "retryAfterSeconds": 0
  }
}