Skip to main content

Using the Extrovert API

What the Extrovert REST API does, how to create your API key, which plans include it, and where to find the full reference.

Written by Denis Bauer

Extrovert has a REST API, so you can manage your campaigns, prospects, topics, and voices from your own code or tools, and work through your comment and DM queue programmatically. It's the programmatic way to do what you'd otherwise do in the dashboard. For no-code automations and webhooks, see Integrations.

Available on Business and Pro plans (and during the trial).

Get your API key

  1. Go to Settings → Integrations → API keys.

  2. Click Add API key.

  3. Copy the key and store it somewhere safe, it's shown only once.

Treat the key like a password. If you lose it, create a new one and delete the old one.

Base URL and authentication

Requests without a valid key return a 401. Requests on a plan that doesn't include API access return a 403.

What you can do with it

  • Campaigns - list, create, update, start and stop, duplicate, share, and transfer Prospects and Topic campaigns

  • Prospects and prospect lists - search prospects, look one up by profile URL, add prospects to a list, and move, mark important, or remove them

  • Monitored topics - create and manage the AI topics used for post discovery, and set which topics a Topic campaign tracks

  • Voices - list, create, duplicate, update, and delete voices, and manage their comment examples, talking points, selling points, and DM templates

  • Comments - list the comments waiting for review across a whole publishing owner's feed or one campaign at a time, read one, generate or improve a draft, set its exact text, choose whether approving posts a comment or a reaction or both, then approve, cancel posting, skip, or unskip, or approve the most relevant comments of a whole feed in one request

  • DM conversations and replies - list conversations and read one, prepare a reply, improve or edit it, send it, and recover a draft after a failure

  • Workspace and team - read your plan's features and quotas, and list your team members

Comments and DMs sent through the API go out under the same daily limits, working hours, and safety rules as anything you approve in the dashboard.

The full reference, with every endpoint and examples, lives at api-docs.goextrovert.com. To find the IDs you'll pass in requests, see where to get the Campaign Id and Prospect list Id.

Reading your comment feed

Two endpoints list comment drafts. Both need an API key, a plan with API access, and a plan that allows reading comment drafts.

GET /main-feed returns the whole feed for one publishing owner, across every campaign you can reach. Pass ownerId, the account you publish as, and view, one of Need approval, Pending, Error, Posted, or Skipped. Optional: limit from 1 to 50 (default 10) and offset (default 0). It takes no campaignId, and that is the point of it, you read one owner's whole feed instead of one campaign at a time.

  • Need approval covers only campaigns that are active and not set to automatic commenting. The four history views cover the whole campaign set.

  • A post appears once per owner, even when several campaigns track the same person.

  • Listing never triggers comment generation.

  • pagination.total is the size of the whole feed for that view, not of the page you asked for.

GET /comments lists one campaign at a time. Its default limit changed from 20 to 10, and the maximum is still 50. If your code relied on the default, you now get half as many rows per call, so pass limit explicitly. This is not an API-wide default. GET /dm-conversations still defaults to 20.

Paging. Both listings read live data rather than a snapshot. After you approve, skip, or otherwise change something, restart paging from offset 0 instead of moving on to the next offset. Need approval is re-ranked on every request, and the history views are ordered by when each comment last changed state. If you are building a read-only export, de-duplicate by owner plus post id, because live pages can shift underneath you.

Generating a draft still needs a campaignId. You can read a whole owner's feed without naming a campaign, but generating a draft needs one, because the campaign supplies the voice and the context.

What a comment record holds. Each record carries the post itself alongside the draft: the post's text, URL, author, publish date and format, any media or external link it includes, and the original post when it is a repost. There is no separate endpoint that lists posts on their own. Posts reach you only as part of the comment feed.

Approving in bulk

POST /comments/bulk-approve approves the most relevant Need approval comments of one scope in a single request. Pass ownerId, an optional campaignId to stay inside one campaign, and count from 1 to 100. Leave out campaignId to approve across the owner's whole Main Feed, meaning every campaign of that owner your key may update.

The comments are picked live at request time, in the feed's own order. You name a scope and a number, never comment ids, so the result is not tied to any page you listed and may include comments you never listed. The response returns three counters that add up to the number of comments attempted: accepted, which entered the Pending lifecycle and added one each to the daily comment target, skippedStale, comments that were no longer approvable when their turn came, and failedToAccept. Fewer attempted than requested means the scope held fewer approvable comments and is not an error. Accepted comments are never rolled back by a later failure in the same request.

Do not retry an ambiguous or failed call automatically. Read the feed again first, because the earlier call may already have approved part of the scope.

API key vs. connecting an AI assistant

Both surfaces now cover the same ground, including the comment and DM queue. The difference is how you drive them.

The API key is for REST calls from your own code or tools, and it's the right choice when you want something scripted, scheduled, or repeatable. If you'd rather run Extrovert from an AI assistant like Claude or ChatGPT in plain language, that's a separate connection that signs in with your Extrovert account instead of the API key, see Connect Extrovert to an AI assistant (MCP).

Did this answer your question?