# Sledovací klíče API

> Spravujte veřejné klíče, kterými sledovací skript odesílá události z vašeho webu.

Základní URL: `https://api.emailit.com/v2`. Autentizujte se hlavičkou `Authorization: Bearer <API key>`.

## Vytvoření sledovacího klíče — POST /tracking-keys

> Vytvořte veřejný sledovací klíč pro sledovací skript Emailitu, volitelně omezený na vaše vlastní weby.

# Vytvoření sledovacího klíče

Vytvoří sledovací klíč pro [sledovací skript](/cs/docs/events/tracking-script/). Odpověď obsahuje veřejný `key`, který patří do URL skriptu. Vyžaduje API klíč s oprávněním `full`.

Sledovací klíče jsou veřejné, takže si je kdokoli může zkopírovat z vaší stránky. Mohou jen odesílat události workspace a vlastní události, nikdy nečtou data a přes `allowed_origins` je můžete omezit na své vlastní weby. Workspace může mít až 25 sledovacích klíčů.

Sledování událostí na webu je součástí tarifů Pro, Business a Custom. Po přechodu na tarif Pay as you go klíče zůstanou, ale požadavky sledovacího skriptu s nimi vracejí `403`.

`POST /tracking-keys`

## Parametry v těle požadavku

- `name` (string): Název, ze kterého je poznat, kde se klíč používá, například `Online shop`, nejvýše 100 znaků.

- `allowed_origins` (string[]): Weby, které smějí s klíčem odesílat události, nejvýše 50. Prázdná hodnota nebo vynechání znamená jakýkoli web. Každá položka je jedna z těchto možností: - původ (origin), například `https://shop.example.com`: jen toto schéma, název hostitele a port; - název hostitele, například `shop.example.com`: tento název hostitele s jakýmkoli schématem nebo portem; - vzor se zástupným znakem, například `*.example.com`: `example.com` a všechny jeho subdomény. Položky se ukládají malými písmeny a bez koncového lomítka. Přijímá se i řetězec s položkami oddělenými mezerami nebo čárkami.

- `enabled` (boolean): `false` vytvoří klíč vypnutý.

## Odpověď

Vrací `201 Created` s [objektem sledovacího klíče](/cs/docs/api-reference/tracking-keys/get/).

| Stavový kód | Kdy |
| --- | --- |
| `403` | API klíč nemá oprávnění `full`, nebo je workspace v tarifu Pay as you go: `error` má hodnotu `plan_required` a `required_plan` hodnotu `pro`. |
| `422` | Některé pole je neplatné, například položka v `allowed_origins`, která není původem, názvem hostitele ani vzorem se zástupným znakem. Klíči v `errors` jsou pole a `message` opakuje první problém. Vrací se také s `code: "tracking_keys_limit"`, když workspace už má 25 sledovacích klíčů. |

**Požadavek** `POST /tracking-keys`

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/tracking-keys \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Online shop",
    "allowed_origins": ["https://shop.example.com", "*.example.com"]
  }'
```

**Node.js**

```javascript
const res = await fetch('https://api.emailit.com/v2/tracking-keys', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.EMAILIT_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Online shop',
    allowed_origins: ['https://shop.example.com', '*.example.com'],
  }),
});
const trackingKey = await res.json();
```

**Python**

```python
import os, requests

r = requests.post(
    "https://api.emailit.com/v2/tracking-keys",
    headers={"Authorization": f"Bearer {os.environ['EMAILIT_API_KEY']}"},
    json={
        "name": "Online shop",
        "allowed_origins": ["https://shop.example.com", "*.example.com"],
    },
)
tracking_key = r.json()
```

**PHP**

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.emailit.com/v2/']);

$response = $client->post('tracking-keys', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('EMAILIT_API_KEY')],
    'json' => [
        'name' => 'Online shop',
        'allowed_origins' => ['https://shop.example.com', '*.example.com'],
    ],
]);
$trackingKey = json_decode($response->getBody(), true);
```

**201**

