Interaction API is currently in private beta. If interested, reach out to folks@folk.app.
Overview
API documentation preview for Interactions endpoints.
Base URL: https://api.folk.app
Authentication: Bearer API key in the Authorization header.
Authorization: Bearer <your-api-key>
Interactions represent touchpoints with people, companies, or objects in your workspace. There are two categories:
Logged interactions (
interactionType: logged) — manually logged by users (calls, meetings, coffee, etc.). Writable via the API.Imported interactions (
interactionType: email,calendar,whatsapp) — synced from connected sources. Read-only via the API.
List endpoints return preview content only (subject + snippet for email/calendar, title + content for logged). Full email/calendar body is only returned by Get an interaction.
Endpoints
Method | Path | Summary |
|
| Create an interaction |
|
| List past interactions |
|
| List upcoming interactions |
|
| Get an interaction |
|
| Update an interaction |
|
| Delete an interaction |
Create an interaction
POST /v1/interactions
Creates a new interaction with a person or a company.
Only logged interactions can be created. Imported interactions (email, calendar, WhatsApp) sync automatically from connected sources.
Request body
Field | Type | Required | Description |
| string (40 chars) | Yes | The person ( |
| string (ISO 8601) | Yes | The date and time of the interaction. |
| string (max 255) | Yes | The title of the interaction. |
| string (max 100,000) | Yes | The multi-line content of the interaction. |
| string | No | The logged activity type. Can be a predefined activity, a messaging app, or an emoji. See Activity types below. |
| string | No | Deprecated. Use |
Example request
{ "entity": { "id": "per_55175e81-9a52-4ac3-930e-82792c23499b" }, "dateTime": "2025-07-17T09:00:00.000Z", "title": "Coffee with John Doe", "content": "Had a coffee with John Doe\nDiscussed the new project.", "activityType": "coffee" }Response 200
Returns the created LoggedInteraction.
{ "data": { "id": "lit_b049db09-c03d-4f32-96d6-d314760add5d", "interactionType": "logged", "from": { "type": "user", "value": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c", "name": "John Doe" }, "to": { "type": "person", "value": "per_55175e81-9a52-4ac3-930e-82792c23499b", "name": "John Doe" }, "entity": { "id": "per_55175e81-9a52-4ac3-930e-82792c23499b", "entityType": "person", "fullName": "John Doe" }, "dateTime": "2025-07-17T09:00:00.000Z", "title": "Coffee with John Doe", "content": "Had a coffee with John Doe\nDiscussed the new project.", "privacyLevel": "sharedFull", "type": "coffee", "activityType": "coffee" } }Errors
400 Bad Request · 401 Unauthorized · 403 Forbidden · 404 Not Found · 422 Unprocessable Entity · 429 Too Many Requests · 500 Internal Server Error · 503 Service Unavailable
List past interactions
GET /v1/interactions/past
Retrieves paginated past interactions linked to a person, company, or object.
Query parameters
Parameter | Required | Description |
| Yes | The person, company, or object linked to interactions. |
| No | Cursor for pagination. Omit on the first call; use |
Example request
GET <https://api.folk.app/v1/interactions/past?entity.id=per_55175e81-9a52-4ac3-930e-82792c23499b>
Response 200
Returns a paginated list of Interaction objects (logged, email, calendar, or WhatsApp).
{ "data": { "items": [ { "id": "lit_b049db09-c03d-4f32-96d6-d314760add5d", "interactionType": "logged", "from": { "type": "user", "value": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c", "name": "John Doe" }, "to": { "type": "person", "value": "per_55175e81-9a52-4ac3-930e-82792c23499b", "name": "John Doe" }, "entity": { "id": "per_55175e81-9a52-4ac3-930e-82792c23499b", "entityType": "person", "fullName": "John Doe" }, "dateTime": "2025-07-17T09:00:00.000Z", "privacyLevel": "sharedFull", "title": "Coffee with John Doe", "content": "Had a coffee with John Doe\nDiscussed the new project.", "type": "coffee", "activityType": "coffee" } ], "pagination": { "nextLink": "<https://api.folk.app/v1/interactions/past?entity.id=per_55175e81-9a52-4ac3-930e-82792c23499b&cursor=eyJmb28iOiJiYXIifQ%3D%3D>" } } }Errors
400 · 401 · 403 · 404 · 422 · 429 · 500 · 503
List upcoming interactions
GET /v1/interactions/upcoming
Retrieves paginated upcoming interactions linked to a person, company, or object.
Query parameters
Parameter | Required | Description |
| Yes | The person, company, or object linked to interactions. |
| No | Cursor for pagination. Omit on the first call; use |
Example request
GET <https://api.folk.app/v1/interactions/upcoming?entity.id=per_55175e81-9a52-4ac3-930e-82792c23499b>
Response 200
Same structure as List past interactions — a paginated list of Interaction objects.
Errors
400 · 401 · 403 · 404 · 422 · 429 · 500 · 503
Get an interaction
GET /v1/interactions/{interactionId}
Retrieves a single interaction. Full email or calendar body is included when privacy rules allow it.
Path parameters
Parameter | Required | Description |
| Yes | The ID of the interaction to retrieve. Can be a logged interaction ID ( |
Query parameters
Parameter | Required | Description |
| Yes | The person, company, or object linked to the interaction. |
Example request
GET <https://api.folk.app/v1/interactions/lit_b049db09-c03d-4f32-96d6-d314760add5d?entity.id=per_55175e81-9a52-4ac3-930e-82792c23499b>
Response 200
Returns a single Interaction object. For imported email/calendar interactions, content.body contains the full body (only on this endpoint).
Errors
400 · 401 · 403 · 404 · 422 · 429 · 500 · 503
Update an interaction
PATCH /v1/interactions/{interactionId}
Partially update an existing logged interaction (title, content, date-time, activityType). Imported interactions cannot be updated.
Path parameters
Parameter | Required | Description |
| Yes | The ID of the logged interaction to update ( |
Request body
Field | Type | Required | Description |
| string (40 chars) | Yes | The person or company connected to the interaction. |
| string (ISO 8601) | No | The date and time of the interaction. |
| string (max 255) | No | The title of the interaction. |
| string (max 100,000) | No | The multi-line content of the interaction. |
| string | No | The logged activity type. See Activity types below. |
Example request
{ "entity": { "id": "per_55175e81-9a52-4ac3-930e-82792c23499b" }, "title": "Updated coffee meeting", "activityType": "meeting" }Response 200
Returns the updated LoggedInteraction.
Errors
400 Bad Request · 401 Unauthorized · 403 Forbidden · 404 Not Found · 422 Unprocessable Entity · 429 Too Many Requests · 500 Internal Server Error · 503 Service Unavailable
Delete an interaction
DELETE /v1/interactions/{interactionId}
Delete an existing logged interaction. Imported interactions cannot be deleted.
Path parameters
Parameter | Required | Description |
| Yes | The ID of the logged interaction to delete ( |
Query parameters
Parameter | Required | Description |
| Yes | The person or company the interaction is linked to. |
Example request
DELETE <https://api.folk.app/v1/interactions/lit_b049db09-c03d-4f32-96d6-d314760add5d?entity.id=per_55175e81-9a52-4ac3-930e-82792c23499b>
Response 200
{ "data": { "id": "lit_b049db09-c03d-4f32-96d6-d314760add5d" } }Errors
400 · 401 · 403 · 404 · 422 · 429 · 500 · 503
Data models
Activity types (logged interactions)
activityType accepts one of:
Predefined activities:
call,meeting,message,coffee,lunch,event,drinkMessaging apps:
whatsapp,twitter,linkedin,hangout,skype,slack,iMessage,fbMessenger,signal,discord,wechat,telegram,viberEmoji: any emoji string (e.g.
☕️)Campaign messages (response only):
campaignMessage
LoggedInteraction
A manually logged interaction linked to an entity.
Field | Type | Description |
| string | Logged interaction ID ( |
|
| Always |
| object | Who logged the interaction. |
| object | The linked entity. |
| object |
|
| string | ISO 8601 date-time. |
| string | Interaction title. |
| string | Multi-line content. |
|
| Logged interactions always expose content to authorized users. |
| string | Activity type (see above). |
| string | Deprecated. Use |
EmailMessageInteraction
An imported email message linked to an entity.
Field | Type | Description |
| string | Imported interaction ID. |
|
| Always |
| object | Linked person or company. |
| string | ISO 8601 date-time. |
| string | null |
| string |
|
| object | Sender ( |
| array | Recipients. |
| string | Email subject. |
| string | Short preview. Omitted when privacy rules restrict content. |
| string | Full email body. Only returned by Get an interaction. |
CalendarEventInteraction
An imported calendar event. Same structure as email, with interactionType: calendar and optional content.location.
WhatsappMessageInteraction
An imported WhatsApp message (interactionType: whatsapp).
Field | Type | Description |
| object / array | Participants ( |
| string | Message text. Omitted when privacy rules restrict content. |
| string | Additional context. Omitted when privacy rules restrict content. |
Privacy levels (imported interactions)
sharedFull— content fully visible to every workspace member.subjectOnly— content hidden for other workspace members.sensitive/internal— visible only to workspace members involved in the conversation.
See the help center article for details.
Pagination
List endpoints use cursor-based pagination via the cursor query parameter. The response includes data.pagination.nextLink with the full URL for the next page. Omit cursor on the first request.
Rate limiting
All endpoints return rate limit headers:
X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-ResetRetry-After(when rate limited)
