Skip to main content

Documentation Index

Fetch the complete documentation index at: https://developer.lofty.com/llms.txt

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

Tasks and appointments help agents stay organized and follow up with leads at the right time. Tasks are action items — a call to make, an email to send, a follow-up to complete. Appointments are scheduled meetings with a specific start time, end time, and location. Both are associated with a lead and tracked through the same API surface.

Shared taskId namespace

Tasks and appointments in Lofty share the same taskId namespace. This means a task and an appointment can never have the same numeric ID, and when you reference an item by ID on any V2 endpoint, the API resolves it correctly regardless of whether it is a task or an appointment.
The V2 endpoints (/v2.0/tasks/... and /v2.0/calendar/...) operate on the same underlying ID space. A taskId returned from a task creation endpoint is the same identifier you would use to fetch or update that record through the calendar endpoints.

Tasks

A task is a to-do item assigned to an agent or assistant, linked to a specific lead. Use tasks to represent the action an agent needs to take next — scheduling a call, sending a listing, or following up after a showing.

Key task fields

FieldTypeDescription
idint64Task ID (shared namespace with appointments)
leadIdint64Lead associated with this task
contentstringTask description
typestringTask type: Call, Email, Text, Other
assignedRolestringAssigned role: Agent or Assistant
startAtstringStart time in ISO 8601 format with timezone
endAtstringEnd time / deadline in ISO 8601 format
timeZoneCodestringIANA timezone code (e.g., America/Los_Angeles)
finishFlagbooleanWhether the task is completed
overdueFlagbooleanWhether the task is past its deadline and still open

Creating a task (V2)

POST https://api.lofty.com/v2.0/tasks
{
  "content": "Follow up about the Maple Street listing",
  "leadId": 563172647619608,
  "type": "Call",
  "assignedRole": "Agent",
  "startAt": "2026-06-01T10:00:00-07:00",
  "endAt": "2026-06-01T10:30:00-07:00",
  "timeZoneCode": "America/Los_Angeles"
}

Appointments

An appointment is a scheduled event with a defined start time, end time, and optional location. Unlike tasks, appointments represent a meeting or showing rather than a generic action item.

Key appointment fields

FieldTypeDescription
idint64Appointment ID (shared namespace with tasks)
leadIdint64Lead associated with this appointment
descrstringAppointment description
addressstringLocation of the appointment
deadlineint64Start time as Unix timestamp in milliseconds
endTimeint64End time as Unix timestamp in milliseconds
allDaybooleanWhether the appointment spans the full day
finishFlagbooleanWhether the appointment is completed
assignToUidint64User ID the appointment is assigned to
To list appointments for a lead, use GET /v1.0/appts.

V1 vs V2 API

Lofty exposes tasks through both V1 and V2 endpoints. The V2 API adds support for Appointment as a task type, uses ISO 8601 timestamps with timezone, and is the recommended path for new integrations.
FeatureV1 (/v1.0/tasks)V2 (/v2.0/tasks)
Task typesCall, Email, Text, OtherAll V1 types + Appointment
Timestamp formatyyyy-MM-dd HH:mm:ss UTCISO 8601 with timezone
Finish/unfinish actionsVia finishFlag on updateDedicated /finish and /unfinish endpoints
Preferred for new buildsNoYes
Use the V2 endpoints for all new integrations. The V1 task endpoints remain available but do not support appointments as a task type.

Finish and unfinish workflow

When an agent completes a task or appointment, you mark it finished. If needed, you can revert that status. The V2 API provides dedicated endpoints for this rather than requiring a full update:
# Mark a task or appointment as completed
POST https://api.lofty.com/v2.0/tasks/{taskId}/finish

# Revert a completed task or appointment to open
POST https://api.lofty.com/v2.0/tasks/{taskId}/unfinish
The same pattern is available through the calendar API:
POST https://api.lofty.com/v2.0/calendar/{calendarId}/finish
POST https://api.lofty.com/v2.0/calendar/{calendarId}/unfinish

Calendar API vs tasks API

The V2 Calendar API (/v2.0/calendar) is an alternative surface for managing the same tasks and appointments, with additional capabilities:
  • Available meeting slotsGET /v2.0/calendar/meetings/available returns open time slots for scheduling.
  • Composite calendar IDs — Calendar entries have IDs of the form <numericId>-task or <numericId>-appointment. You must pass this full composite string to per-entry calendar endpoints.
Calendar IDs returned by POST /v2.0/calendar are composite strings like 12345-task or 12345-appointment. Always pass the full string — including the type suffix — when calling PUT /v2.0/calendar/{calendarId}, DELETE /v2.0/calendar/{calendarId}, or the finish/unfinish endpoints.

Plan tasks

Plan tasks are auto-generated action items created by Lofty’s Sales Agent (AI Assistant) feature as part of automated follow-up plans. You can fetch plan tasks for a specific lead and batch-create them programmatically:
# Get plan tasks for a lead
GET https://api.lofty.com/v2.0/plan-tasks/lead/{leadId}

# Batch create plan tasks
POST https://api.lofty.com/v2.0/plan-tasks/create
Plan tasks are associated with the Sales Agent workflow and are separate from agent-created tasks, though they share the same underlying data model.

Endpoint overview

MethodEndpointDescription
GET/v2.0/tasksList tasks for a lead
POST/v2.0/tasksCreate a task or appointment
GET/v2.0/tasks/{taskId}Get a task or appointment by ID
PUT/v2.0/tasks/{taskId}Update a task or appointment
DELETE/v2.0/tasks/{taskId}Delete a task or appointment
POST/v2.0/tasks/{taskId}/finishMark as completed
POST/v2.0/tasks/{taskId}/unfinishRevert to open
GET/v2.0/tasks/my-tasksList tasks assigned to the current user
GET/v1.0/tasksList tasks for a lead (V1)
POST/v1.0/tasksCreate a task (V1)
GET/v1.0/tasks/{taskId}Get a task by ID (V1)
PUT/v1.0/tasks/{taskId}Update a task (V1)
DELETE/v1.0/tasks/{taskId}Delete a task (V1)
GET/v1.0/apptsList appointments for a lead
GET/v2.0/calendarQuery calendar entries
POST/v2.0/calendarCreate a calendar entry
GET/v2.0/calendar/{calendarId}Get a calendar entry
PUT/v2.0/calendar/{calendarId}Update a calendar entry
DELETE/v2.0/calendar/{calendarId}Delete a calendar entry
POST/v2.0/calendar/{calendarId}/finishMark calendar entry as completed
POST/v2.0/calendar/{calendarId}/unfinishRevert calendar entry to open
GET/v2.0/plan-tasks/lead/{leadId}Get plan tasks for a lead
POST/v2.0/plan-tasks/createBatch create plan tasks