---
title: "API Explorer / Create lead"
description: "Instantly tool instantly-api-leads-post on looot: input fields, $0 per call, output shape, and code to run it with curl, JavaScript or Python."
sidebar:
  hidden: true
---

{/* Generated by scripts/generate-api-reference.mjs from data/api-reference.json. Do not edit. */}

:::warning
This tool is a write action: it changes data in your account at the provider, not only reads it. Run it on purpose, with the input you mean.
:::

:::note
Instantly acts on your own account here. Connect it first; see [Access](/concepts/access).
:::

Write action: this adds a lead to the user's connected Instantly account, which can start sending emails to them. Confirm the details with the user before calling. Requires one of the following scopes: `leads:create`, `leads:all`, `all:create`, `all:all` Not enforced by Instantly's own schema as required, but in practice campaign and email are needed to create a usable lead.

- **Tool id:** `instantly-api-leads-post`
- **Provider:** [Instantly](/providers/instantly)
- **Job:** [Add outreach lead](/reference/jobs/outreach-lead-add) (`outreach.lead.add`)
- **Price:** $0 per call. A call that fails at the provider costs $0.

## Inputs

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `assigned_to` | string | no | ID of the user assigned to the lead. Example: "01a0abd0-46e2-7acf-aedc-3e5f392e083f" |
| `blocklist_id` | string | no | The ID of the blocklist to check for the lead. |
| `campaign` | string | no | Campaign ID associated with the lead. Example: "01a0abd0-46e2-7acf-aedc-3e58827a8d11" |
| `company_name` | string | no | Company name of the lead. |
| `custom_variables` | object | no | Custom variables can include any metadata about the lead that is relevant to the campaign, the campaign will be updated to allow all the other leads in the campaign to have the same custom variables. The custom variables will be added to the lead payload field |
| `email` | string | no | Email address of the lead. |
| `first_name` | string | no | First name of the lead. |
| `job_title` | string | no | Job title of the lead. Example: "Head of Growth" |
| `last_name` | string | no | Last name of the lead. |
| `list_id` | string | no | List ID associated with the lead. |
| `lt_interest_status` | number | no | Lead interest status. It can be either a static value (check below), or a custom status interest value. Example: 1 |
| `personalization` | string | no | Personalization of the lead. Example: "Hello, how are you?" |
| `phone` | string | no | Phone number of the lead. |
| `pl_value_lead` | string | no | Potential value of the lead. Example: "High" |
| `skip_if_in_campaign` | boolean | no | Whether to skip if the lead is already in the campaign. Example: true |
| `skip_if_in_list` | boolean | no | Whether to skip if the lead is already in the list. Example: true |
| `skip_if_in_workspace` | boolean | no | Whether to skip if the lead is already in the workspace. Example: true |
| `verify_leads_for_lead_finder` | boolean | no | Whether to verify the leads for the lead finder. Example: true |
| `verify_leads_on_import` | boolean | no | Whether to verify the leads on import. Example: true |
| `website` | string | no | Website of the lead. Example: "https://example.com" |

## Output

The run's `result` holds the provider's answer. Signed in, `looot inspect instantly-api-leads-post` prints its fields.

## Run it

Every call needs your API token in `LOOOT_TOKEN`; [Sign in](/get-started/sign-in#use-the-token-in-scripts-and-agents) shows how to get one. Each run also needs a new idempotency key, so a retry never pays twice. With `wait: 30` the answer comes back inline when the run ends within 30 seconds. Otherwise you get the running run back: poll `GET /v1/runs/<runId>`.

Example input with placeholder values:

<CodeGroup>

```bash curl
curl -X POST "https://api.looot.ai/v1/runs" \
  -H "Authorization: Bearer $LOOOT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"endpointId":"instantly-api-leads-post","input":{"email":"jane.doe@example.com","phone":"+15555550100","list_id":"<list_id>","website":"https://example.com","campaign":"01a0abd0-46e2-7acf-aedc-3e58827a8d11","job_title":"Head of Growth","last_name":"Doe","first_name":"Jane","assigned_to":"01a0abd0-46e2-7acf-aedc-3e5f392e083f","blocklist_id":"<blocklist_id>","company_name":"Example Inc","pl_value_lead":"High","personalization":"Hello, how are you?","skip_if_in_list":true,"lt_interest_status":1,"skip_if_in_campaign":true,"skip_if_in_workspace":true,"verify_leads_on_import":true,"verify_leads_for_lead_finder":true},"wait":30}'
```

```js JavaScript
const response = await fetch("https://api.looot.ai/v1/runs", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LOOOT_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    endpointId: "instantly-api-leads-post",
    input: {
      email: "jane.doe@example.com",
      phone: "+15555550100",
      list_id: "<list_id>",
      website: "https://example.com",
      campaign: "01a0abd0-46e2-7acf-aedc-3e58827a8d11",
      job_title: "Head of Growth",
      last_name: "Doe",
      first_name: "Jane",
      assigned_to: "01a0abd0-46e2-7acf-aedc-3e5f392e083f",
      blocklist_id: "<blocklist_id>",
      company_name: "Example Inc",
      pl_value_lead: "High",
      personalization: "Hello, how are you?",
      skip_if_in_list: true,
      lt_interest_status: 1,
      skip_if_in_campaign: true,
      skip_if_in_workspace: true,
      verify_leads_on_import: true,
      verify_leads_for_lead_finder: true,
    },
    wait: 30,
  }),
});
const run = await response.json();
console.log(run.status, run.result);
```

```python Python
import os
import uuid

import requests

response = requests.post(
    "https://api.looot.ai/v1/runs",
    headers={
        "Authorization": f"Bearer {os.environ['LOOOT_TOKEN']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={
        "endpointId": "instantly-api-leads-post",
        "input": {
            "email": "jane.doe@example.com",
            "phone": "+15555550100",
            "list_id": "<list_id>",
            "website": "https://example.com",
            "campaign": "01a0abd0-46e2-7acf-aedc-3e58827a8d11",
            "job_title": "Head of Growth",
            "last_name": "Doe",
            "first_name": "Jane",
            "assigned_to": "01a0abd0-46e2-7acf-aedc-3e5f392e083f",
            "blocklist_id": "<blocklist_id>",
            "company_name": "Example Inc",
            "pl_value_lead": "High",
            "personalization": "Hello, how are you?",
            "skip_if_in_list": True,
            "lt_interest_status": 1,
            "skip_if_in_campaign": True,
            "skip_if_in_workspace": True,
            "verify_leads_on_import": True,
            "verify_leads_for_lead_finder": True,
        },
        "wait": 30,
    },
    timeout=90,
)
run = response.json()
print(run["status"], run.get("result"))
```

</CodeGroup>

To let looot pick among every provider of this job instead, send `job:outreach.lead.add` as `endpointId`; see [the job page](/reference/jobs/outreach-lead-add).
