JobsPipe
API Reference

Errors

HTTP status codes the JobsPipe API returns, and how to handle them.

Errors return a JSON body with an error message and the matching HTTP status:

{ "error": "Rate limit exceeded" }

Status codes

Statuserror messageCauseWhat to do
401Unauthorized / Invalid API keyMissing, malformed, or revoked key.Check the Authorization header and key validity.
402Monthly request quota exceededYou've used your plan's monthly request allowance.Wait for the monthly reset or upgrade.
429Rate limit exceededToo many requests in one second for your plan.Back off and retry (see below).
504(upstream message)The upstream search timed out.Retry; if persistent, narrow your filters.
500Internal Server ErrorUnexpected server error.Retry; contact support if it persists.

See rate limits & plans for the exact per-second and monthly thresholds.

Handling 429 with backoff

When you hit the per-second rate limit, pause briefly and retry. Exponential backoff works well:

import time, requests

def search_with_retry(body, headers, tries=4):
    for i in range(tries):
        resp = requests.post(
            "https://api.jobspipe.dev/v1/jobs/search", headers=headers, json=body
        )
        if resp.status_code != 429:
            resp.raise_for_status()
            return resp.json()
        time.sleep(0.25 * (2 ** i))
    raise RuntimeError("rate limited")
async function searchWithRetry(body, headers, tries = 4) {
  for (let i = 0; i < tries; i++) {
    const resp = await fetch("https://api.jobspipe.dev/v1/jobs/search", {
      method: "POST",
      headers,
      body: JSON.stringify(body),
    });
    if (resp.status !== 429) return resp.json();
    await new Promise((r) => setTimeout(r, 250 * 2 ** i));
  }
  throw new Error("rate limited");
}

A 402 means your monthly quota is exhausted - backing off won't help. Either wait for the reset at the start of the month or upgrade your plan.

On this page