Skip to content
WorksBuddy Logo

Lio · Lead Manager

AI lead management: capture, qualify, and work every lead.

Base path/api · /api/v1AuthBearer JWT · x-api-keyFormatJSON · snake_case

LIO API Documentation

Product: LIO — Lead Intelligence (WorksBuddy suite) Last updated: 2026-06-15

LIO lets you capture, enrich, score, route, and manage leads and deals programmatically. Use the API to push leads from your own forms, apps, and ad platforms, read AI lead scores and intent signals, manage pipelines and deals, run reports, and keep your CRM data in sync.


Table of contents#

  1. Getting started
  2. Authentication
  3. Requests and responses
  4. Errors
  5. Pagination, filtering, and sorting
  6. Endpoint reference
  7. Core resources in detail
  8. Lead ingestion and web forms
  9. Intent signals and email tracking
  10. Public booking
  11. Data models
  12. Common integration use cases

1. Getting started#

ItemValue
Base URLhttps://<host>
Content typeapplication/json (file uploads use multipart/form-data)
Core objectsLead, Deal, Contact, Company, Pipeline, Stage, Activity

LIO is multi-tenant: every record belongs to an organization, and your requests only ever see data from your own organization.

Endpoints are served under two path prefixes, /api and /api/v1. Use the exact path shown for each endpoint — both prefixes are available to any authenticated caller.

To make your first call:

  1. Get a token with POST /api/auth/login.
  2. Send that token in the Authorization header on every request.

2. Authentication#

Most endpoints authenticate with a bearer token that you obtain by logging in. Lead-ingestion endpoints can alternatively authenticate with an API key.

2.1 Log in and get a token#

POST /api/auth/login

Exchange your email and password for a bearer token.

ParameterTypeRequiredDescription
emailstringYesYour LIO account email
passwordstringYesYour account password

Sample request:

curl -X POST https://<host>/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "you@company.com",
    "password": "<your_password>"
  }'

Sample response (200 OK):

{
  "success": true,
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 2592000,
  "expires_at": "2026-07-15T09:14:32.000Z",
  "user": {
    "id": 142,
    "email": "you@company.com",
    "name": "Your Name",
    "organization_id": "org_...",
    "role_name": "Admin"
  }
}

The token is valid for 30 days (expires_in is in seconds). It scopes all data access to your organization automatically.

CodeMeaning
400email and password not both provided
401Invalid credentials
403Account inactive or no organization assigned
404No LIO account exists for this email

2.2 Use the token#

Send the token in the Authorization header on every request:

Authorization: Bearer <access_token>

A missing, malformed, or expired token returns 401.

2.3 API keys (for lead ingestion)#

For server-to-server lead capture you can use an API key instead of a bearer token. Create and manage keys from the LIO app (Settings → API Keys), then send the key as a header:

x-api-key: <your_api_key>

API keys are accepted by the lead-ingestion and hosted-web-form endpoints described in Section 8. A key can be restricted to specific domains and IP addresses when you create it.


3. Requests and responses#

Most endpoints return a standard envelope:

{ "success": true, "message": "...", "data": [], "total": 100, "page": 1, "limit": 10 }

On failure:

{ "success": false, "error": { "message": "...", "type": "...", "code": null } }

A few endpoints (hosted forms, tracking pixels, redirects) return a non-JSON body appropriate to their purpose; these are called out where relevant.

Notes:

  • All timestamps are ISO 8601.
  • IDs are numeric.
  • Requests are scoped to your organization; you never need to pass an organization identifier.

4. Errors#

CodeMeaning
200OK
201Created
400Bad request / invalid parameters
401Not authenticated
403Forbidden
404Not found
409Conflict (for example, a duplicate lead)
422Validation error
429Too many requests
500Server error

Requests may be rate limited; if you receive 429, retry with exponential backoff.

API-key specific errors:

CodeMeaning
401API key missing
403Invalid or expired API key, or the calling IP/domain is not allowed

