# API Introduction

The base URL, headers, authentication and response patterns shared by every endpoint.

Use this page to send your first request and to understand the conventions shared by all endpoints. For a walkthrough, start with [The FounderMCP API](/docs/api/introduction).

## Base URL

All requests go to:

```text
https://geteem.com/api/v1
```

## Authentication

Every request must include your API key as a Bearer token in the `Authorization` header:

```bash
--header 'Authorization: Bearer YOUR_API_KEY'
```

Create keys under **API → API Keys** in FounderMCP. Keep them secret: never put a key in client-side code or a public repository. See [Authentication](/docs/api/authentication).

## Request format

Send a JSON body with `Content-Type: application/json`. Field names are `snake_case`. Unknown fields are rejected with `400` rather than ignored, so a typo never silently drops a filter.

## Response format

Every response is JSON. Paid endpoints add `credits_used` to the body and an `X-Credits-Used` header with the same number.

## Error responses

Every error has the same shape. Branch on `error.type`; the message is meant for people and can change.

```json
{
  "error": {
    "type": "invalid_request",
    "message": "`page` must be a whole number from 1 to 100."
  }
}
```

Errors never cost credits.

### HTTP status codes

- **400** `invalid_request` — The body is not valid JSON, a field is unknown or has the wrong type, or a value is not allowed.
- **401** `authentication_error` — The Authorization header is missing, or the key is unknown or revoked.
- **403** `permission_error` — API access is not part of your plan, or your account is suspended.
- **404** `not_found` — The endpoint does not exist.
- **429** `rate_limit_error` — More than 60 requests per minute, or more than 3 at the same time, on one key. Wait for the Retry-After header.
- **429** `daily_limit_reached` — The request could take your organization over its daily credit limit. The limit resets at midnight (Europe/Brussels).
- **402** `insufficient_credits` — The credit balance is lower than this request could cost. Nothing was charged. Add credits, or send a smaller request. The error includes code, fix and a link to the credits docs.
- **502** `upstream_error` — The data source did not answer. Retry later.
- **503** `service_unavailable` — The API is temporarily unavailable. Retry later.
- **500** `internal_error` — Something went wrong on our side.

## Rate limits

- 60 requests per minute and 3 concurrent requests per key.
- A daily credit limit per organization — 1,000 credits unless agreed otherwise — that resets at midnight Europe/Brussels.

Both answer with `429` and a `Retry-After` header. More in [Credits and limits](/docs/api/credits-and-limits).

## Endpoints

- **[Search People](/docs/api-reference/search-people)** — `POST /person/search` — Find people on LinkedIn by title, company, location, seniority and more.
- **[Enrich People](/docs/api-reference/enrich-people)** — `POST /person/enrich` — Get the full LinkedIn profile of up to 25 people, optionally with a work email.
- **[Get Usage](/docs/api-reference/usage)** — `GET /usage` — Credits used today and this month, and your daily limit.