```json
{
  "object": "tracking_key",
  "id": "trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
  "name": "Online shop",
  "key": "pub_8fK2mQ9xLr4TzW7nB1cV5yH3dJ6sA0pE",
  "allowed_origins": ["https://shop.example.com", "*.example.com"],
  "enabled": true,
  "last_used_at": null,
  "created_at": "2026-10-19T08:05:00.000000+00:00",
  "updated_at": "2026-10-19T08:05:00.000000+00:00"
}
```

**403**

```json
{
  "error": "plan_required",
  "required_plan": "pro",
  "message": "Website tracking is included with Pro and Business."
}
```

**422**

```json
{
  "error": "allowed_origins \"https://shop.example.com/checkout\" is not an origin (https://example.com), a host (example.com) or a wildcard (*.example.com)",
  "message": "allowed_origins \"https://shop.example.com/checkout\" is not an origin (https://example.com), a host (example.com) or a wildcard (*.example.com)",
  "errors": {
    "allowed_origins": ["\"https://shop.example.com/checkout\" is not an origin (https://example.com), a host (example.com) or a wildcard (*.example.com)"]
  }
}
```

---
Zdroj: https://emailit.com/cs/docs/api-reference/tracking-keys/create/

## Načtení sledovacího klíče — GET /tracking-keys/{id}

> Načtěte sledovací klíč pro sledovací skript Emailitu i s veřejným klíčem, povolenými weby a posledním použitím.

# Načtení sledovacího klíče

Načte sledovací klíč. Sledovací klíče jsou veřejné klíče pro [sledovací skript](/cs/docs/events/tracking-script/): vkládají se do vašich webových stránek a mohou jen odesílat události workspace a vlastní události. Vyžaduje API klíč s oprávněním `full`.

`GET /tracking-keys/{id}`

## Parametry v cestě

- `id` (string, povinné): ID sledovacího klíče (`trk_…`), nebo samotný klíč (`pub_…`).

## Odpověď

Vrací objekt sledovacího klíče.

- `object` (string): Vždy `tracking_key`.

- `id` (string): ID sledovacího klíče s předponou `trk_`.

- `name` (string): Název, ze kterého je poznat, kde se klíč používá.

- `key` (string): Veřejný klíč: `pub_` a za ním 32 písmen a číslic. Je součástí URL skriptu, proto se vrací při každém načtení.