5. Pagination, filtering, and sorting#

List endpoints share a common query convention:

ParameterTypeDefaultDescription
pageinteger1Page number
limitinteger10Items per page
search_valuestringFree-text search
order_bystringidField to sort by
order_instringDESCASC or DESC
start_date / end_datedateDate range filter (ISO)

List responses return data alongside total, page, and limit. Most list endpoints also accept resource-specific filters; the important ones are noted per resource in Section 7.


6. Endpoint reference#

Endpoints are grouped by area. Unless an endpoint is documented as using an API key, it authenticates with the bearer token from Section 2.

In the Parameters column, bold fields are required and the rest are optional. :id and similar path values are shown in the path. List endpoints also accept the standard list parameters (page, limit, search_value, order_by, order_in, date range).

6.1 Authentication and users#

MethodPathDescriptionParameters
POST/api/auth/loginLog in, get a tokenemail, password
POST/api/auth/logoutLog out
GET/api/user/myCurrent user profile
GET/api/user/listList organization usersrole_id, state_id (csv)
POST/api/user/addAdd a userfirst_name, email, phone_no, password; last_name, role_id
POST/api/user/update/:idUpdate a userfirst_name, email, phone_no; last_name, language, timezone
POST/api/user/change-passwordChange passwordcurrent_password, new_password, confirm_password
POST/api/user/deleteRemove a useruser_id
GET/api/user/global-searchSearch across your datasearch_value
GET/api/role/listList rolesstate_id
POST/api/role/addCreate a rolename; description

6.2 Leads#

See §7.1 for full field details on creating, updating, and filtering leads.

MethodPathDescriptionParameters
GET/api/lead/listList leads (filter, sort, paginate)Lead filters — see §7.1
POST/api/lead/addCreate a leadfirst_name, last_name; see §7.1
GET/api/lead/view/:idGet one lead
POST/api/lead/update/:idUpdate a leadAny lead field — see §7.1
DELETE/api/lead/deleteDelete leadsids (array)
POST/api/lead/status-changeChange lead statusstatus; ids or select_all + filters
POST/api/lead/assign-userAssign leads to a repassigned_to; ids or select_all + filters
POST/api/lead/assign-tagsAdd tagstags; ids or select_all + filters
POST/api/lead/set-assign-tagsReplace tagstags; ids or select_all + filters
POST/api/lead/lead-importsBulk import from CSV/XLSXmultipart: file
POST/api/lead/:id/upload-profile-imageUpload a profile imagemultipart: image
POST/api/lead/update-custom-fieldsUpdate custom field valueslead_id, custom_fields
GET/api/lead/note/listList noteslead_id
POST/api/lead/note/addAdd a notelead_id, title; note
GET/api/lead/follow-up/listList follow-upslead_id, status (1–6)
POST/api/lead/follow-up/addCreate a follow-uplead_id, follow_up_date (ISO); notes
GET/api/lead/document/listList lead documentslead_id
POST/api/lead/document/addAttach a documentmultipart: lead_id, file; document_type, description
GET/api/import-job/listTrack import job statustype

6.3 Lead enrichment#

MethodPathDescriptionParameters
POST/api/lead-enrichment/enrichEnrich a single leadAt least one of: lead_id, email, linkedin_url, name, company, domain
POST/api/lead-enrichment/enrich/bulkBulk enrich (asynchronous)leads (array of {linkedin_url/email/name/company/domain}); group_id
GET/api/lead-enrichment/job/:jobIdEnrichment job status
GET/api/lead-enrichment/linkedin-leads/recentRecent LinkedIn leadspage, limit, search
GET/api/lead-enrichment/linkedin-leads/:idOne LinkedIn lead

6.4 Contacts and companies#

