List activities for a client
Returns the client's activities (emails, calls, meetings, notes) ordered by most-recent first. Offset-based pagination via an opaque `cursor` string (decoded internally). Supported query params today: `limit`, `cursor`, `type`. The spec's additional filters (`source`, `from`, `to`, `includeArchived`) are validated but currently have no effect — archival filtering needs the `archived_at` column on the conversations table, tracked as a follow-up. List responses omit `content` for cost reasons — fetch the single-resource endpoint to get message bodies.
Authorization
bearerAuth Salfio API tokens start with the literal prefix sk_live_ followed
by 32 base62 characters (≈190 bits of entropy). Tokens are hashed
at rest with argon2id and shown to the user only once at creation.
In: header
Path Parameters
uuidQuery Parameters
201 <= value <= 100"email" | "call" | "meeting" | "note" | "chat"Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api.salfio.com/v1/clients/497f6eca-6276-4993-bfeb-53cbbbba6f08/activities"{
"meta": {
"cursor": "string",
"hasMore": true
},
"data": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"clientId": "5e505642-9024-474d-9434-e5a44f505cc5",
"type": "email",
"source": "manual",
"subject": "string",
"content": "string",
"occurredAt": "2019-08-24T14:15:22Z",
"participants": [
"user@example.com"
],
"immutable": true,
"archivedAt": "2019-08-24T14:15:22Z",
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
}
]
}{
"error": {
"code": "invalid_argument",
"message": "limit must be an integer between 1 and 100"
}
}{
"error": {
"code": "unauthorized",
"message": "Authentication required"
}
}{
"error": {
"code": "not_found",
"message": "client not found"
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded",
"details": {
"retry_after_seconds": 30
}
}
}Get a client's default dashboard
Returns the three-card default dashboard — Client Health, Wins & Traction, Frictions & Risks — derived from the SAL-209 insight pipeline. The endpoint is strictly read-only: it never triggers a recompute on the request path. If no insight has been generated yet (brand-new client, pipeline hasn't run), all three cards come back with `status: "computing"` and empty content — **not** `404`. Partners poll (or rely on the background pipeline to backfill). Cross-tenant lookup returns `404 not_found` — existence is never leaked across organizations.
Create a manual activity (Stubbed — SAL-230 follow-up)
**Stubbed in v1.0.** Returns `200 { data: null, meta: {} }` without side effects. Full implementation requires an `archived_at` column on the conversations table plus the source/operation matrix from the v1.0 spec — tracked as a SAL-230 follow-up.