Skip to content
Start in Cloud

Ingest server-side event REST API

POST
/api/ingest/server/event
curl --request POST \
--url https://app.hitkeep.com/api/ingest/server/event \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "dnt": true, "name": "example", "properties": {}, "referrer": "example", "session_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "timestamp": "2026-04-15T12:00:00Z", "url": "https://example.com", "user_agent": "example", "visitor_ip": "example" }'

Accepts one trusted server-side custom event from an API client. This server-to-server endpoint does not require browser Origin or Referer headers. HitKeep resolves the site from the submitted URL hostname, requires site.manage_data for that resolved site, and uses visitor_ip for ingest-time exclusions, spam filtering, and country, region, city, provider, and ASN lookup. Stored analytics records contain derived country, region, city, provider, and ASN context. HitKeep does not store the raw visitor IP. This endpoint uses the ingest rate limiter.

Media typeapplication/json
object
dnt

When true, HitKeep drops the record consistently with browser tracker privacy behavior.

boolean
name
required

Custom event name.

string
properties
object
key
additional properties
any
referrer
string
session_id

Optional visitor grouping key. If omitted, this event gets its own standalone session.

string format: uuid
timestamp
required

Canonical analytics time in RFC3339 format.

string format: date-time
url
required

Absolute page or event context URL. The hostname resolves the configured HitKeep site.

string format: uri
user_agent
required

User agent from the original visitor request context.

string
visitor_ip
required

Trusted transient visitor IP context. Used to derive country, region, city, provider, and ASN metadata. HitKeep does not store the raw visitor IP.

string format: ip
Examplegenerated
{
"dnt": true,
"name": "example",
"properties": {},
"referrer": "example",
"session_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"timestamp": "2026-04-15T12:00:00Z",
"url": "https://example.com",
"user_agent": "example",
"visitor_ip": "example"
}

Accepted. Empty response body.

Invalid request

Media typeapplication/json
object
message
string
Examplegenerated
{
"message": "example"
}

Unauthorized

Media typeapplication/json
object
message
string
Examplegenerated
{
"message": "example"
}

Access denied

Media typeapplication/json
object
message
string
Examplegenerated
{
"message": "example"
}

Site not found

Media typeapplication/json
object
message
string
Examplegenerated
{
"message": "example"
}

Too many requests

Media typeapplication/json
object
message
string
Examplegenerated
{
"message": "example"
}

Service not available

Media typeapplication/json
object
message
string
Examplegenerated
{
"message": "example"
}