MethodPathDescriptionParameters
GET/api/contact/listList contactsmy, date range
GET/api/contact/view/:idGet one contact
POST/api/contact/addCreate a contactname, company_id; email, phone_number, designation, tags
POST/api/contact/update/:idUpdate a contactAny contact field
POST/api/contact/bulk-updateBulk update contactscontact_ids or select_all + filters; company_id, lead_score, tags
DELETE/api/contact/delete/:idDelete contacts:id, or ids (array) / select_all
GET/api/company/listList companiesmy, company_id, industry filter, date range
GET/api/company/statsCompany statisticsSame filters as list
GET/api/company/view/:idGet one company
GET/api/company/similar/:idSimilar companies
POST/api/company/addCreate a companycompany_name; city, country, website, employee_size, company_logo (multipart)
POST/api/company/update/:idUpdate a companyAny company field
POST/api/company/enrichEnrich company datacompany_id
DELETE/api/company/delete/:idDelete companies:id, or ids (array) / select_all

6.5 Custom fields, lookups, and views#

MethodPathDescriptionParameters
POST/api/lead/custom-fieldDefine a custom fieldlead_id, field_name; field_value
GET/api/custom-lookups/listList lookup values (status, source, tags, etc.)module_name, type, is_active, parent_id
POST/api/custom-lookups/addCreate a lookup valuemodule_name, type, name; value, color_code, parent_id
POST/api/custom-lookups/update/:idUpdate a lookup valuename, value, color_code, is_active
GET/api/custom-view/listList saved viewsmodule_name, search_value
POST/api/custom-view/addCreate a saved viewmodule_name, visibility (private/team/public); view_name, filters, columns, sorting
POST/api/custom-view/update/:idUpdate a saved viewAny view field
DELETE/api/custom-view/delete/:idDelete a saved view

6.6 Pipelines and deals#

See §7.2 and §7.3 for full field details.

MethodPathDescriptionParameters
GET/api/pipelines/listList pipelinesstate_id
POST/api/pipelines/addCreate a pipeline with stagesname; stages, max_deal_limit, region — see §7.3
PUT/api/pipelines/update/:idUpdate a pipelineAny pipeline field
DELETE/api/pipelines/deleteDelete pipelinesids (array)
GET/api/pipelines/stages/:idStages for a pipeline
GET/api/lead/deal/listList dealslead_id, pipeline_id, status (stage ID), date range
POST/api/lead/deal/addCreate a deallead_id, pipeline_id, stage_id, title, value, expected_close_date — see §7.2
POST/api/lead/deal/update/:idUpdate a dealAny deal field
DELETE/api/lead/deal/deleteDelete dealsids (array)

6.7 Forecasting#

MethodPathDescriptionParameters
GET/api/forecast/deal/:idLatest deal forecast and trend
GET/api/forecast/deal/:id/historyDeal forecast historylimit
GET/api/forecast/pipelinePipeline forecastperiod (monthly/quarterly), months, pipeline_id
GET/api/forecast/pipeline/contributorsDeal-level breakdownpipeline_id, period_month (YYYY-MM); page
GET/api/forecast/at-riskAt-risk dealsstatus, owner (me/all), pipeline_id, limit
GET/api/forecast/accuracyForecast accuracy reportmonths, pipeline_id, format (json/csv)

6.8 Target accounts (ABM)#

MethodPathDescriptionParameters
GET/api/target-accountsList target accountshealth, tier, owner_id, search, sort
POST/api/target-accountsCreate a target accountcompany_id; owner_id, tier, estimated_decision_makers, icp_fit_score
GET/api/target-accounts/:idAccount detail
PATCH/api/target-accounts/:idUpdate an accountowner_id, tier, icp_fit_score, status
DELETE/api/target-accounts/:idDelete an account
POST/api/target-accounts/:id/contactsAdd a contactcontact_id; stakeholder_role
POST/api/target-accounts/:id/send-bulk-emailEmail account contactssubject, body; contact_ids, mode
GET/api/target-accounts/:id/outreach-plansList outreach plans
POST/api/target-accounts/:id/outreach-plansCreate an outreach stepcontact_id, channel, scheduled_at (ISO); assigned_to, notes
GET/api/reports/abm/funnelABM funnel metrics
GET/api/reports/abm/top-engagedTop engaged accountslimit

