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

# Quickstart

> Get your first API call working in under 5 minutes

## Prerequisites

* **API access enabled**: This is not self-serve. Contact your Recotap account manager to have it enabled for your workspace.
* **Your API key**: Generate it from **Settings → Workspace → Tech Settings → API Access Key**. See [Authentication](authentication) if you haven't done this yet.

## Step 1: Verify your key

Fetch your accounts to confirm authentication is working:

```bash theme={null}
curl "https://eapi.recotap.com/api/v1/accounts?limit=1" \
  -H "X-Api-Key: your-api-key-here"
```

A successful response returns the full response envelope:

```json theme={null}
{
  "statusCode": 200,
  "timestamp": "2026-04-30T10:00:00.000Z",
  "path": "/api/v1/accounts",
  "data": {
    "data": [...],
    "nextCursor": null,
    "hasNextPage": false,
    "syncTimestamp": "2026-04-30T10:00:00.000Z"
  }
}
```

<Info>
  All API responses share this envelope: `statusCode`, `timestamp`, `path`, and `data`. Subsequent steps in this guide show only the `data` field for brevity. See [Introduction](introduction#response-envelope) for the full structure.
</Info>

If you receive `401 Unauthorized`, check that the `X-Api-Key` header value is correct and that API access has been enabled for your workspace.

## Step 2: Push your first account

`domain` is required and used for deduplication — if an account with the same domain already exists, the item is returned as `failed`. Once created, store the `rtp_aid` returned in the response to update the account via `PUT /accounts/:rtp_aid`.

```bash theme={null}
curl -X POST "https://eapi.recotap.com/api/v1/accounts" \
  -H "X-Api-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "accounts": [
      {
        "externalId": "crm-account-001",
        "domain": "acme.com",
        "name": "Acme Corp",
        "shortName": "Acme",
        "linkedinUrl": "https://www.linkedin.com/company/acme-corp",
        "tags": ["enterprise", "q2-target"],
        "customFields": { "CONTRACT_VALUE_C": 75000 }
      }
    ],
    "segmentId": "663xyz..."
  }'
```

`data` field of the response:

```json theme={null}
{
  "results": [
    { "rtp_aid": "663abc...", "domain": "acme.com", "status": "created" }
  ],
  "summary": { "total": 1, "created": 1, "failed": 0 }
}
```

Store the `rtp_aid` from the response — you will need it to update this account via `PUT /accounts/:rtp_aid`.

## Step 3: Pull accounts with Recotap scores

Pull accounts back with enriched `rtp_` score fields:

```bash theme={null}
curl "https://eapi.recotap.com/api/v1/accounts" \
  -H "X-Api-Key: your-api-key-here"
```

<Warning>
  All `rtp_` score fields default to `0` on a newly pushed account. Scores are updated on a schedule — not in real-time.
</Warning>

`data` field of the response (showing one account):

```json theme={null}
{
  "data": [
    {
      "externalId": "crm-account-001",
      "name": "Acme Corp",
      "domain": "acme.com",
      "rtp_aid": "663abc...",
      "rtp_account_score": 78,
      "rtp_journey_stage": "Consideration",
      "rtp_advertising_activity_score": 55,
      "rtp_website_intent_score": 42,
      "rtp_g2_intent_score": 0,
      "rtp_bombora_intent_score": 31,
      "rtp_last_account_date": "2026-04-30T09:00:00.000Z"
    }
  ],
  "nextCursor": null,
  "hasNextPage": false,
  "syncTimestamp": "2026-04-30T10:00:00.000Z"
}
```

Map these `rtp_` fields back into your system records:

| Field                            | Type   | Description                                            |
| -------------------------------- | ------ | ------------------------------------------------------ |
| `rtp_aid`                        | string | Recotap's internal account ID                          |
| `rtp_account_score`              | number | Overall account score (0–100)                          |
| `rtp_journey_stage`              | string | Current revenue journey stage (e.g. `"Consideration"`) |
| `rtp_website_intent_score`       | number | Intent score from website visit signals                |
| `rtp_bombora_intent_score`       | number | Intent score from Bombora data                         |
| `rtp_g2_intent_score`            | number | Intent score from G2 data                              |
| `rtp_advertising_activity_score` | number | Intent score from LinkedIn ad activity                 |
| `rtp_last_account_date`          | date   | Timestamp of the last Recotap update for this account  |

## Step 4: Set up delta sync

On subsequent syncs, combine `lastSync` (a filter) with `limit` and `cursor` (pagination) to fetch only changed records efficiently:

```bash theme={null}
# First delta page
curl "https://eapi.recotap.com/api/v1/accounts?lastSync=2026-04-30T10:00:00Z&limit=100" \
  -H "X-Api-Key: your-api-key-here"

# Next page if hasNextPage is true
curl "https://eapi.recotap.com/api/v1/accounts?lastSync=2026-04-30T10:00:00Z&limit=100&cursor=663abc..." \
  -H "X-Api-Key: your-api-key-here"
```

Store the `syncTimestamp` from each completed response and pass it as `lastSync` on the next run. Only records updated after that point are returned.

## What's next

<CardGroup cols={2}>
  <Card title="Accounts" icon="building" href="api-reference/accounts/list-accounts">
    Full account push, update, and pull reference
  </Card>

  <Card title="Deals" icon="handshake" href="api-reference/deals/push-deals">
    Push deals with stage history for revenue attribution
  </Card>

  <Card title="Sales Activities" icon="phone" href="api-reference/sales-activities/push-sales-activities">
    Push call and email activities with contact data
  </Card>

  <Card title="Custom Fields" icon="sliders" href="api-reference/custom-fields/list-account-custom-fields">
    View and define custom field schemas for accounts
  </Card>

  <Card title="Segments" icon="filter" href="api-reference/segments/list-segments">
    Pull Recotap segment memberships into your system
  </Card>

  <Card title="Errors" icon="triangle-exclamation" href="errors">
    Complete error reference and handling guide
  </Card>
</CardGroup>
