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

# Quickstart

> Make your first Plyne API request and read intent data.

Use the Plyne API to read the buyers and accounts your team is already tracking in Plyne.

The dashboard is where your team configures ICPs, Signal Agents, Custom Signals, and Monitored Accounts. The API is the read layer for integrating those outputs into your product, workflow, or outbound system.

## 1. Create an API key

Open the dashboard and go to **Developer → API Keys**.

Create a key and copy it. API keys are scoped to your organization.

```bash theme={null}
Authorization: Bearer plyne_...
```

## 2. List Intent Signals agents

Signal agents are always-on discovery setups. Each agent belongs to a sheet and runs on a recurring schedule to find buyers showing relevant intent.

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.plyne.ai/v1/signals/agents \
    --header 'Authorization: Bearer plyne_...' \
    --header 'Content-Type: application/json' \
    --data '{
      "cursor": { "limit": 50 }
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "id": "ag_2L8mD5",
        "type": "intent_signals",
        "name": "Intent Signals",
        "status": "active",
        "schedule": "4x daily",
        "sheet": {
          "id": "sh_6P9vR3",
          "name": "AI infrastructure buyers"
        }
      }
    ],
    "cursor": {
      "next": "",
      "has_more": false
    }
  }
  ```
</ResponseExample>

## 3. Read qualified leads

Use `signals` to read Leads surfaced by a specific buying signal, and `sheet_ids` to limit results to a configured sheet.

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.plyne.ai/v1/signals/leads \
    --header 'Authorization: Bearer plyne_...' \
    --header 'Content-Type: application/json' \
    --data '{
      "signals": ["topic_engagement_signal"],
      "sheet_ids": ["sh_6P9vR3"],
      "lead_country_codes": ["US"],
      "company_country_codes": ["US"],
      "cursor": { "limit": 100 }
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "id": "ld_8K2mQ9",
        "full_name": "Sarah Carter",
        "title": "Head of Engineering",
        "country_code": "US",
        "profile": {
          "platform": "linkedin",
          "url": "https://linkedin.com/in/sarah-carter"
        },
        "company": {
          "id": "co_4F7xN2",
          "name": "Acme",
          "domain": "acme.com",
          "linkedin_url": "https://linkedin.com/company/acme",
          "country_code": "US"
        },
        "sheet": {
          "id": "sh_6P9vR3",
          "name": "AI infrastructure buyers"
        },
        "signal": {
          "type": "topic_engagement_signal",
          "name": "Post Engagers",
          "summary": "Engaged with relevant topic content recently",
          "reason": "Sarah engaged with content related to cloud infrastructure modernization.",
          "observed_at": "2026-06-15T08:00:00Z"
        },
        "qualification": {
          "status": "qualified",
          "reason": "Strong ICP fit based on seniority, role, company profile, and recent intent.",
          "reasoning": "The lead matches the target persona and ICP criteria. Head of Engineering matches the target buyer persona, Acme matches the company profile, and recent engagement supports current intent.",
          "references": [
            {
              "type": "evidence",
              "label": "Topic engagement",
              "url": "https://linkedin.com/posts/example"
            }
          ]
        },
        "score": {
          "value": 86,
          "fit": "high",
          "reasoning": "High lead priority because the person has strong title fit, resolved company context, and recent relevant signal evidence."
        }
      }
    ],
    "cursor": {
      "next": "",
      "has_more": false
    }
  }
  ```
</ResponseExample>

## 4. Paginate results

List responses return pagination metadata under `cursor`.

```json theme={null}
{
  "cursor": {
    "next": "eyJ2IjoxLCJvYnNlcnZlZF9hdCI6IjIwMjYtMDYtMTJUMTQ6MDk6MjNaIiwiaWQiOiJsZWFkXzEyMyJ9",
    "has_more": true
  }
}
```

Pass `cursor.next` as `cursor.after` to fetch the next page.

```json theme={null}
{
  "cursor": {
    "limit": 100,
    "after": "eyJ2IjoxLCJvYnNlcnZlZF9hdCI6IjIwMjYtMDYtMTJUMTQ6MDk6MjNaIiwiaWQiOiJsZWFkXzEyMyJ9"
  }
}
```

## 5. Check request logs

Open **Developer → Request Logs** in the dashboard to inspect recent API requests, response codes, latency, IP, and user agent.
