Before you start
- An active Hyros account on Growth tier or above (API access is typically gated to higher tiers)
- An API key generated from the Hyros admin panel under Settings → API
- Familiarity with REST APIs, JSON, and basic auth headers
- A backend service or scheduled job environment to run the integration from (Node, Python, Go - anything that speaks HTTP)
- A target system to push or pull data to/from - warehouse (BigQuery, Snowflake), CRM, custom dashboard, or internal tool
The playbook
9 steps
1. Confirm your tier has API access
API access is not included in all tiers. The Starter tier typically does not include API access; Growth and Scale tiers do. If you can't find the API key generation page under Settings, your tier doesn't include it. Contact your Hyros account manager to confirm before building anything that depends on API access.
TipIf you're on Starter and need API access, the cost-effective path is usually to upgrade to Growth - the API access plus deeper integration support justifies the tier jump.2. Generate your API key
In the Hyros admin panel, navigate to Settings → API → Generate Key. The key is a long alphanumeric string. Treat it like a password - store it in your secrets manager (1Password, Vercel env vars, AWS Secrets Manager), never commit it to source control.
# Store in your env export HYROS_API_KEY="hys_live_xxxxxxxxxxxxxxxxxxxxxxxx"Expected outcome
API key stored securely and accessible to your backend service.
3. Make your first authenticated request
Hyros uses API key authentication via the API-Key header (not Authorization: Bearer). The base URL is api.hyros.com/v1/. Test connectivity with a simple GET to the leads or sales endpoint.
curl -X GET \ -H "API-Key: $HYROS_API_KEY" \ -H "Content-Type: application/json" \ "https://api.hyros.com/v1/leads?from=2026-05-01&to=2026-05-20"Expected outcome
A JSON response with lead data for the date range, confirming auth is working and your tier has access.
4. Decide whether you're reading, writing, or both
The Hyros API supports both read (pull lead/sale/attribution data into your warehouse or dashboard) and write (push custom conversion events from your backend into Hyros). Most integrations are read-only - pulling Hyros's attributed data into a warehouse for custom reporting. Write integrations are rarer and used when you have backend events that aren't captured by the standard JS tag or webhook integrations.
TipIf you're tempted to write a custom integration to push purchase events, check first whether one of Hyros's existing native integrations (Stripe, ThriveCart, GoHighLevel) covers your case. The native integrations are pre-tested and reduce maintenance burden.5. Build a read integration: warehouse sync
The most common Hyros API use case: pulling attributed lead/sale data into BigQuery or Snowflake for blending with other marketing data sources. Schedule a job (cron, Airflow, dbt Cloud) to pull the previous day's data each morning, dedupe against existing records, and append to your warehouse table.
// Node example: pull yesterday's sales const yesterday = new Date(Date.now() - 86400000).toISOString().split('T')[0]; const today = new Date().toISOString().split('T')[0]; const res = await fetch( `https://api.hyros.com/v1/sales?from=${yesterday}&to=${today}`, { headers: { 'API-Key': process.env.HYROS_API_KEY } } ); const { data } = await res.json(); // Then insert into BigQuery, dedupe by sale ID await bigquery.dataset('marketing').table('hyros_sales').insert(data);Expected outcome
Daily incremental sync of Hyros sales data into your warehouse for custom reporting and blending.
6. Build a write integration: custom conversion event
If you have a conversion event that isn't captured by standard integrations - for example, a successful sales call logged in a bespoke internal tool, or a renewal event from a custom billing system - push it to Hyros via the POST /v1/sales or POST /v1/leads endpoint. Include the user's email so identity resolution can stitch the event into the existing journey.
await fetch('https://api.hyros.com/v1/sales', { method: 'POST', headers: { 'API-Key': process.env.HYROS_API_KEY, 'Content-Type': 'application/json', }, body: JSON.stringify({ email: 'customer@example.com', sale_id: 'internal_sale_12345', amount: 1500, currency: 'USD', occurred_at: '2026-05-20T14:30:00Z', // Custom metadata sales_rep: 'jane.smith', product: 'enterprise_plan', }), });Expected outcome
Custom event ingested into Hyros, stitched into the user's journey, and pushed back to Meta/Google/TikTok via CAPI for ad-platform optimization.
7. Handle pagination and rate limits
List endpoints (GET /v1/leads, GET /v1/sales) paginate by default at 100 records per page. Use the page query parameter to walk through pages. Rate limits are typically 60 requests per minute per API key; back off with exponential delay on 429 responses.
let page = 1; let hasMore = true; const allData = []; while (hasMore) { const res = await fetch( `https://api.hyros.com/v1/sales?from=${from}&to=${to}&page=${page}`, { headers: { 'API-Key': process.env.HYROS_API_KEY } } ); if (res.status === 429) { await new Promise(r => setTimeout(r, 60000)); continue; } const { data, has_more } = await res.json(); allData.push(...data); hasMore = has_more; page++; }Expected outcome
Full dataset paginated cleanly with rate-limit respect.
8. Build idempotency into write operations
Webhook-style write operations should be idempotent. Use your internal sale_id as the unique identifier and rely on Hyros's dedupe logic to ignore replays. If you're scheduling the job, expect occasional retries - your code shouldn't double-count sales because of them.
TipAlways include occurred_at when posting sales - if you omit it, Hyros stamps the event at ingest time which breaks historical backfills.9. Monitor the integration
API integrations break silently. Wire alerting on (a) auth failures (401 responses indicating key rotation or expiry), (b) sustained 5xx responses indicating Hyros API outage, (c) zero-record days from list endpoints (likely indicates upstream data flow break), and (d) significant deltas in pulled data volumes vs expected baselines.
TipSend a daily 'integration heartbeat' to your monitoring tool of choice (Datadog, Better Stack, PagerDuty). A silent integration that hasn't run in a week is the most common failure mode.
Shuttergen
Attribution data is the ingredient. Creative is the meal.
Pulling Hyros data into your warehouse tells you which creative worked. Shuttergen turns that signal into the next 10 variants of your winner - automatically, in your brand voice.
Pitfalls
What goes wrong
Assuming API access on Starter tier
API access is typically gated to Growth tier and above. Confirm before building. Multiple teams have built warehouse syncs against the assumption only to discover their tier doesn't include API access.
Storing API key in source control
Hyros API keys grant full read/write access to your attribution data. Treat them as secrets. Use your platform's secret manager; never commit them to GitHub even in private repos.
Pulling all-time data on every run
Some teams build their sync as a full historical pull rather than an incremental daily delta. This hits rate limits, increases API cost (Hyros may track API usage in higher tiers), and creates dedupe complexity downstream. Always incremental - pull only the new data since the last successful run.
Ignoring the occurred_at field on write operations
If you POST a sale without occurred_at, Hyros stamps it at ingest time. For historical backfills this is wrong - the sale's effective date should be when it actually happened, not when you happened to send it. Always include occurred_at.
Not handling the 429 rate limit gracefully
Hyros enforces rate limits (typically 60 req/min). Without backoff, your sync hits the limit and starts failing. Implement exponential backoff with a maximum retry count.
Forgetting to monitor for silent failures
API integrations break and nobody notices for weeks. Wire alerting on auth failures, sustained errors, and zero-record days. A daily heartbeat to your monitoring tool catches the most common failure modes.
Limits
When this playbook won't work
- When your Hyros tier doesn't include API access (Starter tier typically excludes it)
- When you need real-time event streaming - the Hyros API is request-response, not webhook-push; for real-time use the existing CAPI integration not the API
- When you need historical data older than 90 days - some list endpoints cap the lookback window
- When you need fields that aren't exposed in the API - the API surface is narrower than the dashboard; some metrics are dashboard-only
- When your use case is better served by an existing native integration - building a custom integration when a native one exists adds maintenance burden without benefit
What the Hyros API actually exposes
The Hyros API surface in 2026 covers the core entity types in the Hyros data model: leads, sales, traffic sources, attribution data, and (in higher tiers) custom events. The endpoints follow standard REST conventions - GET for list and retrieve, POST for create, PATCH for update. All requests authenticate via API-Key header; all responses are JSON.
What the API does well: bulk export of attribution data for warehouse syncs, programmatic creation of custom conversion events from backend systems, and pulling reporting data for custom dashboards. Most teams using the API in 2026 are doing one of these three things.
What the API doesn't do well: real-time event streaming (use CAPI for that), dashboard-feature parity (some metrics exist only in the dashboard), and fine-grained user-level identity manipulation (the IR layer is not directly addressable via API).
The API documentation lives at hyros.com/help with code examples in cURL and Node. Documentation quality has improved meaningfully since 2023; for niche use cases you may still need to ask the Hyros support team for clarification on edge cases.
Attribution data is the ingredient. Creative is the meal. Pulling Hyros data into your warehouse tells you which creative worked. Shuttergen turns that signal into the next 10 variants of your winner - automatically, in your brand voice.
Typical Hyros API use cases in 2026
Use case 1: warehouse sync for custom reporting. Pull attributed lead/sale data daily into BigQuery or Snowflake. Blend with other marketing data sources (Stripe revenue, CRM stages, email engagement) for unified reporting that Hyros's native dashboard can't deliver. The most common API use case in 2026.
Use case 2: custom backend conversion events. Push conversion events from bespoke internal systems (sales call notes in a custom CRM, manual upsell logs, renewal events from custom billing). These events flow into Hyros's identity resolution and CAPI pipeline alongside the standard integration events. Less common but high-value when your stack includes custom-built tools.
Use case 3: agency client portal. Agencies pull each client's attribution data into a unified dashboard for white-labeled reporting. Cleaner than logging into each client's Hyros account individually; faster to update and customize per client.
Use case 4: A/B test attribution pull. Pull attribution data for specific campaigns or audiences during an A/B test for cleaner analysis than the dashboard provides. Particularly useful for incrementality tests that span multiple weeks.
Use case 5: alerting on attribution drops. Pull daily attribution metrics into your monitoring system; alert when attribution drops significantly week-over-week. Catches integration breakages and CAPI signal degradation before they show up in ROAS reports.
Internal: see hyros for the product deep dive, hyros-tracking for how the tracking architecture works, and hyros-chrome-extension for the browser-extension surface.
FAQ
Frequently asked
Does Hyros have a public API?
How do I get a Hyros API key?
What's the Hyros API rate limit?
Can I push custom conversion events via the Hyros API?
What language SDKs does Hyros offer?
Is the Hyros API stable enough for production use?
Related
Keep reading
Sources
Attribution data is the ingredient. Creative is the meal.
Pulling Hyros data into your warehouse tells you which creative worked. Shuttergen turns that signal into the next 10 variants of your winner - automatically, in your brand voice.