Create a follow-up task from your CRM
When a deal moves, a form comes back incomplete or a speaker emails your CRM, create a task in Sessionboard so the right person follows up on the right contact. You need a key with read:contacts, read:tasks and write:tasks, without an event restriction: see API keys. Tasks are part of Sessionboard Platform.
1. Find the contact
Section titled “1. Find the contact”Use the Sessionboard contact id you stored when you synced the person from your CRM. If you don’t have it:
- For a speaker or anyone else on a session,
GET /v1/event/{eventId}/participants?email=gives the contact. It answers404for a contact with no session role. - For anyone else, page through Search event contacts and compare emails yourself. If more than one contact has the email, don’t guess: leave the task for a person, or link no record and say who it is in the description.
2. Don’t create it twice
Section titled “2. Don’t create it twice”Keep the task’s data.id against the CRM record once you create it (step 3), and on later events update that task (step 4) instead of creating another.
If you have no stored id, list the contact’s open tasks and look for an exact match yourself. q matches words anywhere in the title or description, so a hit is not proof that it’s the same task:
curl "https://public-api.sessionboard.com/v1/tasks?record_type=contact&record_id=9b2e4c1a-0d3f-4a5b-8c7d-6e5f4a3b2c1d&limit=100" \ -H "x-access-token: $SESSIONBOARD_TOKEN"Treat a task as yours only when its title is exactly the one you write, or its description carries your CRM case number. Page with offset while pagination.has_more is true. Update that task’s id only; if none matches, create one.
3. Create the task
Section titled “3. Create the task”POST /v1/tasks with the event, the contact, the owner’s email from your CRM, and a due date in the event’s time zone:
curl -X POST "https://public-api.sessionboard.com/v1/tasks" \ -H "x-access-token: $SESSIONBOARD_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "event_id": 7001, "title": "Chase Dr. Okafor'\''s disclosure", "description": "Disclosure form came back unsigned (CRM case 58213).", "records": [{ "type": "contact", "id": "9b2e4c1a-0d3f-4a5b-8c7d-6e5f4a3b2c1d" }], "assignee_email": "dana@example.org", "due_date": "2026-11-20", "reminder": "9am", "priority": "high" }'The response is 201 with { "data": { … } }. Store data.id against the CRM record so later changes find it. Dana is told about the task, and reminded at 09:00 on the 20th.
4. Keep it in step
Section titled “4. Keep it in step”- The date moved in your CRM:
PATCH /v1/tasks/{taskId}with{ "due_date": "2026-11-23" }. - The owner changed:
PATCHwith{ "assignee_email": "priya@example.org" }. - It was resolved in your CRM:
POST /v1/tasks/{taskId}/completewith{ "completion_note": "Signed form received" }.
A 403 with TASKS_PLATFORM_ONLY means the organization uses a self-serve Sessionboard product, which has no Tasks. A 400 names the field to fix, such as an assignee who is not on the event; USER_REQUIRED means the key belongs to no user, so create one as a member of the organization.
