Skip to main content

Documentation Index

Fetch the complete documentation index at: https://www.outx.ai/docs/llms.txt

Use this file to discover all available pages before exploring further.

OutX does not rate-limit the API

OutX does not enforce a request rate limit on the API. There is no per-minute, per-hour, or per-day cap on how often you can call any OutX endpoint, on any paid plan. The real constraint is LinkedIn. Every action OutX performs (fetching a profile, posting a like, sending a message, etc.) runs through a real LinkedIn browser session. LinkedIn enforces its own per-action daily limits on every account, and those limits apply whether the call originates in the OutX dashboard, in our LinkedIn Data API, or anywhere else. OutX does not throttle, queue, or pace requests for you.
You are responsible for pacing. OutX hands the request straight to LinkedIn. If you burst, the underlying LinkedIn account is what gets flagged, not your API key. This applies equally to UI usage and to direct LinkedIn Data API calls.

API calls do not consume OutX credits

The “OutX Credits” on your plan apply only to Sales Navigator export and the email finder (1 credit per exported lead, 1 credit per email found). API calls of every kind, watchlist creation, post retrieval, likes, comments, profile fetches, are unlimited and do not consume credits. This applies only to calls that result in a real LinkedIn action: the LinkedIn Data API (/linkedin-agent/*), /api-like, and /api-comment. Read endpoints like GET /api-posts or GET /api-keyword-watchlist are not constrained, you can call those as often as you want. For LinkedIn-action calls, as a safe rule of thumb:
  • No more than ~50 LinkedIn-action calls per hour combined
  • Spread them throughout the day (a daily cron at the same minute is safer than 30 calls in 60 seconds)
  • Mix action types when you can (alternating profile fetches with likes looks more natural to LinkedIn than 50 sequential likes)
If you are hitting any per-action daily limit (visible in Dashboard → Settings → Daily Usage Limits), you have two options: spread the work across more team members (each LinkedIn account carries its own daily quota), or wait for the 00:00 UTC reset.

Per-action daily limits

There are two separate things to keep straight: The HTTP API has no rate limit. You can call POST /api-keyword-watchlist to create a watchlist, then GET /api-keyword-watchlist to read it 100 times in an hour, then PUT to update it, then DELETE it. None of those calls are throttled by OutX, and none of them count against any daily quota. The watchlist and engagement endpoints (/api-keyword-watchlist, /api-people-watchlist, /api-company-watchlist, /api-posts, /api-interactions) are pure CRUD on your data. LinkedIn-side actions are capped per LinkedIn account per day. Anything that hits LinkedIn (a keyword scan running because you created a keyword watchlist, a profile fetch via the LinkedIn Data API, a like, a comment, etc.) draws from a daily allowance LinkedIn enforces on each account. These are the limits below.
ActionWhat runs against this limitDaily limit
Keyword scansOne scan per keyword tracked in any keyword watchlist (background work for POST /api-keyword-watchlist)30
People tracking scansOne scan per profile in your people watchlists (background work for POST /api-people-watchlist)50
Company tracking scansOne scan per company in your company watchlists (background work for POST /api-company-watchlist)50
Profile fetchesEach call to POST /linkedin-agent/fetch-profile40
Company fetchesEach call to POST /linkedin-agent/fetch-company40
Profile searchesEach call to POST /linkedin-agent/search-profiles100
Direct messagesEach call to POST /linkedin-agent/send-message100
Likes (any source)Each call to POST /api-like or POST /linkedin-agent/like-post50
Comments (any source)Each call to POST /api-comment or POST /linkedin-agent/comment-post25
So creating a keyword watchlist with 200 keywords does not block you from calling other API endpoints. It just means LinkedIn will scan ~30 of those keywords per day, per active LinkedIn account in your team, until all keywords are covered. The watchlist endpoint itself remains freely callable. The full list of every LinkedIn-side action and its current usage is visible at Dashboard → Settings → Daily Usage Limits in your OutX account. Always check there if you need an exact number for an action not listed above, or if a job is running slower than you expected.

How daily limits work

  • Limits reset at 00:00 UTC.
  • A watchlist with 200 keywords does not start tracking all 200 immediately. Tasks queue and process up to the daily cap, drawn from each active LinkedIn account in your team.
  • Add more team members with active Chrome extensions to parallelize. Each member’s session has its own daily quota.
Live per-action usage is visible in Dashboard → Settings → Daily Usage Limits. The dashboard always reflects the current source of truth, the table above is the documented mapping for the most common API actions.

When LinkedIn blocks a call

If you exceed a LinkedIn cap, the affected task fails or sits pending until the next day’s reset. OutX surfaces this in the task status returned from get-task-status. If a LinkedIn account starts receiving warnings (unusual activity flags, captcha walls, restrictions), reduce volume immediately and review LinkedIn Safety.

Plan-based quotas

These are non-rate limits that apply per-plan. They limit how much you can have (watchlists, team members, etc.), not how often you can call the API.
ResourceFreeGrowthExpertUltimate
Watchlists2520100
Profiles tracked per watchlist-200200200
Potential leads per watchlist/week-400250100
Team members51025Unlimited
Auto-engagement rules per watchlist12510
When you hit a plan quota, you receive a 402 response with a message describing the limit. See Error Codes for details. OutX Credits sit on a separate plan dimension (Sales Navigator export and email finder), see Pricing & Subscription for the credit allocations per plan.

Retry strategy

Treat the absence of a 429 as the norm. If you do see one (rare on the API surface, more common when LinkedIn itself has throttled the underlying account), use exponential backoff:
async function fetchWithRetry(url, options, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const waitTime = Math.pow(2, attempt) * 1000; // 1s, 2s, 4s
      await new Promise(resolve => setTimeout(resolve, waitTime));
      continue;
    }

    return response;
  }

  throw new Error('Rate limit exceeded after retries');
}

Best practices

  • Batch watchlist creation in a single session rather than spreading across hours.
  • Set fetchFreqInHours based on real need. Lower frequency = fewer tasks consumed.
  • Cache API responses locally instead of re-fetching the same posts.
  • Monitor live usage at Dashboard → Settings → Daily Usage Limits.
  • Use polling, not constant streaming. Call /api-posts with sort_by=recent_first at reasonable intervals (e.g. once per hour, not once per minute).
Need higher per-account throughput than LinkedIn allows? Add more team members. Each one carries their own daily allotment. Contact support@outx.ai for enterprise volume.

Learn More