6.9 AI tools and email#

MethodPathDescriptionParameters
POST/api/ai-tools/magicpenEnhance note textnoteText; leadContext
POST/api/ai-tools/email-generatorGenerate an email bodyprompt, emailSubject, emailBody, leadContext
POST/api/ai-email/generate/:lead_idDraft an AI email for a leadpersona
POST/api/ai-email/bulk-generateDraft emails for many leadslead_ids (array, max 500); persona
GET/api/ai-email/drafts/lead/:lead_idList drafts for a lead
PUT/api/ai-email/draft/:draft_id/approveApprove a draft
POST/api/ai-email/draft/:draft_id/sendSend an approved draftconfig_id (mail account ID)
GET/api/creditsOrganization credit balance
GET/api/credits/ai-featuresAI feature pricing

AI generation features (magicpen, email generation, AI dashboards) consume credits from your organization's balance.

6.10 Dashboards and analytics#

MethodPathDescriptionParameters
GET/api/dashboard/overviewOverview statisticsstart_date, end_date
GET/api/dashboard/statsCRM statisticsstart_date, end_date
GET/api/dashboard/lead-agingLead aging analysis
GET/api/dashboard/top-accountsTop accounts
GET/api/dashboardsList dashboardsscope (personal/team/workspace)
POST/api/dashboardsCreate a dashboarddashboard_id; name, scope, definition
PUT/api/dashboards/:idUpdate a dashboarddefinition, name, scope
DELETE/api/dashboards/:idDelete a dashboard
POST/api/ai-dashboards/generateGenerate a dashboard from a promptprompt
GET/api/queriesList saved queries
POST/api/queries/:queryId/executeRun a saved queryparameters, widgetType

6.11 Mail, inbox, calendar, and meetings#

Most inbox endpoints require config_id (the mail account ID) as a query parameter.

MethodPathDescriptionParameters
GET/api/mail-configurations/listList mail configurationsmailer, state_id, date range
POST/api/mail-configurations/addAdd a mail configurationmailer, from_address, from_name, password (OAuth token)
GET/api/inbox/listList inbox messagesconfig_id; folder, search, unreadOnly, date range
GET/api/inbox/view/:messageIdMessage detailconfig_id
POST/api/inbox/sendSend an emailconfig_id, to, subject, body; cc, bcc
POST/api/inbox/reply/:messageIdReply to a messageconfig_id, body
GET/api/calendar/availabilityAvailability slotsdate, duration, from, to, tz
GET/api/calendar/:provider/eventsList calendar eventsfrom, to
POST/api/calendar/:provider/eventsCreate a calendar eventProvider-specific event object
GET/api/meeting/listList meetingslead_id, contact_id, company_id, status, from, to
POST/api/meeting/addCreate a meetingtitle, start_time, end_time; lead_id, attendees, meeting_tool
GET/api/meeting/view/:idGet a meeting
POST/api/meeting/update/:idUpdate a meetingtitle, start_time, end_time, attendees, status
DELETE/api/meeting/delete/:idDelete a meeting
GET/api/meeting/:id/transcriptMeeting transcript
POST/api/meeting/:id/generate-summaryGenerate a meeting summarydetail (brief/detailed)

6.12 Voice and calling#

MethodPathDescriptionParameters
GET/api/voice/available-numbersSearch phone numbersareaCode, contains, type, limit
GET/api/voice/my-numbersList owned numbers
POST/api/voice/purchase-numberPurchase a numberphoneNumber (E.164); friendlyName, type
POST/api/voice/assign-numberAssign a number to a usernumber_id; user_ids or user_id
GET/api/voice/walletCalling wallet balance
POST/api/call/voice-tokenGet a calling token
POST/api/call/agent/initiateStart an AI agent callsystem_prompt; lead_id or contact_id; first_message, voice_id, language
GET/api/call/listCall historylead_id, contact_id, company_id, status
GET/api/call/:idOne call record
GET/api/call/:id/recordingCall recording link
GET/api/call/:id/transcriptCall transcript

