Leads
Retrieve sales leads, public statuses, source, owner summary, and conversion relationship.
Permission: לידים (leads:read)
| Operation | Path |
|---|---|
| List | GET /leads |
| Retrieve | GET /leads/{id} |
The list supports common cursor and time filters, search over name, contact name, email, and phone, and these statuses: new, contacted, in_progress, proposal, negotiation, won, lost. Sort order is updated_at descending, then ID descending.
const apiKey = process.env.DAILY_API_KEY;
if (!apiKey) throw new Error('DAILY_API_KEY is required');
const url = new URL('https://api.godaily.co.il/v1/leads');
url.searchParams.set('status', 'proposal');
url.searchParams.set('updated_after', '2026-07-01T00:00:00.000Z');
const response = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}`, Accept: 'application/json' } });
const body = await response.json();
if (!response.ok) throw new Error(`Daily API ${response.status} (${body.request_id})`);
console.log(body.data);{
"id": "20c85f5f-d823-411f-bbf7-f5b76ea77235",
"object": "lead",
"name": "Nova Hospitality",
"contact_name": "Eitan Bar",
"email": "eitan@nova-hospitality.test",
"phone": "+972-54-555-0174",
"address": "Herzliya",
"source": "website",
"status": "proposal",
"owner": { "id": "913f5ab6-9525-483c-9aa1-73d561b8bfa8", "display_name": "Maya Cohen" },
"converted_customer_id": null,
"created_at": "2026-07-08T07:45:00.000Z",
"updated_at": "2026-07-20T10:05:00.000Z"
}Contact fields, source, owner, and converted customer can be null. The owner is returned only when the assigned sales agent belongs to the authenticated business.
API playground
Your key stays only in this React page’s memory and is sent directly to Daily API. It is not persisted, placed in a URL, logged, or sent to analytics. Refreshing or closing this page clears it.
https://api.godaily.co.il/v1/leadsFull lifecycle
leads:write allows POST /leads, PATCH /leads/{id}, DELETE /leads/{id}, PATCH /leads/{id}/status, POST /leads/{id}/activities, and PATCH /leads/{id}/activities/{activityId}.
Lead intake as a draft
POST /leads creates a lead draft and returns 201 with data.id (the draft ID), data.status: "DRAFT", and data.created_at. It requires leads:write. Request fields remain unchanged, including the requirement for a business or contact name.
The draft appears in the Leads screen with Continue registration and Delete draft actions, and the main menu shows a draft count. Continuing registration opens a form with the submitted details for review and editing. Only saving that form creates an active lead and removes the draft. Deleting the draft does not create a lead.
Drafts are excluded from GET /leads. The returned ID identifies a draft and cannot be used in lead detail, update, delete, activity, or conversion routes. After registration, the lead receives a new ID and appears in the lead list. The request's status is kept as the intended status after registration; the intake response always returns DRAFT.
The schemas cover business and contact names, phone, email, address, source, general note, agent, products of interest, and activity details. Update status and loss reason through /status; activities and tasks hold follow-up data. GET /leads/{id}/details includes activities, tasks, and products of interest.
POST /leads/{id}/convert-to-customer with an UpdateCrmFollowUpFrequencyDto body converts a successfully closed lead to a customer. It requires both customers:write and leads:write. The response includes created, already_converted, customer, and lead.
Deleting an unconverted lead also deletes its activities and product interests. Tasks remain and are detached from the lead. Deleting a converted lead returns 409 lead_already_converted.

