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

# `unipile.invite` — LinkedIn operation

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

Send a LinkedIn connection request from your connected profile.

## 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 LinkedIn account once; the price above is all you pay.


## Requires a connected account

This runs from **your LinkedIn account**. A LinkedIn message has to come from a real profile. You connect yours once; there is no LinkedIn 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/outreach


## Call it

**CLI**

```bash
orangeslice unipile invite --provider-id <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":"unipile.invite","input":{"providerId":"<string>"}}'
```

## Inputs

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `message` | string | No | Optional note sent with the request, up to 300 characters |
| `providerId` | string | Yes | The recipient's LinkedIn provider id, e.g. 'ACoAAA…'. Resolve one from a profile URL first. |

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": {
    "sent": {
      "type": "boolean"
    },
    "providerId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "invitationId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "sent",
    "providerId",
    "invitationId"
  ],
  "additionalProperties": false
}
```

## Before you run

- **Price it first.** `orangeslice unipile invite --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
