# Create Ingestion Key

### Endpoint

**POST** `/api/rbac/ingestion-keys/create`

### Authentication

This endpoint requires API Key authentication via the Authorization header.

### Headers

```bash
Authorization: Bearer <YOUR_API_KEY>
Content-Type: application/json
```

### Request Body

Required and optional fields for creating an ingestion key:

```json
{
  "name": "string",
  "type": "sensor|thirdParty|rum"
}
```

| Parameter | Type   | Required | Description                                                        |
| --------- | ------ | -------- | ------------------------------------------------------------------ |
| `name`    | string | **Yes**  | Unique name for the ingestion key (must be lowercase with hyphens) |
| `type`    | string | **Yes**  | Key type (`"sensor"`, `"thirdParty"`, `"rum"`)                     |
| `tags`    | array  | No       | Array of tags to associate with the key                            |

### Examples

#### Create Basic Sensor Key

```bash
curl -L \
  --request POST \
  --url 'https://api.groundcover.com/api/rbac/ingestion-keys/create' \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "production-k8s-sensor",
    "type": "sensor"
  }'
```

#### Create Third-Party Integration Key

```bash
curl -L \
  --request POST \
  --url 'https://api.groundcover.com/api/rbac/ingestion-keys/create' \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "otel-collector-prod",
    "type": "thirdParty",
    "tags": ["otel", "production"]
  }'
```

#### Create RUM Key with Configuration

```bash
curl -L \
  --request POST \
  --url 'https://api.groundcover.com/api/rbac/ingestion-keys/create' \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "frontend-rum-monitoring",
    "type": "rum",
    "tags": ["rum", "frontend", "web"]
  }'
```

### Response

#### Response Schema

```json
{
  "id": "string",
  "name": "string", 
  "createdBy": "string",
  "creationDate": "string",
  "key": "string",
  "type": "string",
  "tags": ["string"]
}
```

#### Response Example

```json
{
  "id": "12345678-1234-1234-1234-123456789abc",
  "name": "production-k8s-sensor",
  "createdBy": "user@company.com",
  "creationDate": "2025-08-31T14:09:15Z",
  "key": "gcik_AEBAAAE4_XXXXXXXXX_XXXXXXXXX_XXXXXXXX",
  "type": "sensor",
  "remoteConfig": true,
  "tags": []
}
```

### Key Types

| Type           | Description                                             | Default remoteConfig |
| -------------- | ------------------------------------------------------- | -------------------- |
| `"sensor"`     | Keys for groundcover sensors and agents                 | `true`               |
| `"thirdParty"` | Keys for third-party integrations (OpenTelemetry, etc.) | `false`              |
| `"rum"`        | Keys for Real User Monitoring data ingestion            | `false`              |

### Verification

To verify the key was created successfully, use the List Ingestion Keys endpoint:

```bash
curl -L \
  --request POST \
  --url 'https://api.groundcover.com/api/rbac/ingestion-keys/list' \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "production-k8s-sensor"
  }'
```

### Naming Requirements

* **Names must be lowercase** with hyphens as separators
* **No capital letters, spaces, or special characters** (except hyphens)
* **Examples of valid names**: `production-k8s-sensor`, `otel-staging-api`, `rum-frontend`
* **Examples of invalid names**: `Production-K8s`, `OTEL_API`, `rum frontend`

### Related Documentation

For comprehensive information about ingestion keys, including usage and management, see:

* [Ingestion Keys](https://docs.groundcover.com/use-groundcover/remote-access-and-apis/ingestion-keys)
