ZenABM API
v1.0The ZenABM API gives you programmatic access to your ABM data — companies, campaigns, deals, job titles, ABM stages, and more. All endpoints return JSON and require Bearer token authentication.
https://app.zenabm.com/api/v1Bearer tokenJSONcurl "https://app.zenabm.com/api/v1/companies?pageSize=5" \
-H "Authorization: Bearer sk_live_xxx"Authentication
Authenticate by including your API token in the Authorization header of every request. Generate tokens from your API Keys page.
Security: Keep your token secret. Never expose it in client-side code, Git repos, or logs.
Authorization: Bearer sk_live_your_api_token{
"error": {
"status": 401,
"code": "UNAUTHORIZED",
"message": "Invalid API token"
}
}Companies
Companies represent organizations that have engaged with your LinkedIn ads. Each company includes engagement metrics, ABM stage data, and CRM match status.
List companies with insights
/companiesReturns a paginated list of companies with engagement metrics. Filter by campaigns, ABM stages, engagement scores, or CRM match status.
curl "https://app.zenabm.com/api/v1/companies?period=last30Days&campaigns=cm1abc,cm2def&engagementScores=3,4,5" \
-H "Authorization: Bearer sk_live_xxx"Get company by ID
/companies/{id}Retrieve a single company by its ID, including full profile and current metrics.
curl "https://app.zenabm.com/api/v1/companies/{id}" \
-H "Authorization: Bearer sk_live_xxx"Get company metrics overview
/companies/{id}/overviewReturns aggregated and weekly metrics for a company over a given time period.
curl "https://app.zenabm.com/api/v1/companies/{id}/overview?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"List Ad Sets for a company
/companies/{id}/campaignsReturns campaigns that a specific company has been exposed to, with per-company metrics.
curl "https://app.zenabm.com/api/v1/companies/{id}/campaigns?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"List Campaigns for a company
/companies/{id}/campaign-groupsOptional filters: sortBy, sortOrder, search
curl "https://app.zenabm.com/api/v1/companies/{id}/campaign-groups?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"List ABM campaigns for a company
/companies/{id}/abm-campaignsOptional filters: sortBy, sortOrder
curl "https://app.zenabm.com/api/v1/companies/{id}/abm-campaigns?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"Get company timeline
/companies/{id}/timelineReturns a chronological list of engagement events for a company within a date range.
curl "https://app.zenabm.com/api/v1/companies/{id}/timeline" \
-H "Authorization: Bearer sk_live_xxx"Get company activity log
/companies/{id}/activity-logMerged chronological feed of stage changes, deals, intents, and exclusions. Paginated via `page`/`pageSize`. Note: `totalCount`/`totalPages` are not returned because the feed is merged from multiple sources. Pass `startDate`/`endDate` (YYYY-MM-DD) to scope the feed to a window — when a date range is supplied, weekly LinkedIn ad-activity entries (`type: "linkedin_activity_week"`, carrying a `metrics` object with impressions/clicks/engagements/costInUsd) are merged into the feed.
curl "https://app.zenabm.com/api/v1/companies/{id}/activity-log" \
-H "Authorization: Bearer sk_live_xxx"Get deals for a company
/companies/{id}/dealsOptional filters: sortBy, sortOrder
curl "https://app.zenabm.com/api/v1/companies/{id}/deals" \
-H "Authorization: Bearer sk_live_xxx"Get ABM stages for a company
/companies/{id}/abm-stagesReturns the ABM stage history for a company, showing progression through your funnel.
curl "https://app.zenabm.com/api/v1/companies/{id}/abm-stages" \
-H "Authorization: Bearer sk_live_xxx"Ad Sets
LinkedIn ad sets with performance metrics, company-level breakdowns, and job title insights.
List Ad Sets with insights
/campaignsReturns a paginated list of LinkedIn Ad Sets with aggregated performance metrics for the requested date range. Filter by status (default: ACTIVE,PAUSED) or search by name. Each item includes both ZenABM's internal `id` (when the ad set has been imported) and the LinkedIn-native `linkedInId`. To list ad sets within a specific ABM campaign use `/abm-campaigns/{id}` instead.
curl "https://app.zenabm.com/api/v1/campaigns?period=last30Days&status=ACTIVE,PAUSED" \
-H "Authorization: Bearer sk_live_xxx"Get Ad Set by ID
/campaigns/{id}curl "https://app.zenabm.com/api/v1/campaigns/{id}" \
-H "Authorization: Bearer sk_live_xxx"Get Ad Set metrics overview
/campaigns/{id}/overviewPerformance totals for a single Ad Set over the requested date range (no weekly breakdown).
curl "https://app.zenabm.com/api/v1/campaigns/{id}/overview?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"List companies for a Ad Set
/campaigns/{id}/companiesOptional filters: sortBy, sortOrder, search
curl "https://app.zenabm.com/api/v1/campaigns/{id}/companies?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"Get job title insights for a Ad Set
/campaigns/{id}/job-titlesReturns job title engagement breakdown for a specific campaign.
curl "https://app.zenabm.com/api/v1/campaigns/{id}/job-titles?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"Ad Set monthly spend
/ad-spendReturns ad spend for LinkedIn Ad Sets within the requested date range. Response includes a `summary` of totals across the whole range and a `byAdSet` array — one entry per ad set, each carrying its own totals plus monthly buckets (`year`, `month`, `period` like `"2026-05"`). Pagination scopes `byAdSet` (summary always reflects the full range). Each ad set includes both ZenABM's internal `id` (when imported) and the LinkedIn-native `linkedInId`. Filter to a single ad set with the `linkedInId` query param.
curl "https://app.zenabm.com/api/v1/ad-spend?linkedInId=123456" \
-H "Authorization: Bearer sk_live_xxx"Aggregated LinkedIn metrics for a date range
/linkedin-metricsReturns aggregated impressions, clicks, engagements, and cost for the specified date range. Optionally filter by a single LinkedIn campaign ID.
curl "https://app.zenabm.com/api/v1/linkedin-metrics?startDate=2026-03-31&endDate=2026-04-06&linkedInCampaignId=123456" \
-H "Authorization: Bearer sk_live_xxx"Creatives
Individual LinkedIn ad creatives with format, serving status, and parent ad set and campaign context.
List ad creatives
/creativesReturns a cursor-paginated catalog of the individual ad creatives (the actual ads) in the LinkedIn ad account. Each item includes the LinkedIn-native `linkedInId`, the full `creativeUrn`, name, ad format, status, serving state, and the parent ad set + campaign (with both ZenABM `id` — when imported — and `linkedInId`). Each response carries a `nextCursor`: pass it back as the `cursor` query parameter to fetch the next page (`hasMore` is false on the last page). Optionally scope to one ad set (`adSetId`) or campaign (`campaignId`).
curl "https://app.zenabm.com/api/v1/creatives" \
-H "Authorization: Bearer sk_live_xxx"Campaigns
Campaigns are logical groupings of LinkedIn ad sets with aggregated performance metrics.
List Campaigns with insights
/campaign-groupsReturns a paginated list of LinkedIn Campaigns with aggregated performance metrics for the requested date range. Filter by status (default: ACTIVE,PAUSED) or search by name. Each item includes both ZenABM's internal `id` (when the campaign has been imported) and the LinkedIn-native `linkedInId`. To list campaigns within a specific ABM campaign use `/abm-campaigns/{id}` instead.
curl "https://app.zenabm.com/api/v1/campaign-groups?period=last30Days&status=ACTIVE,PAUSED" \
-H "Authorization: Bearer sk_live_xxx"Get Campaign by ID
/campaign-groups/{id}Returns a single Campaign with its child Ad Sets in the `adSets` array (id, linkedInId, name, status, human-readable format).
curl "https://app.zenabm.com/api/v1/campaign-groups/{id}" \
-H "Authorization: Bearer sk_live_xxx"Get Campaign metrics overview
/campaign-groups/{id}/overviewPerformance totals for a single Campaign over the requested date range — aggregated to a single `summary` (no weekly breakdown).
curl "https://app.zenabm.com/api/v1/campaign-groups/{id}/overview?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"List companies for a Campaign
/campaign-groups/{id}/companiesOptional filters: sortBy, sortOrder, search
curl "https://app.zenabm.com/api/v1/campaign-groups/{id}/companies?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"Get job title insights for a campaign group
/campaign-groups/{id}/job-titlesOptional filters: sortBy, sortOrder
curl "https://app.zenabm.com/api/v1/campaign-groups/{id}/job-titles?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"Deals
CRM deals synced with ZenABM. Includes LinkedIn and ABM influence attribution to measure pipeline impact.
List deals with insights
/dealsReturns a paginated list of CRM deals with influence attribution data.
curl "https://app.zenabm.com/api/v1/deals?dateFrom=2025-01-01&dateTo=2025-12-31&influenceFilter=LINKEDIN,ABM" \
-H "Authorization: Bearer sk_live_xxx"Job Titles
Analyze which job titles are engaging with your ads. Understand your audience at the persona level.
List job titles with insights
/job-titlesOptional filters: Ad Sets (comma-separated IDs), Campaigns (comma-separated IDs)
curl "https://app.zenabm.com/api/v1/job-titles?period=last30Days&includeWeekly=true" \
-H "Authorization: Bearer sk_live_xxx"Get job title performance overview
/job-titles/{id}/overviewPerformance totals for a single job title over the date range — aggregated across the whole ad account (impressions, clicks, engagements, cost, conversions, CTR, CPC). The path `id` is the job title URN. Returns zeroes if the job title had no activity in the window.
curl "https://app.zenabm.com/api/v1/job-titles/{id}/overview?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"Get Ad Set insights for a job title
/job-titles/{id}/campaignsAd sets this job title was exposed to, with per-job-title delivery metrics. The path `id` is the job title URN. Optional filters: sortBy, sortOrder, search.
curl "https://app.zenabm.com/api/v1/job-titles/{id}/campaigns?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"Get Campaign insights for a job title
/job-titles/{id}/campaign-groupsOptional filters: sortBy, sortOrder, search
curl "https://app.zenabm.com/api/v1/job-titles/{id}/campaign-groups?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"ABM Campaigns
ABM campaigns are high-level campaign groupings with funnel stage tracking and overview metrics.
List ABM campaigns with insights
/abm-campaignsOptional filters: status (ACTIVE,PAUSED,COMPLETED)
curl "https://app.zenabm.com/api/v1/abm-campaigns?period=last30Days&status=ACTIVE" \
-H "Authorization: Bearer sk_live_xxx"Get ABM campaign by ID
/abm-campaigns/{id}Returns the ABM campaign plus the LinkedIn entities the user assigned to it. An ABM campaign can be backed by campaigns (`linkedinCampaigns`), ad sets (`linkedinAdSets`), or both — each array is a direct membership, not a parent/child hierarchy. Either can be empty.
curl "https://app.zenabm.com/api/v1/abm-campaigns/{id}" \
-H "Authorization: Bearer sk_live_xxx"Get ABM campaign performance overview
/abm-campaigns/{id}/overviewPerformance for the date range: `metrics` (LinkedIn delivery — impressions, clicks, engagements, cost, conversions, CTR, CPC across the ad sets + campaigns assigned to this ABM campaign) and `effectiveness` (business outcomes — companiesTargeted, totalPipeline, totalRevenue, totalAdSpend, pipePerSpent, averageAcv, roas). Currency note: `metrics.costInUsd` and `effectiveness.totalAdSpend` are always USD; `effectiveness.totalPipeline`, `totalRevenue`, and `averageAcv` are in the team `displayCurrency` (HubSpot deal amounts converted at sync time). `pipePerSpent` and `roas` are therefore ratios across the two currencies — treat as approximate unless `displayCurrency` is USD.
curl "https://app.zenabm.com/api/v1/abm-campaigns/{id}/overview?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"Get ABM campaign stages breakdown
/abm-campaigns/{id}/stages-breakdownReturns a breakdown of companies across each ABM funnel stage.
curl "https://app.zenabm.com/api/v1/abm-campaigns/{id}/stages-breakdown?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"List companies for an ABM campaign
/abm-campaigns/{id}/companiesReturns a paginated list of companies with engagement metrics and intent data for a specific ABM campaign. Aggregates data from all linked LinkedIn campaigns and campaign groups.
curl "https://app.zenabm.com/api/v1/abm-campaigns/{id}/companies?period=last30Days&engagementScores=3,4,5&crmMatchStatus=all" \
-H "Authorization: Bearer sk_live_xxx"List job titles for an ABM campaign
/abm-campaigns/{id}/job-titlesReturns a paginated list of job titles with engagement metrics for a specific ABM campaign. Aggregates data from all linked LinkedIn campaigns and campaign groups.
curl "https://app.zenabm.com/api/v1/abm-campaigns/{id}/job-titles?period=last30Days" \
-H "Authorization: Bearer sk_live_xxx"ABM Stages
ABM funnel stages — track companies entering, progressing through, and the history of each stage.
List ABM stages
/abm-stagescurl "https://app.zenabm.com/api/v1/abm-stages" \
-H "Authorization: Bearer sk_live_xxx"Get ABM stage by ID
/abm-stages/{id}Returns the ABM stage with `currentCompaniesCount` — the number of companies currently in this stage.
curl "https://app.zenabm.com/api/v1/abm-stages/{id}" \
-H "Authorization: Bearer sk_live_xxx"List companies currently in an ABM stage
/abm-stages/{id}/companiesReturns a paginated list of companies whose current ABM stage matches the given stage ID. Supports search and sorting.
curl "https://app.zenabm.com/api/v1/abm-stages/{id}/companies" \
-H "Authorization: Bearer sk_live_xxx"Get companies entering an ABM stage
/abm-stages/{id}/companies-enteringcurl "https://app.zenabm.com/api/v1/abm-stages/{id}/companies-entering" \
-H "Authorization: Bearer sk_live_xxx"Get companies progressing from an ABM stage
/abm-stages/{id}/companies-progressingcurl "https://app.zenabm.com/api/v1/abm-stages/{id}/companies-progressing" \
-H "Authorization: Bearer sk_live_xxx"Get ABM stage history
/abm-stages/{id}/historycurl "https://app.zenabm.com/api/v1/abm-stages/{id}/history" \
-H "Authorization: Bearer sk_live_xxx"Intents
Intent signals configured for your team — used to qualify and prioritize target accounts.
List intents
/intentscurl "https://app.zenabm.com/api/v1/intents" \
-H "Authorization: Bearer sk_live_xxx"Get intent by ID
/intents/{id}Returns the intent with the ad sets and campaigns it is assigned to, plus `companyCount` — the number of companies tagged with this intent.
curl "https://app.zenabm.com/api/v1/intents/{id}" \
-H "Authorization: Bearer sk_live_xxx"Contacts
HubSpot contacts with source touchpoint totals, company context, ABM stage context, and related deals.
List contacts with source touchpoints
/contactsReturns a paginated list of HubSpot contacts with source touchpoint totals, company context, ABM stage context, and related deals.
curl "https://app.zenabm.com/api/v1/contacts?startDate=2026-04-01T00:00:00.000Z&endDate=2026-05-01T00:00:00.000Z&touchpoints=PAID_SEARCH,AI_REFERRALS|AI: ChatGPT" \
-H "Authorization: Bearer sk_live_xxx"Get contact journey
/contacts/{id}Returns a single contact with company context, source events, related deals, and a weekly source-event timeline.
curl "https://app.zenabm.com/api/v1/contacts/{id}" \
-H "Authorization: Bearer sk_live_xxx"Sources
Aggregated contact source events grouped by source type — paid search, paid social, AI referrals, and more — with click, contact, and company breakdowns.
List contact source aggregates
/sourcesReturns aggregated contact source events grouped by source type. Each row reports total clicks, distinct contacts, and distinct companies. Filter by an optional date range.
curl "https://app.zenabm.com/api/v1/sources?startDate=2026-04-01T00:00:00.000Z&endDate=2026-05-01T00:00:00.000Z" \
-H "Authorization: Bearer sk_live_xxx"Get source detail by type
/sources/{sourceType}Returns the contacts, companies, and weekly timeline for a single source type within an optional date range. Capped at the most recent 500 events.
curl "https://app.zenabm.com/api/v1/sources/{sourceType}?label=AI: ChatGPT&startDate=2026-04-01T00:00:00.000Z&endDate=2026-05-01T00:00:00.000Z" \
-H "Authorization: Bearer sk_live_xxx"Dashboard
Dashboard-level aggregate metrics — top companies, ad spend, and overall performance at a glance.
Get dashboard overview
/dashboardReturns a high-level overview with top companies, total metrics, and ad spend for the given date range.
curl "https://app.zenabm.com/api/v1/dashboard" \
-H "Authorization: Bearer sk_live_xxx"Need help?
Our team can help with integration, debugging, or custom endpoint requests.
Contact support{
"rateLimit": {
"requests": "100/min",
"headers": {
"X-RateLimit-Limit": 100,
"X-RateLimit-Remaining": 97
}
}
}