API: GET /api/v1/events and GET /api/v2/events on apiv3.delivr.ai
Service: Event Store Lookup Service (Rust/DataFusion)
Schema endpoint: GET /api/v1/events_schema
Last verified: 2026-04-12
Sources: Pixel (on-domain) and DSP (ad impression) events share enrichment fields but differ in core event fields.
- Total schema fields: 132
- Max time window: 25 hours (
end_ms - start_ms)
- Default limit: 300 rows
- Resolved on-domain events include identity + enrichment fields (person, company, demographics)
- Unresolved on-domain events include only core event fields (no person/company data)
| Parameter | Required | Description |
|---|
pixel_id | Yes | Pixel UUID to scope the query |
start_ms | Yes | Inclusive start timestamp (epoch ms) |
end_ms | Yes | Inclusive end timestamp (epoch ms). Max 25h from start_ms |
limit | No | Max rows to return (default: 300) |
offset | No | Rows to skip for pagination |
select | No | Comma-separated field list to project specific columns |
filter | No | Filter expression: <field>:<op>:<value>. AND with ,, OR with | |
distinct | No | Comma-separated fields to deduplicate results |
| Parameter | Required | Description |
|---|
source | No | Event source: pixel (default) or dsp |
pixel_id | Conditional | Pixel UUID. Use with source=pixel |
project_id | Conditional | Project UUID. Use with source=pixel, or alongside campaign_id for source=dsp |
campaign_id | Conditional | Campaign ID. Use with source=dsp. Requires project_id for auth |
start_ms | Yes | Inclusive start timestamp (epoch ms) |
end_ms | Yes | Inclusive end timestamp (epoch ms). Max 25h from start_ms |
limit | No | Max rows (default: 300) |
offset | No | Rows to skip |
select | No | Comma-separated field list |
filter | No | Filter expression |
distinct | No | Deduplicate fields |
| Operator | Meaning | Example |
|---|
eq | Equals | resolved:eq:true |
ne | Not equals | first_name:ne:null |
resolved:eq:true # Only resolved events
resolved:eq:false # Only unresolved events
event_type:eq:page_view # Specific event type
event_type:eq:purchase|event_type:eq:refund # Multiple event types (OR)
resolved:eq:true,first_name:ne:null # Resolved with first name (AND)
| Parameter | Description |
|---|
has_valuable_data | Boolean. Filters to events with enriched person/company data populated |
Every response includes a meta object:
| Field | Type | Description |
|---|
files_scanned | int | Parquet files scanned during query |
buckets_scanned | int | Storage buckets containing matching data |
took_ms | int | Query execution time in milliseconds |
Fields are grouped by category. Population rates are based on a sample of 34 resolved events.
Legend:
- Rate: Percentage of resolved events where field is non-null
- Nullable: Whether the Arrow schema allows null values
- Resolved-only: Field is only populated when
resolved=true
Always present on every event (resolved or unresolved).
| Field | Data Type | Nullable | Rate | Description |
|---|
event_id | Utf8 | No | 100% | Unique event identifier (UUID) |
organization_id | Utf8 | No | - | Delivr organization ID (schema-only, see project_id in responses) |
project_id | Utf8 | - | 100% | Project ID (appears in response data, not in schema) |
event_type | Utf8 | No | 100% | Event type: page_view, scroll_depth, form_submit, etc. |
timestamp | Utf8 | No | 100% | ISO 8601 timestamp with microseconds (UTC) |
ts_millis | Int64 | No | 100% | Epoch milliseconds timestamp |
resolved | Boolean | Yes | 100% | Whether identity resolution succeeded |
Fields that differ between pixel and DSP events.
Present only on pixel (on-domain) events. Null or absent on DSP events.
| Field | Data Type | Nullable | Description |
|---|
pixel_id | Utf8 | No | Pixel that captured the event |
cookie_id | Int64 | Yes | Browser cookie identifier |
headers | Utf8 | Yes | Full HTTP request headers (JSON string) |
Present only on DSP (ad impression) events. Null or absent on pixel events.
| Field | Data Type | Nullable | Description |
|---|
bid_advertiser_id | Utf8 | Yes | AdKernel advertiser account ID |
bid_campaign_id | Utf8 | Yes | AdKernel campaign ID (matches campaign_id query param) |
bid_creative_id | Utf8 | Yes | Creative/ad unit ID |
bid_network_id | Utf8 | Yes | Ad network ID |
click_url | Utf8 | Yes | Click destination URL (null for impressions) |
Present on both pixel and DSP events when queried via v2 endpoints.
| Field | Data Type | Nullable | Description |
|---|
source | Utf8 | Yes | Event source: pixel or adkernel |
event_model | Utf8 | Yes | Storage model: pixel or adkernel |
event_source_id | Utf8 | Yes | Source identifier (pixel_id for pixel, campaign_id for DSP) |
date | Utf8 | Yes | Event date: YYYY-MM-DD |
Raw request data from the pixel capture.
| Field | Data Type | Nullable | Rate | Description |
|---|
client_ip | Utf8 | Yes | 100% | IP address after proxy (GCP load balancer IP) |
ip | Utf8 | Yes | 100% | Original visitor IP from X-Forwarded-For |
user_agent | Utf8 | Yes | 100% | Browser user agent string |
referrer_url | Utf8 | Yes | 100% | Page referrer URL |
event_data | Utf8 | Yes | 100% | Page-level event payload (JSON string with URL, title, viewport, etc.) |
extra_json | Utf8 | Yes | 0% | Additional event metadata (JSON string) |
DSP event_data: For DSP events, contains a JSON object with content (app_bundle, traffic_type), device (browser, os, carrier, connection_type, make, model), geo (city, country, lat, lon, postal_code, region), and pricing (advertiser_price, bid_price, win_price) sub-objects.
Hashed email identifiers used for identity matching. Present on all resolved events.
| Field | Data Type | Nullable | Rate | Description |
|---|
hem | Utf8 | Yes | 100% | Primary HEM (SHA256 lowercase, matches sha256_lc_hem) |
hems | List<Utf8> | Yes | 100% | All associated HEMs for this identity (array) |
domain_lc | Utf8 | Yes | 100% | Email domain (lowercase) |
is_email_business | Utf8 | Yes | 100% | "true" / "false" - whether primary email is business |
is_email_personal | Utf8 | Yes | 100% | "true" / "false" - whether primary email is personal |
is_international | Utf8 | Yes | 100% | "true" / "false" - whether the visitor is non-US |
| Field | Data Type | Nullable | Rate | Description |
|---|
md5_lc_hem | Utf8 | Yes | 100% | MD5 hash of lowercase email |
md5_uc_hem | Utf8 | Yes | 24% | MD5 hash of original-case email |
sha1_lc_hem | Utf8 | Yes | 100% | SHA1 hash of lowercase email |
sha1_uc_hem | Utf8 | Yes | 24% | SHA1 hash of original-case email |
sha256_lc_hem | Utf8 | Yes | 100% | SHA256 hash of lowercase email |
sha256_uc_hem | Utf8 | Yes | 24% | SHA256 hash of original-case email |
Duplicated from the Elixir identity graph with emails_ prefix. Populated only when full enrichment data exists.
| Field | Data Type | Nullable | Rate | Description |
|---|
emails_md5_lc_hem | Utf8 | Yes | 24% | MD5 lowercase (Elixir source) |
emails_md5_uc_hem | Utf8 | Yes | 24% | MD5 original-case (Elixir source) |
emails_sha1_lc_hem | Utf8 | Yes | 24% | SHA1 lowercase (Elixir source) |
emails_sha1_uc_hem | Utf8 | Yes | 24% | SHA1 original-case (Elixir source) |
emails_sha256_lc_hem | Utf8 | Yes | 24% | SHA256 lowercase (Elixir source) |
emails_sha256_uc_hem | Utf8 | Yes | 24% | SHA256 original-case (Elixir source) |
Contact-level data from the Elixir identity graph. Resolved-only -- null on unresolved events.
| Field | Data Type | Nullable | Rate | Description |
|---|
first_name | Utf8 | Yes | 24% | First name (lowercase) |
middle_name | Utf8 | Yes | 0% | Middle name |
last_name | Utf8 | Yes | 24% | Last name (lowercase) |
gender | Utf8 | Yes | 24% | Gender: "f", "m", "u" |
inferred_gender | Utf8 | Yes | 24% | Algorithmically inferred gender |
inferred_gender_unisex | Utf8 | Yes | 24% | "y" / "n" - whether name is unisex |
age_range | Utf8 | Yes | 24% | Age bracket (e.g., "25-34") |
photo_url | Utf8 | Yes | 24% | Profile photo URL (typically LinkedIn default) |
| Field | Data Type | Nullable | Rate | Description |
|---|
email | Utf8 | Yes | 100% | Primary resolved email address |
emails | Utf8 | Yes | 24% | All known email addresses (comma-separated) |
personal_email | Utf8 | Yes | 24% | Primary personal email |
personal_emails | Utf8 | Yes | 24% | All personal emails (comma-separated) |
current_business_email | Utf8 | Yes | 0% | Current business email |
business_emails | Utf8 | Yes | 0% | All business emails |
primary_contact_emails | Utf8 | Yes | 24% | Primary contact email addresses |
valid_emails | Utf8 | Yes | 0% | Validated email addresses |
invalid_emails | Utf8 | Yes | 0% | Known-invalid email addresses |
email_validation_status | Utf8 | Yes | 100% | Validation status: "catchall", "invalid", "unknown", "valid" |
personal_email_validation_status | Utf8 | Yes | 24% | Personal email validation status |
current_business_email_validation_status | Utf8 | Yes | 0% | Business email validation status |
email_last_seen | Date32 | Yes | 0% | Last date email was verified active |
current_business_email_validation_date | Date32 | Yes | 0% | Business email validation date |
| Field | Data Type | Nullable | Rate | Description |
|---|
phones | Utf8 | Yes | 24% | All phone numbers (comma-separated) |
phones_dnc | Utf8 | Yes | 24% | DNC status per phone: "y", "n" (comma-separated) |
direct_numbers | Utf8 | Yes | 24% | Direct/work phone numbers |
direct_numbers_dnc | Utf8 | Yes | 24% | DNC status for direct numbers |
mobile_phones | Utf8 | Yes | 24% | Mobile phone numbers |
mobile_phones_dnc | Utf8 | Yes | 24% | DNC status for mobile phones |
mobile_phones_validation_status | Utf8 | Yes | 24% | Comma-separated, positionally aligned with mobile_phones: "unknown", "valid" |
mobile_phones_validation_date | Utf8 | Yes | 24% | Mobile validation date |
personal_phones | Utf8 | Yes | 24% | Personal phone numbers |
personal_phones_dnc | Utf8 | Yes | 24% | DNC status for personal phones |
| Field | Data Type | Nullable | Rate | Description |
|---|
job_title | Utf8 | Yes | 24% | Current job title (lowercase) |
job_title_normalized | Utf8 | Yes | 24% | Standardized job title |
job_title_history | Utf8 | Yes | 24% | Previous job titles |
headline | Utf8 | Yes | 24% | LinkedIn headline |
seniority_level | Utf8 | Yes | 24% | Normalized seniority: "cxo", "director", "manager", "staff", "vp" |
seniority_level_2 | Utf8 | Yes | 0% | Secondary seniority classification |
seniority_level_raw | Utf8 | Yes | 24% | Raw seniority from source: "entry", "senior", etc. |
department | Utf8 | Yes | 0% | Primary department |
department_2 | Utf8 | Yes | 0% | Secondary department |
department_raw | Utf8 | Yes | 0% | Raw department from source |
subdepartments | Utf8 | Yes | 0% | Subdepartment classifications |
job_functions | Utf8 | Yes | 0% | Job function categories |
inferred_years_experience | Utf8 | Yes | 0% | Estimated years of experience |
education_history | Utf8 | Yes | 24% | Education records (JSON string with name, URL, dates) |
| Field | Data Type | Nullable | Rate | Description |
|---|
linkedin_url | Utf8 | Yes | 24% | LinkedIn profile URL |
twitter_url | Utf8 | Yes | 0% | Twitter/X profile URL |
github_url | Utf8 | Yes | 0% | GitHub profile URL |
facebook_url | Utf8 | Yes | 0% | Facebook profile URL |
social_connections | Utf8 | Yes | 24% | Connection count range (e.g., "1-9", "500+") |
| Field | Data Type | Nullable | Rate | Description |
|---|
personal_address | Utf8 | Yes | 0% | Street address |
personal_address_2 | Utf8 | Yes | 0% | Address line 2 |
personal_city | Utf8 | Yes | 24% | City (stored lowercase, returned title-cased by API) |
personal_state | Utf8 | Yes | 24% | State name (stored lowercase, returned title-cased by API) |
personal_state_code | Utf8 | Yes | 24% | Two-letter state code (stored lowercase, returned uppercase by API) |
personal_country | Utf8 | Yes | 24% | Country name (stored lowercase, returned title-cased by API) |
personal_country_alpha2 | Utf8 | Yes | 24% | ISO 3166-1 alpha-2 country code |
personal_country_alpha3 | Utf8 | Yes | 24% | ISO 3166-1 alpha-3 country code |
personal_country_numeric | Float64 | Yes | 24% | ISO 3166-1 numeric country code |
personal_timezone | Int32 | Yes | 0% | UTC offset |
personal_zip | Utf8 | Yes | 0% | ZIP code |
personal_zip4 | Utf8 | Yes | 0% | ZIP+4 code |
address_id | Utf8 | Yes | 24% | Encoded address identifier |
dpv_code | Utf8 | Yes | 0% | Delivery Point Validation code (USPS) |
| Field | Data Type | Nullable | Rate | Description |
|---|
has_children | Utf8 | Yes | 24% | "y" / "n" |
income_range_lc | Utf8 | Yes | 24% | Household income range (e.g., "$150,000 to $199,999") |
net_worth | Utf8 | Yes | 24% | Estimated net worth range |
is_homeowner | Utf8 | Yes | 24% | "y" / "n" |
is_married | Utf8 | Yes | 24% | "y" / "n" |
is_profile_b2b | Utf8 | Yes | 24% | "y" / "n" - B2B profile flag |
is_profile_b2c | Utf8 | Yes | 24% | "y" / "n" - B2C profile flag |
Firmographic data from the Elixir identity graph. Resolved-only.
| Field | Data Type | Nullable | Rate | Description |
|---|
company_name | Utf8 | Yes | 24% | Company name |
company_name_history | Utf8 | Yes | 24% | Previous company names |
company_domain | Utf8 | Yes | 24% | Company website domain |
company_related_domains | Utf8 | Yes | 24% | Associated domains (comma-separated) |
company_description | Utf8 | Yes | 24% | Company description |
company_industry | Utf8 | Yes | 24% | Primary industry |
company_naics | Utf8 | Yes | 24% | NAICS industry code |
company_sic | Utf8 | Yes | 0% | SIC industry code |
company_employee_count | Utf8 | Yes | 24% | Exact employee count (string) |
company_employee_count_range | Utf8 | Yes | 24% | Employee range (e.g., "1 to 10", "51 to 100", "101 to 250") |
company_total_revenue | Float64 | Yes | 24% | Annual revenue (numeric) |
company_revenue_range | Utf8 | Yes | 24% | Revenue bracket (e.g., "1 million to 5 million") |
company_address | Utf8 | Yes | 24% | Company street address |
company_address2 | Utf8 | Yes | 0% | Company address line 2 |
company_city | Utf8 | Yes | 24% | Company city |
company_state | Utf8 | Yes | 24% | Company state |
company_zip_code | Utf8 | Yes | 24% | Company ZIP code |
company_country | Utf8 | Yes | 24% | Company country |
company_phones | Utf8 | Yes | 24% | Company phone numbers |
company_phones_dnc | Utf8 | Yes | 24% | Company phone DNC status |
company_linkedin_url | Utf8 | Yes | 24% | Company LinkedIn URL |
company_id | Utf8 | Yes | 24% | Internal company identifier (MD5 hash) |
company_id_right | Utf8 | Yes | 24% | Matched company ID from enrichment join |
Used for identity graph linking and deduplication.
| Field | Data Type | Nullable | Rate | Description |
|---|
first_uuid_norm | Utf8 | Yes | 24% | Primary normalized UUID from identity graph |
flattened_uuids | Utf8 | Yes | 24% | All UUIDs linked to this identity |
profile_pid_all | Utf8 | Yes | 24% | Profile person ID (MD5 hash) |
last_updated | Date32 | Yes | 0% | Last enrichment update date |
All 132 fields can be used with the select parameter. Full list for copy-paste:
event_id,pixel_id,organization_id,event_type,timestamp,ts_millis,cookie_id,hem,hems,
user_agent,client_ip,ip,event_data,headers,referrer_url,extra_json,resolved,
address_id,age_range,business_emails,company_address,company_address2,company_city,
company_country,company_description,company_domain,company_employee_count,
company_employee_count_range,company_id,company_id_right,company_industry,
company_linkedin_url,company_naics,company_name,company_name_history,company_phones,
company_phones_dnc,company_related_domains,company_revenue_range,company_sic,
company_state,company_total_revenue,company_zip_code,current_business_email,
current_business_email_validation_date,current_business_email_validation_status,
department,department_2,department_raw,direct_numbers,direct_numbers_dnc,domain_lc,
dpv_code,education_history,email,email_last_seen,email_validation_status,emails,
emails_md5_lc_hem,emails_md5_uc_hem,emails_sha1_lc_hem,emails_sha1_uc_hem,
emails_sha256_lc_hem,emails_sha256_uc_hem,first_name,first_uuid_norm,flattened_uuids,
gender,has_children,headline,income_range_lc,inferred_gender,inferred_gender_unisex,
inferred_years_experience,invalid_emails,is_email_business,is_email_personal,
is_homeowner,is_international,is_married,is_profile_b2b,is_profile_b2c,job_functions,
job_title,job_title_history,job_title_normalized,last_name,last_updated,linkedin_url,
md5_lc_hem,md5_uc_hem,middle_name,mobile_phones,mobile_phones_dnc,
mobile_phones_validation_date,mobile_phones_validation_status,net_worth,
personal_address,personal_address_2,personal_city,personal_country,
personal_country_alpha2,personal_country_alpha3,personal_country_numeric,
personal_email,personal_email_validation_status,personal_emails,personal_phones,
personal_phones_dnc,personal_state,personal_state_code,personal_timezone,personal_zip,
personal_zip4,phones,phones_dnc,photo_url,primary_contact_emails,profile_pid_all,
seniority_level,seniority_level_2,seniority_level_raw,sha1_lc_hem,sha1_uc_hem,
sha256_lc_hem,sha256_uc_hem,social_connections,subdepartments,valid_emails,twitter_url,
github_url,facebook_url,job_title_normalized
Fields fall into two tiers based on enrichment availability:
- 100% on resolved on-domain events: Core event fields (
event_id, timestamp, cookie_id, ip, hem, email, user_agent, etc.) -- these exist for every resolved on-domain event
- ~24% on resolved on-domain events: Full enrichment fields (person demographics, company firmographics, phone numbers, etc.) -- only populated when the identity graph has a rich profile match via Elixir/HER
The 24% rate reflects on-domain events where only a HEM-to-email resolution occurred without full Elixir profile enrichment. The has_valuable_data=true query parameter can filter to only on-domain events with enrichment data populated.
- Names: Stored and returned in lowercase
- Addresses, industries: Stored in lowercase, returned title-cased by the Events API (e.g.,
"florida" stored, "Florida" returned)
- Boolean-like strings:
"y" / "n" or "true" / "false" (not actual booleans)
- Phone numbers: E.164 format with
+ prefix, comma-separated when multiple
- DNC fields: Positionally aligned with their phone counterpart (e.g.,
phones: "+1234, +5678" and phones_dnc: "n, y")
- JSON fields:
event_data, headers, education_history are stringified JSON
- Hashes: Lowercase hex strings (MD5: 32 chars, SHA1: 40 chars, SHA256: 64 chars)
- Dates:
Date32 fields use YYYY-MM-DD format; timestamps use ISO 8601 with microseconds
| Endpoint | Version | Scope | Description |
|---|
GET /api/v1/events | v1 | pixel_id or project_id | Query pixel events |
GET /api/v1/event_counts | v1 | pixel_id or project_id | Count pixel events |
GET /api/v1/events_schema | v1 | None | Get field schema |
GET /api/v2/events | v2 | pixel_id, project_id, or campaign_id | Query pixel or DSP events |
GET /api/v2/event_counts | v2 | pixel_id, project_id, or campaign_id | Count pixel or DSP events |
GET /api/v2/events_schema | v2 | None | Get field schema by source |
DSP events have different event types than pixel events:
| Source | Event Types |
|---|
| Pixel | page_view, scroll_depth, form_submit, click, file_download, copy, exit_intent, user_idle, video_engagement |
| DSP | impression, click, conversion |