6.13 Intent signals and alerts#

MethodPathDescriptionParameters
GET/api/intent-alert/listList intent alertslead_id, assigned_to_id, from_date, to_date
GET/api/intent-alert/hot-leadsHot leadslimit, assigned_to_id, signal_type
GET/api/intent-alert/lead/:leadIdAlerts for a leadpage, limit
POST/api/intent-alert/acknowledge/:idAcknowledge an alert
POST/api/intent-alert/signalLog an intent signallead_id, signal_type; signal_detail, source, occurred_at

6.14 Integrations (CRM import and messaging)#

MethodPathDescriptionParameters
GET/api/connected-apps/listList connected providers
GET/api/connected-apps/hubspot/propertiesHubSpot fieldsall (0/1)
POST/api/connected-apps/hubspot/importStart a HubSpot importmapping (lead + company); from, to, limit
GET/api/connected-apps/hubspot/import/:id/statusHubSpot import status
GET/api/slack/channelsList Slack channels
POST/api/slack/test-notificationSend a test Slack notificationchannel; event_type
GET/api/teams/channelsList Teams channelsteam_id

6.15 Notifications, files, and exports#

MethodPathDescriptionParameters
GET/api/notification/listList notificationsis_read, type_id
POST/api/notification/readMark notifications readids (array)
GET/api/feed/listActivity feedmodel_type, model_id
POST/api/storage-file/addUpload a filemultipart: file
POST/api/file/attachAttach a cloud fileprovider, subject_type, subject_id, file ({id, name, mime_type, web_url})
GET/api/file/listList attached filessubject_type, subject_id; category, provider
POST/api/exports/createStart an export jobexport_type (leads/companies/contacts/clients), filters
GET/api/exports/listList exportspage, limit
GET/api/exports/download/:idDownload an export

7. Core resources in detail#

7.1 Leads#

List leadsGET /api/lead/list

In addition to the standard list parameters, leads support:

ParameterDescription
score_min / score_maxLead score range
assigned_toUser ID, comma-separated IDs, or true for the current user
unassignedtrue to return only unassigned leads
lead_source / priority / state_idComma-separated lookup IDs
company, city, state, countryLocation and company filters
created_from / created_toCreation date range (YYYY-MM-DD)

Create a leadPOST /api/lead/add

ParameterTypeRequiredDescription
first_namestringYesFirst name (2–50 chars)
last_namestringYesLast name (2–50 chars)
emailstringNoUnique within your organization
phone_numberstringNoPhone
companystringNoCompany name (creates the company if new)
job_titlestringNoJob title
linkedin_urlstringNoLinkedIn profile URL
statusintegerNoStatus lookup ID (auto-assigned if omitted)
priorityintegerNo1=Low, 2=Medium, 3=High, 4=Urgent
lead_sourceintegerNo1=Website, 2=Referral, 3=LinkedIn, 4=Email, 5=Direct
estimated_valuenumberNoEstimated deal value
assigned_tointegerNoUser ID of the assigned rep
tagsarrayNoTag lookup IDs

Update a leadPOST /api/lead/update/:id

Accepts any creatable field. custom_fields and ai_information are merged into the existing values.

Bulk actions — status change, assignment, and tagging accept either an explicit ids array or select_all: true with a filters object to act on every lead matching the current filter.

7.2 Deals#

Create a dealPOST /api/lead/deal/add

