Skip to main content
Server API enables you to retrieve, search, and update identification event data, and manage visitor data. It is designed for use only from server-side environments — never directly from client-facing surfaces such as browsers or mobile devices. Server API requests are not billed and do not count towards your monthly allowance. The following Server APIs are available:

See Also

  • To identify the browsers that visit your web application, see our documentation for JavaScript agent.
  • To identify the mobile devices that use your mobile app, see our documentation for Android and iOS.

Regions

The server API is available in the Global, EU and Asia (Mumbai) regions: Use the Base URL dropdown in the right column of each endpoint to select the correct base URL according to your workspace region.

Authentication

Use an Authorization: Bearer header to authenticate to the API. All unauthenticated requests will return a HTTP 403 Forbidden response.

Authorization: Bearer HTTP header

When making an API request, add the Authorization: Bearer SECRET_API_KEY HTTP header with your secret API key. Example request including the API key in the Authorization header

Query parameter syntax

For query parameters with multiple values, use the repeated keys syntax (parameter=value1&parameter=value2). Other notations like comma-separated (parameter=value1,value2) or bracket notation (parameter[]=value1&parameter[]=value2) are not supported.

Rate limiting

If you exceed the rate limit when making a Server API call, you’ll get an HTTP 429 error:
JSON
Retry the request after a short interval. The response may include a Retry-After header indicating how long to wait.

Error handling

Handle Server API responses according to the error type instead of retrying every failure the same way.

Retry with backoff for 429

Best practices

Use these guidelines when querying GET /v4/events so searches stay fast, predictable, and complete.

Overview

Keep these limits and defaults in mind:
  • Default time window: The API searches the last 7 days when start and end are omitted.
  • Maximum lookback: Depending on your Fingerprint plan, searches can look back 30-90 days.
  • Page size cap: limit is capped at 500 events per request.
  • Query timeout: Broad queries can return 504 Gateway Timeout after 30 seconds.
  • Rate limiting: Under load, the API can return 429 Too Many Requests, so your integration should retry with backoff.

1. Retrieve a single known event with GET /v4/events/{event_id}

If you already know the event_id, use Get event by event ID instead of the search endpoint:
Use it for:
  • Server-side verification of a specific identification result
  • Fetching full Smart Signals for one event
  • Confirming an event exists before taking action on it

2. Always filter by an indexed field

The most important performance rule is to include at least one of visitor_id, linked_id, or ip_address. Without one of these filters, the API must scan all events for your workspace across the requested time range. On large workspaces, that is the most common cause of 504 timeouts. Good: scoped query
Avoid: broad unscoped query

3. Use narrow time ranges

Always provide both start and end, and keep the time window as narrow as your use case allows.
  • The default 7-day window is useful for recent lookups, but explicit timestamps are more predictable.
  • For monitoring and alerting, query the last few minutes rather than hours.
  • For historical exports, split the work into smaller windows such as one day at a time.

4. Use cursor-based pagination for large result sets

When a response includes pagination_key, repeat the same request with that value until no new pagination_key is returned. Do not adjust start and end to simulate pagination. That can miss or duplicate events, especially when multiple events share the same timestamp. First page
Next page
Notes:
  • The pagination key is an opaque cursor. Do not parse or modify it.
  • Do not store pagination keys for long-term reuse.
  • If you receive a 400 invalid pagination key error, restart pagination from the beginning.

5. Use reverse=true for chronological processing

By default, search results are returned newest first. If you are replaying events into a processing pipeline or data warehouse, use reverse=true so the oldest events are returned first.

6. Use built-in filters to reduce result size

Use the search endpoint’s filters to narrow results before they are returned instead of filtering client-side.

7. Understand environment scoping

If your workspace uses environments, search results are automatically scoped by the API key you use:
  • A workspace-scoped API key returns events across all environments.
  • An environment-scoped API key returns only events from that environment.
If you expect events but receive an empty response, confirm that the API key matches the environment where identification ran.

8. Use day-by-day iteration for bulk exports

The Events API is a search API, not a streaming export API. For large exports:
  1. Iterate by day instead of querying the full time range at once.
  2. Include a filter such as visitor_id, linked_id, ip_address, or url whenever possible.
  3. Follow pagination_key within each window until it is exhausted.
  4. Add a small delay between paginated requests to reduce the chance of 429 responses.
  5. Use reverse=true for append-only processing so restarts remain idempotent.

Server API SDKs

For a smoother developer experience, we offer typed SDKs for these languages: Pick one of them as the Language on the endpoint page’s top right corner to see an example request using that SDK. The SDKs (and this reference) are based on a Server API OpenAPI schema, which is also available on GitHub:

Trying it out

You can try calling the Server API directly from this reference:
  1. You are going to need a Secret API Key. You can create one in your Fingerprint Dashboard > API Keys.
  2. To make a request, you will need an event_id of an identification event associated with your workspace. Go to Dashboard > Identification to see your identification events.
  3. Scroll down to one of the endpoints, for example, Get event by event ID.
  4. Set Authentication to your secret API key.
  5. Set the event_id path parameter to some event_id from your dashboard.
  6. Make sure the Base URL corresponds to your workspace region.
  7. Click Try it!
A real API response will appear in the Response section. Alternatively, you can view the prepared response examples there.