- `allowed_origins` (string[]): Weby, které smějí s tímto klíčem odesílat události. Prázdný seznam znamená jakýkoli web. Viz [Povolené weby](/cs/docs/events/tracking-script/#allowed-sites).

- `enabled` (boolean): `false`, když je klíč vypnutý. Události odeslané s vypnutým klíčem se odmítnou.

- `last_used_at` (string | null): Kdy klíč naposledy odeslal události, aktualizuje se nejvýše jednou za 10 minut. `null`, pokud ještě nebyl použit.

- `created_at, updated_at` (string): Časová razítka v UTC.

Pokud žádný klíč neodpovídá, vrací `404` s `error: "Tracking key not found"`.

**Požadavek** `GET /tracking-keys/{id}`

**cURL**

```bash
curl https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6 \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**Node.js**

```javascript
const res = await fetch('https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', {
  headers: { Authorization: `Bearer ${process.env.EMAILIT_API_KEY}` },
});
const trackingKey = await res.json();
```

**Python**

```python
import os, requests

r = requests.get(
    "https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
    headers={"Authorization": f"Bearer {os.environ['EMAILIT_API_KEY']}"},
)
tracking_key = r.json()
```

**PHP**

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.emailit.com/v2/']);

$response = $client->get('tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('EMAILIT_API_KEY')],
]);
$trackingKey = json_decode($response->getBody(), true);
```

**200**

```json
{
  "object": "tracking_key",
  "id": "trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
  "name": "Online shop",
  "key": "pub_8fK2mQ9xLr4TzW7nB1cV5yH3dJ6sA0pE",
  "allowed_origins": ["https://shop.example.com", "*.example.com"],
  "enabled": true,
  "last_used_at": "2026-10-19T09:40:00.000000+00:00",
  "created_at": "2026-10-19T08:05:00.000000+00:00",
  "updated_at": "2026-10-19T08:05:00.000000+00:00"
}
```

**404**

```json
{
  "error": "Tracking key not found"
}
```

---
Zdroj: https://emailit.com/cs/docs/api-reference/tracking-keys/get/

## Úprava sledovacího klíče — POST /tracking-keys/{id}

> Přejmenujte sledovací klíč, změňte jeho povolené weby, nebo ho vypněte a zapněte. Veřejný klíč zůstává stejný.

# Úprava sledovacího klíče

Upraví pole, která předáte, a ostatní ponechá beze změny. Veřejný `key` se nikdy nemění; pokud chcete klíč vyměnit, vytvořte nový, upravte své stránky a starý smažte. Vyžaduje API klíč s oprávněním `full`.

Než se změny projeví všude, může to trvat až minutu.

`POST /tracking-keys/{id}`

## Parametry v cestě

- `id` (string, povinné): ID sledovacího klíče (`trk_…`), nebo samotný klíč (`pub_…`).

## Parametry v těle požadavku

- `name` (string): Nový název, nejvýše 100 znaků. Nesmí být prázdný.

- `allowed_origins` (string[]): Nahradí seznam povolených webů, se stejnými pravidly jako při [vytvoření](/cs/docs/api-reference/tracking-keys/create/#body-parameters). `[]` povolí jakýkoli web.

- `enabled` (boolean): `false` klíč vypne: sledovací skript se dál načítá, ale jeho události se odmítají s `403`. `true` klíč znovu zapne.

## Odpověď

Vrací upravený [objekt sledovacího klíče](/cs/docs/api-reference/tracking-keys/get/).

| Stavový kód | Kdy |
| --- | --- |
| `404` | Žádný sledovací klíč neodpovídá `id`. |
| `422` | Některé pole je neplatné. Klíči v `errors` jsou pole a `message` opakuje první problém. |

**Požadavek** `POST /tracking-keys/{id}`

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6 \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "allowed_origins": ["https://shop.example.com", "https://www.example.com"] }'
```

**Node.js**

```javascript
const res = await fetch('https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.EMAILIT_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ allowed_origins: ['https://shop.example.com', 'https://www.example.com'] }),
});
const trackingKey = await res.json();
```

**Python**

```python
import os, requests

r = requests.post(
    "https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
    headers={"Authorization": f"Bearer {os.environ['EMAILIT_API_KEY']}"},
    json={"allowed_origins": ["https://shop.example.com", "https://www.example.com"]},
)
tracking_key = r.json()
```

**PHP**

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.emailit.com/v2/']);

$response = $client->post('tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('EMAILIT_API_KEY')],
    'json' => ['allowed_origins' => ['https://shop.example.com', 'https://www.example.com']],
]);
$trackingKey = json_decode($response->getBody(), true);
```

**200**

```json
{
  "object": "tracking_key",
  "id": "trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
  "name": "Online shop",
  "key": "pub_8fK2mQ9xLr4TzW7nB1cV5yH3dJ6sA0pE",
  "allowed_origins": ["https://shop.example.com", "https://www.example.com"],
  "enabled": true,
  "last_used_at": "2026-10-19T09:40:00.000000+00:00",
  "created_at": "2026-10-19T08:05:00.000000+00:00",
  "updated_at": "2026-10-19T10:20:00.000000+00:00"
}
```

---
Zdroj: https://emailit.com/cs/docs/api-reference/tracking-keys/update/

## Výpis sledovacích klíčů — GET /tracking-keys

> Vypište sledovací klíče workspace pro sledovací skript Emailitu, od nejnovějšího.

# Výpis sledovacích klíčů

Vrací všechny sledovací klíče workspace od nejnovějšího. Workspace jich má nejvýše 25, proto se výpis nestránkuje. Vyžaduje API klíč s oprávněním `full`.

`GET /tracking-keys`

## Parametry dotazu

- `search` (string): Hledá část názvu bez ohledu na velikost písmen.

