<!-- AUTO-GENERATED from the capability registry — regenerate: npm run generate:registry -->

# `instantly.addLead` — Instantly operation

> Direct access to Instantly's own API, priced in dollars on your Orange Slice key.
> Everything we expose, with prices: https://orangeslice.ai/llms.txt

Add a prospect to an Instantly campaign.

## Price

**$0.002 per call**

Billed on every call, including one that returns nothing.

Orange Slice holds the vendor account, so there is nothing to buy and no key to
paste. You connect your sending domains once; the price above is all you pay.


## Requires a connected account

This runs from **your sending domains**. Cold email needs warmed domains with a sending history. We buy and warm yours inside our Instantly workspace, so there is no tool to buy and no key to paste.

If the account is not connected the call returns **HTTP 428** with a
`connect_url`, and the CLI exits **9**. That is not an authentication failure
and no retry will clear it: a person has to open the link and approve access.

- Connect at: https://www.orangeslice.ai/dashboard/upgrade


## Call it

**CLI**

```bash
orangeslice instantly add-lead --campaign <string> --email <string>
```

**HTTP**

```bash
curl -X POST 'https://orangeslice.ai/api/v1/run' \
  -H 'Authorization: Bearer $ORANGESLICE_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"capability":"instantly.addLead","input":{"campaign":"<string>","email":"<string>"}}'
```

## Inputs

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `campaign` | string | Yes | Instantly campaign id to enrol the lead into |
| `companyName` | string | No | Prospect's company |
| `customVariables` | json | No | Extra merge variables available to the campaign's templates |
| `email` | string | Yes | Prospect's email address — required when enrolling into a campaign |
| `firstName` | string | No | Prospect's first name |
| `jobTitle` | string | No | Prospect's job title |
| `lastName` | string | No | Prospect's last name |
| `personalization` | string | No | First-line personalisation, available to templates |
| `skipIfInWorkspace` | boolean | No | Skip the lead if it already exists anywhere in the workspace (default true) |
| `website` | string | No | Prospect's company website |

Inputs may also be piped as NDJSON, one JSON object per line.

## Output

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "email": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "campaign": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "skipped": {
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "email",
    "campaign",
    "skipped"
  ],
  "additionalProperties": false
}
```

## Before you run

- **Price it first.** `orangeslice instantly add-lead --dry-run` returns the
  exact dollar cost and spends nothing.
- **Large runs need approval.** Above the spend-gate threshold a run exits **7**
  until it carries a plan token, and only a dry run mints one.
- **Scopes:** send
- **Permitted uses:** outreach

## Exit codes

`0` ok · `2` bad input · `3` auth · `4` not found · `5` provider ·
`6` rate limited · `7` spend gate, nothing billed · `8` timeout ·
`9` a third-party account needs connecting
