Developer
Export data
Read your clean data out of DataCops with simple GET endpoints. Every record is already bot filtered, fraud scored, and consent checked.
Overview
The export endpoints let you read your data out of DataCops. Each one is a GET request, authenticated with your private key and paginated by time, so you can pull new records on a schedule into a warehouse, a spreadsheet, or an automation.
Base URL
https://api.joindatacops.com/api/v1Authentication
Send your Private API Key in the x-dc-key header on every request. Create a key in the dashboard under Settings, then API Keys. See Authentication for details.
x-dc-key: dcp_your_private_api_keyQuery parameters
Every list endpoint below accepts the same three optional parameters.
- since (ISO date): return records at or after this time. Defaults to the beginning.
- until (ISO date): return records before this time. Defaults to now.
- limit (number): page size. Default 100, maximum 500.
Validated conversions
GET /export/conversions
Conversions that passed the bot and consent gates and were delivered to a destination. One row per conversion. No raw PII is returned.
curl "https://api.joindatacops.com/api/v1/export/conversions?limit=100" \
-H "x-dc-key: dcp_your_private_api_key"{
"success": true,
"data": [
{
"id": "1001",
"validated": true,
"event_name": "Purchase",
"provider": "meta",
"value": 49.0,
"currency": "USD",
"order_id": "1001",
"country": "US",
"has_consent": true,
"refunded": false,
"http_status": 200,
"created_at": "2026-08-26T12:00:00.000Z"
}
],
"pagination": { "count": 1, "has_more": false, "next_since": null }
}Identified users
GET /export/identified-users
Real people who identified themselves on your site, each with email fraud and IP risk signals so you only act on genuine leads.
curl "https://api.joindatacops.com/api/v1/export/identified-users?limit=100" \
-H "x-dc-key: dcp_your_private_api_key"{
"success": true,
"data": [
{
"id": "abc123",
"email": "[email protected]",
"source": "client_sdk",
"email_risk_score": 4,
"email_risk_label": "low",
"is_disposable": false,
"ip_country": "US",
"ip_is_vpn": false,
"identified_at": "2026-08-26T12:00:00.000Z"
}
],
"pagination": { "count": 1, "has_more": false, "next_since": null }
}Events
GET /export/events
Your configured Event Manager events. An integration lists these so a user can pick the same event they set up, rather than typing one that may not match.
curl "https://api.joindatacops.com/api/v1/export/events" \
-H "x-dc-key: dcp_your_private_api_key"{
"success": true,
"data": [
{ "key": "Purchase", "name": "Purchase", "source": "standard", "sends_as": "Purchase" },
{ "key": "Lead", "name": "Lead", "source": "standard", "sends_as": "Lead" },
{ "key": "contact_form", "name": "Contact form", "source": "site", "sends_as": "Lead" }
]
}- key: the value to send as the event when posting a conversion.
- name: the human readable label.
- source: where it comes from (standard, site, pixel, hosted, signup).
- sends_as: the standard conversion it maps to, or null if unmapped.
Sessions and detections
Three more list endpoints share the same authentication, query parameters, and paginated response shape as above.
- GET /export/sessions: visit level records, one per session.
- GET /export/bot-detections: visits ruled to be bots, with the reasons.
- GET /export/vpn-proxy-detections: visits hidden behind a VPN, proxy, or Tor.
Pagination
Every list response includes a pagination object. When has_more is true, pass the returned next_since value back as since on your next call, so you never miss or repeat a record.
GET https://api.joindatacops.com/api/v1/export/conversions?since=2026-08-26T12:00:00.000Z&limit=100
x-dc-key: dcp_your_private_api_keyErrors
- 200: success.
- 401: missing or invalid
x-dc-key. - 402: the workspace is paused. Upgrade to resume.
- 500: an unexpected server error. Retry the request.