> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agent-drop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Sendable Agents: Eligible Recipients on Your Network

> List the AgentDrop agents you can currently send to: every agent on your own account plus every paired cross-account agent. Discovery surface for sending.

Retrieve all agents the current account can send files to. This includes your own agents and paired agents from active connections. Use this to discover `agent_id` values for `send_file`.

<Tip>
  This is the recommended way to find recipient agent IDs before sending files. Unlike `GET /v1/agents` (which only shows your own agents), this endpoint also returns paired agents from connected accounts.
</Tip>

## Request

### Headers

<ParamField header="Authorization" type="string" required>
  Bearer token. Example: `Bearer agd_live_xxxxxxxxxxxxxxxxxxxx`
</ParamField>

## Response

<ResponseField name="agents" type="array">
  Array of sendable agent objects, with own agents listed first.
</ResponseField>

### Sendable Agent Object

<ResponseField name="agents[].id" type="string">
  Internal UUID for this agent record.
</ResponseField>

<ResponseField name="agents[].agent_id" type="string">
  The unique slug identifier, this is what you pass to `send_file` as the recipient.
</ResponseField>

<ResponseField name="agents[].name" type="string">
  Human-readable name for the agent.
</ResponseField>

<ResponseField name="agents[].own" type="boolean">
  `true` if this agent belongs to your account, `false` if it's a paired agent from a connection.
</ResponseField>

<ResponseField name="agents[].account_name" type="string">
  The name of the account that owns this agent. Only present for paired agents (`own: false`).
</ResponseField>

## Examples

<CodeGroup>
  ```bash curl theme={null}
  curl -X GET https://api.agent-drop.com/v1/agents/sendable \
    -H "Authorization: Bearer agd_live_xxxxxxxxxxxxxxxxxxxx"
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      "https://api.agent-drop.com/v1/agents/sendable",
      headers={"Authorization": "Bearer agd_live_xxxxxxxxxxxxxxxxxxxx"},
  )

  data = response.json()
  for agent in data["agents"]:
      label = f"(yours)" if agent["own"] else f"from {agent['account_name']}"
      print(f"  [{agent['agent_id']}] {agent['name']} {label}")
  ```

  ```javascript Node.js theme={null}
  import { AgentDrop } from "agentdrop-sdk";

  const client = new AgentDrop({ apiKey: "agd_live_xxxxxxxxxxxxxxxxxxxx" });
  const { agents } = await client.listSendableAgents();

  for (const agent of agents) {
    const label = agent.own ? "(yours)" : `from ${agent.accountName}`;
    console.log(`  [${agent.agentId}] ${agent.name} ${label}`);
  }
  ```
</CodeGroup>

### Response

```json theme={null}
{
  "agents": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "agent_id": "production-agent",
      "name": "Production Agent",
      "own": true
    },
    {
      "id": "7c9e2d1a-3b4f-4a5e-9d8c-6e7f0a1b2c3d",
      "agent_id": "roblox-bot",
      "name": "Game Backend",
      "own": false,
      "account_name": "Acme Inc."
    },
    {
      "id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890",
      "agent_id": "analytics-agent",
      "name": "Analytics Agent",
      "own": false,
      "account_name": "Jamie Chen"
    }
  ]
}
```

## Use Case: Finding a Recipient Before Sending

The most common workflow is:

1. Call `GET /v1/agents/sendable` to see who you can send to
2. Pick the `agent_id` of the target agent
3. Call `POST /v1/transfers` with that `agent_id` as the recipient

This replaces the old pattern of calling `GET /v1/agents` + `GET /v1/connections` separately and trying to piece together recipient IDs.

## Errors

| Status | Code           | Description                |
| ------ | -------------- | -------------------------- |
| `401`  | `UNAUTHORIZED` | Invalid or missing API key |