ParameterTypeRequiredDescription
lead_idintegerYesLead this deal belongs to
pipeline_idintegerYesTarget pipeline
stage_idintegerYesStarting stage
titlestringYesDeal title (2–50 chars)
valuenumberYesDeal value (≥ 1)
expected_close_datedateYesExpected close
priorityintegerNo1=Low … 4=Urgent
descriptionstringNoUp to 1000 chars

List dealsGET /api/lead/deal/list supports lead_id, pipeline_id, status (stage ID), and date-range filters alongside the standard list parameters.

7.3 Pipelines#

Create a pipelinePOST /api/pipelines/add

ParameterTypeRequiredDescription
namestringYesPipeline name (≥ 2 chars)
stagesarrayNoStages, each { name, color, position, is_won, is_lost }
max_deal_limitnumberNoOptional value cap
regionstringNoOptional region label

Some pipeline stages are protected and cannot be changed or removed.


8. Lead ingestion and web forms#

These endpoints let external systems push leads into LIO. They accept an API key (x-api-key) instead of a bearer token.

8.1 Create a lead#

POST /api/v1/lead

Creates a lead in the organization that owns the API key. Provide at least one of email, phone_number, or linkedin_url.

ParameterTypeDescription
emailstringLead email
phone_numberstringPhone
first_name / last_namestringName
companystringCompany name
job_titlestringJob title
linkedin_urlstringLinkedIn URL
statusintegerStatus lookup ID (default 1)
priorityinteger1=Low, 2=Medium, 3=High, 4=Urgent (default 2)
lead_sourceinteger1=Website, 2=Referral, 3=LinkedIn, 4=Email, 5=Direct
tagsarrayTag strings (created automatically)
custom_fieldsobjectKey-value custom fields

Sample request:

curl -X POST https://<host>/api/v1/lead \
  -H "x-api-key: <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "jane@acme.com",
    "first_name": "Jane",
    "company": "Acme Corp",
    "lead_source": 1
  }'

Sample response:

{
  "success": true,
  "message": "Lead created successfully",
  "data": {
    "id": 80231,
    "email": "jane@acme.com",
    "first_name": "Jane",
    "company": "Acme Corp",
    "status": 1,
    "priority": 2,
    "score": 0,
    "created_at": "2026-06-15T09:14:32.000Z"
  }
}

A duplicate (same email or LinkedIn URL) returns 409. To accept it anyway, send duplicate: 1; to update the existing lead instead, send merge: 1. Any field not listed above is stored under custom_fields. AI scoring fields populate shortly after creation.

8.2 List leads via API key#

GET /api/v1/lead/lead-list — paginated list of the key's organization. Supports page, limit, search_value, order_by, and order_in.

8.3 Hosted web form#

GET /api/v1/web-form/:form_link — returns a hosted lead-capture form. Submissions create leads in the form's organization. Build and manage forms in the LIO app.


9. Intent signals and email tracking#

9.1 Log an intent signal#

POST /api/v1/intent-signal

Record a behavioral signal against a lead. Resulting hot leads surface through GET /api/intent-alert/hot-leads.

ParameterTypeRequiredDescription
lead_idintegerYesLead the signal belongs to
signal_typestringYesSee list below
signal_detailobjectNoExtra context
occurred_atdateNoWhen it happened (defaults to now)

signal_type values: pricing_page_visit, demo_requested, form_submitted, reply_received, email_opened, email_opened_3x, link_clicked, case_study_download, manual.

9.2 Email tracking#

Embed these in outbound email to capture engagement:

PathPurpose
GET /api/v1/track/open/:tokenOpen-tracking pixel (returns a 1×1 image)
GET /api/v1/track/click/:tokenClick redirect (redirects to the target URL)

Opens and clicks generate email_opened and link_clicked intent signals automatically.


10. Public booking#

These endpoints back a public scheduling page and require no authentication.

MethodPathDescription
GET/api/v1/booking/:slugBooking profile for a rep
GET/api/v1/booking/:slug/availabilityAvailable slots (date, from, to, duration, tz)
POST/api/v1/booking/:slug/confirmConfirm a booking