- `match`, `order`, `direction`: viz [Filtrování](https://emailit.com/cs/docs/api-reference/filtering/).

### Klíče filtrů

Filtry se zadávají parametry dotazu ve tvaru `key.condition=value`, například `enabled.exact=true`. Podmínky pro jednotlivé typy najdete na stránce [Filtrování](/cs/docs/api-reference/filtering/).

| Klíč | Typ | Poznámky |
| --- | --- | --- |
| `name` | string | |
| `enabled` | boolean | |
| `created_at` | date | |
| `last_used_at` | date | |

Klíče řazení pro `order`: `name`, `enabled`, `created_at`, `last_used_at`. Ve výchozím stavu se řadí podle `created_at` od nejnovějšího.

## Odpověď

- `data` (object[]): [Objekty sledovacích klíčů](/cs/docs/api-reference/tracking-keys/get/) včetně veřejného `key` každého z nich.

**Požadavek** `GET /tracking-keys`

**cURL**

```bash
curl https://api.emailit.com/v2/tracking-keys \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**Node.js**

```javascript
const res = await fetch('https://api.emailit.com/v2/tracking-keys', {
  headers: { Authorization: `Bearer ${process.env.EMAILIT_API_KEY}` },
});
const { data } = await res.json();
```

**Python**

```python
import os, requests

r = requests.get(
    "https://api.emailit.com/v2/tracking-keys",
    headers={"Authorization": f"Bearer {os.environ['EMAILIT_API_KEY']}"},
)
tracking_keys = r.json()["data"]
```

**PHP**

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.emailit.com/v2/']);

$response = $client->get('tracking-keys', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('EMAILIT_API_KEY')],
]);
$trackingKeys = json_decode($response->getBody(), true)['data'];
```

**200**

```json
{
  "data": [
    {
      "object": "tracking_key",
      "id": "trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
      "name": "Online shop",
      "key": "pub_8fK2mQ9xLr4TzW7nB1cV5yH3dJ6sA0pE",
      "allowed_origins": ["https://shop.example.com", "*.example.com"],
      "enabled": true,
      "last_used_at": "2026-10-19T09:40:00.000000+00:00",
      "created_at": "2026-10-19T08:05:00.000000+00:00",
      "updated_at": "2026-10-19T08:05:00.000000+00:00"
    }
  ]
}
```

---
Zdroj: https://emailit.com/cs/docs/api-reference/tracking-keys/list/

## Smazání sledovacího klíče — DELETE /tracking-keys/{id}

> Smažte sledovací klíč. Stránky, které ho stále používají, přestanou odesílat události; už zaznamenané události zůstanou.

# Smazání sledovacího klíče

Smaže sledovací klíč. Vyžaduje API klíč s oprávněním `full`.

Stránky, které skript s tímto klíčem stále načítají, dál fungují, ale jejich události se odmítnou a nezaznamenají. Události, které se s klíčem už zaznamenaly, zůstanou. Pokud chcete události na čas zastavit bez úprav stránek, vypněte místo toho klíč endpointem [Úprava sledovacího klíče](/cs/docs/api-reference/tracking-keys/update/).

`DELETE /tracking-keys/{id}`

## Parametry v cestě

- `id` (string, povinné): ID sledovacího klíče (`trk_…`), nebo samotný klíč (`pub_…`).

## Odpověď

- `object` (string): Vždy `tracking_key`.

- `id` (string): ID smazaného klíče.

- `deleted` (boolean): Vždy `true`.

Pokud žádný sledovací klíč neodpovídá, vrací `404`.

**Požadavek** `DELETE /tracking-keys/{id}`

**cURL**

```bash
curl -X DELETE https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6 \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**Node.js**

```javascript
const res = await fetch('https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${process.env.EMAILIT_API_KEY}` },
});
const result = await res.json();
```

**Python**

```python
import os, requests

r = requests.delete(
    "https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
    headers={"Authorization": f"Bearer {os.environ['EMAILIT_API_KEY']}"},
)
result = r.json()
```

**PHP**

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.emailit.com/v2/']);

$response = $client->delete('tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('EMAILIT_API_KEY')],
]);
$result = json_decode($response->getBody(), true);
```

**200**

```json
{
  "object": "tracking_key",
  "id": "trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
  "deleted": true
}
```

---
Zdroj: https://emailit.com/cs/docs/api-reference/tracking-keys/delete/
