← Resources

Tools

Hyros api

A practical playbook for using the Hyros API - what's exposed, how to authenticate, how to build custom integrations and warehouse syncs, and the limits to plan around.

Updated

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

0/9
  1. 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. 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. 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. 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. 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. 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. 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. 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. 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.

Try Shuttergen free

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?
Yes, but it's gated. Growth tier and above typically include API access; the Starter tier typically does not. Confirm with your Hyros account manager before building anything that depends on API access.
How do I get a Hyros API key?
In the Hyros admin panel, navigate to Settings → API → Generate Key. The key is a long alphanumeric string starting with hys_live_. Treat it as a secret; store in your secrets manager, never commit to source control.
What's the Hyros API rate limit?
Typically 60 requests per minute per API key, though the exact limit can vary by tier. Implement exponential backoff on 429 responses; don't retry tightly because you'll just hit the limit again.
Can I push custom conversion events via the Hyros API?
Yes - POST /v1/sales or POST /v1/leads with the user's email, sale ID, amount, and occurred_at timestamp. Hyros's identity resolution stitches the event into the user's existing journey and pushes it back to ad platforms via CAPI.
What language SDKs does Hyros offer?
In 2026 Hyros provides a Node SDK and basic Python helper code in the docs. For other languages (Go, Ruby, PHP), the API is REST-over-HTTP with JSON bodies - any standard HTTP client works.
Is the Hyros API stable enough for production use?
Yes - the v1 API has been stable since 2022 with backward-compatible additions only. Hyros publishes deprecation notices in advance of breaking changes. Build against /v1/ and you'll be fine for the foreseeable future.

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.