Confirm a bookingPOST /api/v1/booking/:slug/confirm

ParameterTypeRequiredDescription
start / enddateYesSlot start and end (ISO)
namestringYesAttendee name
emailstringYesAttendee email
company / phone / notesstringNoOptional details

11. Data models#

Core objects and their main fields. Read-only fields are populated by LIO and cannot be set directly.

Lead#

FieldTypeDescription
idnumberIdentifier
first_name / last_namestringName
emailstringEmail
phone_numberstringPhone
companystringCompany name
company_idnumberLinked company
job_title / industry / websitestringFirmographics
address / city / state / country / pin_codestringLocation
statusnumberStatus lookup ID
prioritynumber1=Low, 2=Medium, 3=High, 4=Urgent
lead_sourcenumber1=Website, 2=Referral, 3=LinkedIn, 4=Email, 5=Direct
scorenumberLead score (read-only)
estimated_valuenumberEstimated value
assigned_tonumberAssigned rep
linkedin_urlstringLinkedIn URL
tagsarrayTags
custom_fieldsobjectCustom field values
notesstringFree-form notes
ai_informationobjectAI enrichment (read-only)
last_activity_atdateLast sales activity
created_at / updated_atdateTimestamps

Resolved labels status_text, priority_text, and lead_source_text are returned for convenience.

Deal#

FieldTypeDescription
idnumberIdentifier
lead_idnumberOwning lead
pipeline_idnumberPipeline
stage_idnumberCurrent stage
titlestringDeal title
valuenumberDeal value
expected_close_datedateExpected close
prioritynumber1=Low … 4=Urgent
descriptionstringDescription

Contact#

FieldTypeDescription
idnumberIdentifier
namestringContact name
email / phone_numberstringContact details
company_idnumberLinked company
lead_idnumberLinked lead
designation / seniority / decision_makerstringRole and buyer signals
linkedin_urlstringLinkedIn URL
lead_scorenumberContact score
statusnumberStatus lookup ID

Company#

FieldTypeDescription
idnumberIdentifier
company_namestringCompany name
industry_typestringIndustry
company_logostringLogo URL
address / city / countrystringLocation
employee_sizestringHeadcount range
ratingnumber1–5
contact_email / phone_number / websitestringContact details
summarystringDescription

Pipeline and stage#

Pipeline: id, name, description, max_deal_limit, region, state_id (1=Active, 0=Inactive).

Stage: id, pipeline_id, name, color, position, is_won, is_lost, probability (0–1), max_days_in_stage.

Meeting#

id, user_id, lead_id / contact_id / company_id, title, description, location, start_time, end_time, timezone, attendees, meeting_url, meeting_tool (meet/teams/zoom/custom/none), status (1=Scheduled, 2=Rescheduled, 3=Held, 4=Cancelled, 5=No Show).

Call#

id, user_id, lead_id / contact_id / company_id, direction (inbound/outbound), from_number / to_number, status, started_at / answered_at / ended_at, duration_sec, transcript, price.


12. Common integration use cases#

  1. Push leads from your own form or appPOST /api/v1/lead with an API key.
  2. Host a lead-capture form — embed GET /api/v1/web-form/:form_link; submissions become leads.
  3. Sync deal stages from another system — list deals with GET /api/lead/deal/list, then update with POST /api/lead/deal/update/:id.
  4. Feed behavioral intent signalsPOST /api/v1/intent-signal, then read hot leads via GET /api/intent-alert/hot-leads.
  5. Track email engagement — embed the open pixel and click redirect from Section 9.
  6. Offer public bookingGET /api/v1/booking/:slug/availabilityPOST .../confirm.
  7. Import an existing CRMPOST /api/connected-apps/hubspot/import, then poll the import status endpoint.
  8. Bulk import from a spreadsheetPOST /api/lead/lead-imports, then poll GET /api/import-job/list.