Developers
A REST API with four conventions and no surprises
Base URL https://getpullsy.com/api/v1. Authenticate with a scoped bearer key you create in the dashboard. Everything else on this page applies to every endpoint.
Learn these once
They hold for every resource, which is what makes the generated reference readable.
- One envelope
- Every success is { data } — an object for a single resource, an array plus { pagination } for a list. Every failure is { error } with a stable machine-readable code, a sentence you can show a user, and details when there are any.
- Page and limit, not cursors
- page is 1-based, limit defaults to 50 and caps at 200, and has_more tells you whether to ask again. Lists are never unbounded, so a missing filter degrades into slow rather than into an outage.
- Scoped keys
- A key carries some of data:read, sync:write and connections:write, and belongs to one workspace. Keys are shown once, stored as SHA-256 hashes, revocable, and can be given an expiry. A database id is never a credential.
- Limits you can see
- Rate limits are per key, per minute, and come from your plan. Every response carries X-RateLimit-Limit, -Remaining and -Reset; exceeding them returns 429 RATE_LIMITED with Retry-After, so backing off correctly needs no guesswork.
curl "https://getpullsy.com/api/v1/instagram/accounts" \
-H "Authorization: Bearer pk_live_…"What you can call
The published schema carries only what an API key is entitled to. Sign-in, members, billing and the dashboard aggregates are served but deliberately unpublished — none of them is a developer's to call.
Connections
data:read · connections:write- GET
/connections - POST
/connections/{provider} - DELETE
/connections/{id} - POST
/connections/{id}/sync
- GET
/instagram/accounts - GET
/instagram/accounts/{id}/metrics - GET
/instagram/media - GET
/instagram/media/{id}/metrics
Meta Ads
data:read- GET
/meta-ads/campaigns - GET
/meta-ads/insights - GET
/meta-ads/actions - GET
/meta-ads/summary
Operations
data:read- GET
/sync/jobs - GET
/billing/entitlements - GET
/health/live
Full parameters, schemas and a “try it” console live in the API reference. Connector specifics are on the Instagram and Meta Ads pages.
Three steps from signup to first response
01
Connect an account
From Connections in the dashboard. The account owner authorizes through Meta; you never handle their credentials.
02
Create a scoped key
API keys, then pick the scopes this integration actually needs. The key is shown once.
03
Call the API
Send it as a bearer token. The first sync usually has data to read within a few minutes.
The reference is public. The key takes a minute.
Read the whole surface before you sign up, then create a scoped key and call it.

