-
/v4/events/:event_id -
/v4/events- GET a list of event details using on a wide range of built-in filters (
linked_id,visitor_id,start,endandsuspectfields among others).
- GET a list of event details using on a wide range of built-in filters (
-
/v4/events/:event_id/feedback- POST feedback for an identification event
-
/v4/visitors/:visitor_id- DELETE all data associated with a specific visitor ID
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 anAuthorization: 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 theAuthorization: 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¶meter=value2).
Other notations like comma-separated (parameter=value1,value2) or bracket notation (parameter[]=value1¶meter[]=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-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 queryingGET /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
startandendare omitted. - Maximum lookback: Depending on your Fingerprint plan, searches can look back 30-90 days.
- Page size cap:
limitis capped at 500 events per request. - Query timeout: Broad queries can return
504 Gateway Timeoutafter 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:
- 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 ofvisitor_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
3. Use narrow time ranges
Always provide bothstart 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 includespagination_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
- 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
400invalid 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.
8. Use day-by-day iteration for bulk exports
The Events API is a search API, not a streaming export API. For large exports:- Iterate by day instead of querying the full time range at once.
- Include a filter such as
visitor_id,linked_id,ip_address, orurlwhenever possible. - Follow
pagination_keywithin each window until it is exhausted. - Add a small delay between paginated requests to reduce the chance of
429responses. - Use
reverse=truefor 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:- You are going to need a Secret API Key. You can create one in your Fingerprint Dashboard > API Keys.
- To make a request, you will need an
event_idof an identification event associated with your workspace. Go to Dashboard > Identification to see your identification events. - Scroll down to one of the endpoints, for example, Get event by event ID.
- Set Authentication to your secret API key.
- Set the event_id path parameter to some
event_idfrom your dashboard. - Make sure the Base URL corresponds to your workspace region.
- Click Try it!