canonical: https://jentic.com/apis/botdog.co/botdog

# Botdog API

Jentic publishes the only available OpenAPI specification for Botdog API, keeping it validated and agent-ready. Botdog is a LinkedIn automation tool for outbound sales teams, helping reps run connection and message campaigns at scale while staying within LinkedIn safety limits. The API exposes campaigns, leads, users, and analytics so sales operations teams can push leads into running campaigns, monitor send and reply rates, and report by user. Authentication uses an x-api-key header with a bd_live_ prefix.

## For AI agents

Push leads into Botdog LinkedIn outreach campaigns and pull campaign and per-user analytics across 11 endpoints.

## Scope

Does not handle email sequences, phone dialling, or CRM record management - use for LinkedIn outreach campaign feed and analytics only.

## Capabilities

- Add leads in bulk to a running LinkedIn outreach campaign
- List active campaigns and pull per-campaign statistics
- Retrieve workspace users and team metadata
- Pull aggregate outreach analytics across the workspace
- Pull daily time-series analytics for trend reporting
- Break analytics down by individual user for performance reviews
- Health-check the API before scheduling automation jobs

## Use cases

### Push leads from a sales database into LinkedIn campaigns

RevOps teams enrich a target account list in their CRM and push the resulting LinkedIn profile URLs into a Botdog campaign so SDRs send connection requests on autopilot. POST `/v1/leads/add_to_campaign` accepts a campaign id and a batch of leads, and the campaign's statistics endpoint lets the team confirm the new leads are picked up. Most teams ship the integration in a day.

Example prompt: Add 25 LinkedIn lead URLs from the latest enrichment job into campaign id camp_q3_outbound and report the count accepted

### Per-user outreach performance dashboard

Sales leaders need a daily view of connection requests sent, accepted, and replies received by each SDR. GET `/v1/analytics/by-user` returns the per-rep counts and GET `/v1/analytics/daily` provides time-series data, both ready for a BI dashboard or weekly recap. Setup typically takes a few hours after auth is in place.

Example prompt: Pull GET `/v1/analytics/by-user` for the last 7 days and return the top three users by replies received

### Campaign monitoring and pause-on-issue automation

Operations teams monitor each campaign's statistics and pause sending when reply or acceptance rates drop, indicating message fatigue or incorrect targeting. GET `/v1/campaigns/{id}/statistics` gives the per-campaign signals; the team's automation reads them on a schedule and routes alerts to Slack. Read-only monitoring goes live the same day.

Example prompt: Get statistics for campaign id camp_42 and alert if the acceptance rate is below 15 percent

### Agent-driven LinkedIn outreach via Jentic

An AI agent ingests qualified leads from a CRM workflow and pushes them into the right Botdog campaign based on persona and territory rules. Through Jentic the agent searches for 'add leads to a Botdog campaign', loads the schema, and executes the call while the bd_live_ API key stays inside your Jentic One instance.

Example prompt: Search Jentic for 'add leads to a Botdog campaign', load the schema, and execute it with campaign id camp_eu_q3 and a list of 10 LinkedIn URLs

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v1/leads/add_to_campaign` | Add leads to a campaign |
| GET | `/v1/campaigns` | List campaigns |
| GET | `/v1/campaigns/{id}/statistics` | Per-campaign statistics |
| GET | `/v1/analytics` | Aggregate workspace analytics |
| GET | `/v1/analytics/daily` | Daily analytics time series |
| GET | `/v1/analytics/by-user` | Analytics broken down by user |
| GET | `/v1/users` | List workspace users |

## Key resources

- **Campaigns** — List campaigns and pull per-campaign statistics
- **Leads** — Add leads in bulk to a running campaign
- **Users** — Retrieve workspace users and look up individual user details
- **Analytics** — Aggregate, daily, and by-user outreach analytics
- **Teams** — Read the authenticated team's profile

## Why Jentic

- **Setup:** Wiring Botdog by hand means setting the x-api-key header with your bd_live_ key and wiring the LinkedIn campaign and analytics reads yourself. Through Jentic you install once, import the Botdog API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Botdog puts the campaign id in the URL path (`/v1/campaigns/{id}/statistics`), so a rule can pin your agent to one campaign. You choose the operations it may call, so the write path that adds leads to a campaign is only included if you add it, and a reporting agent can be limited to the analytics reads.
- **Credential handling:** Your Botdog x-api-key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'add leads to a LinkedIn campaign' or 'pull Botdog analytics', and Jentic returns the matching Botdog operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **LinkedIn API** — Official LinkedIn platform API for profile and content data; Botdog automates outreach on top of LinkedIn UI flows.
- **Apollo API** — Sales engagement and prospecting platform with built-in LinkedIn workflows.
- **Outreach API** — Sales engagement platform focused on email sequences and call activity rather than LinkedIn automation.
- **Salesloft Platform API** — Multi-channel sales engagement platform with cadences and analytics.

## FAQ

### Why is there no official OpenAPI spec for Botdog API?

Botdog does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Botdog API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Botdog API use?

Botdog uses an API key in the x-api-key header, formatted as bd_live_abc123. Issue the key from your Botdog workspace and store it in your Jentic One instance so the raw key never enters the agent's context.

### Can I add leads to a LinkedIn campaign with the Botdog API?

Yes. POST `/v1/leads/add_to_campaign` with the target campaign id and a batch of LinkedIn lead profiles. The endpoint is the only write path in the spec and is the supported way to feed an outreach campaign without manually adding leads in the UI.

### How do I pull per-user analytics through Jentic?

Run pip install jentic, then search Jentic for 'Botdog analytics by user', load the GET `/v1/analytics/by-user` schema, and execute it with the date range. Jentic injects the x-api-key automatically; the agent only sees the response.

### What are the rate limits for the Botdog API?

Botdog does not document explicit per-second rate limits in the spec, but LinkedIn-side safety limits cap how aggressively a campaign can send. Schedule lead additions in steady batches rather than dumping thousands at once, and rely on the daily analytics endpoint instead of polling statistics minute-by-minute.

### Can I monitor campaign performance over time?

Yes. GET `/v1/campaigns/{id}/statistics` returns the current campaign metrics, and GET `/v1/analytics/daily` returns workspace-level counts per day. Combine them to alert when a specific campaign deviates from the workspace baseline.

### Can I limit what my agent is allowed to do with the Botdog API?

Yes. Because you run Jentic One yourself, your own rules decide which Botdog operations and credentials the agent may use, so you can grant only the analytics reads like GET `/v1/analytics/by-user` and GET `/v1/analytics/daily` and leave out the POST `/v1/leads/add_to_campaign` write path entirely. Since the campaign id lives in the URL path (`/v1/campaigns/{id}/statistics`), you can also pin the agent to a single campaign. Nothing runs unless you have added that operation to what the agent is allowed to call.
