Docs · API · Distribution

Distribution.

POST /v1/jobs/{id}/publish starts a free distributerun that pushes the job to every channel available to your organization. We show per-channel status honestly — a board is "live" when the job is actually reachable there, not when we've merely sent it.

Channel matrix#

FieldTypeDescription
career_pageliveYour hosted page + embed, instantly on publish.
google_jobsliveJobPosting JSON-LD on the SSR page + Indexing API ping. Free organic placement, usually within hours.
feed_adzuna / feed_jooble / feed_talent / feed_joraliveFree XML feed network — the aggregators crawl our feeds continuously.
tanqeebliveMENA's largest aggregator crawls hosted career pages directly.
naukrigulfliveFree posting, automated.
linkedin_basicpendingFree LinkedIn Basic Jobs via an approved aggregator feed today; our own approved XML feed is in LinkedIn's review queue. Jobs typically appear within 24–48h once the feed syncs.
indeedin buildIndeed's 2026 Single-Source policy ended free organic feeds for non-partners. We are in the official ATS-partner build (Job Sync + Indeed Apply). Until it ships, Indeed placement is not promised — sponsored posting with your own Indeed budget remains possible.
ziprecruiterplannedPartner program in progress.
bayt / wuzzufplannedPartnership-gated MENA boards (no public APIs exist); business-development integrations underway.

The distribute run#

GET/v1/runs/{id}

The publish response includes the distribute run_id; its result lists each channel outcome. Distribution re-runs automatically when a job is re-published, and jobs past closes_at are withdrawn from feeds and return 410 on the hosted page (Google requires this).

Distribute run · result
{
  "id": "77a3f1c2-4b58-4e06-9d21-c85b90e4a7d3",
  "object": "run",
  "type": "distribute",
  "status": "succeeded",
  "result": {
    "channels": [
      { "channel": "career_page",  "status": "live" },
      { "channel": "google_jobs",  "status": "live" },
      { "channel": "feed_adzuna",  "status": "live" },
      { "channel": "feed_jooble",  "status": "live" },
      { "channel": "feed_talent",  "status": "live" },
      { "channel": "linkedin_basic", "status": "pending" },
      { "channel": "indeed",       "status": "unsupported" }
    ]
  },
  "credits_charged": 0
}
FieldTypeDescription
livestatusReachable on the channel now. external_url is set when the board returns one.
pendingstatusSubmitted; the channel syncs on its own schedule (feeds are typically crawled within 24–48h).
errorstatusThe channel rejected the job — the error field says why (usually missing salary or location requirements).
unsupportedstatusNot available to your organization yet (e.g. Indeed pre-partnership).