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

# Quickstart

> Make your first Horizon API call in under 5 minutes

Horizon is a REST API for LinkedIn person/company data, email finding
and verification, job postings, and web search — billed by prepaid credits,
not subscriptions.

<Tip>
  Just want to ask questions in Slack, no code required? See
  [Add Horizon to Slack](/horizon/slack-install) instead — this page is for the
  REST API / MCP integration path.
</Tip>

## 1. Get an API key

Every new key starts with **200 free trial credits**, enough to try every
endpoint before you need to add more — see
[Authentication](/horizon/authentication#getting-a-key) for the two ways to get one.

Keys look like `gk_live_...`. See [Authentication](/horizon/authentication) for the
full format and how to rotate one.

## 2. Make your first request

The example below calls `POST /v1/person/enrich`, which looks up a LinkedIn
profile by URL (or by name + company) for 2 credits.

<CodeGroup>
  ```bash cURL theme={null}
  curl https://horizon.gravitygtm.com/api/v1/person/enrich \
    -X POST \
    -H "Authorization: Bearer gk_live_YOUR_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "linkedin_url": "https://www.linkedin.com/in/example"
    }'
  ```

  ```typescript TypeScript theme={null}
  const res = await fetch("https://horizon.gravitygtm.com/api/v1/person/enrich", {
    method: "POST",
    headers: {
      Authorization: "Bearer gk_live_YOUR_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      linkedin_url: "https://www.linkedin.com/in/example",
    }),
  });

  const result = await res.json();
  console.log(result);
  ```

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

  response = requests.post(
      "https://horizon.gravitygtm.com/api/v1/person/enrich",
      headers={"Authorization": "Bearer gk_live_YOUR_KEY"},
      json={"linkedin_url": "https://www.linkedin.com/in/example"},
      timeout=30,
  )

  print(response.json())
  ```
</CodeGroup>

You can also identify the person by `name` + `company` instead of
`linkedin_url`. Pass `include_email: true` to also attempt a verified email
find on the same call (this raises the price to 25 credits, only charged if
an email is actually found — see
[Credits & Pricing](/horizon/credits-and-pricing)).

## 3. Read the response

Every successful call returns the same envelope shape, regardless of
endpoint:

```json theme={null}
{
  "data": {
    "linkedin_url": "https://www.linkedin.com/in/example",
    "name": "...",
    "headline": "...",
    "position": "..."
  },
  "credits_charged": 2,
  "credits_remaining": 198,
  "cached": false,
  "request_id": "b3f1..."
}
```

* `data` — the vendor payload for this endpoint.
* `credits_charged` / `credits_remaining` — what this call cost and what's
  left on your key.
* `cached` — `true` if this result was served from cache rather than a live
  vendor call (still charged normally).
* `request_id` — include this if you ever need support for a specific call.

If the profile can't be found, you'll get a `422` with no charge deducted
beyond what the endpoint's miss policy specifies — see
[Errors & Rate Limits](/horizon/errors-and-rate-limits).

## Next steps

* [Authentication](/horizon/authentication) — key format, rotation, where to get one
* [Credits & Pricing](/horizon/credits-and-pricing) — the full per-endpoint cost table
* [MCP install](/horizon/mcp-install) — wire Horizon into Claude, Cursor, or any MCP client
* Explore every endpoint in the **API Reference** section in the sidebar,
  starting with [Enrich a person](/horizon/api-reference/person/enrich-a-person-from-a-linkedin-url-or-name)
