Skip to content
looot docs
Esc
↑↓navigate↵open⌘Jpreview
On this page

API Explorer / Create lead

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.

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
  • Job: Add outreach lead (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 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:

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}'
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);
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"))

To let looot pick among every provider of this job instead, send job:outreach.lead.add as endpointId; see the job page.

Was this page helpful?