Slash Trace docs

Endpoints

Add a board

Give it a company domain and it finds the careers page itself.

POST/v1/boards
curl -X POST "https://api.slashtrace.com/v1/boards" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"clay.com"}'

You do not need to find the careers page. Give it clay.com and discovery works out where the roles live and how to read them — including JavaScript-gated and bot-blocked pages that return an empty document to an ordinary scraper.

202 means work started. The board comes back immediately with status: "pending" and no jobs; discovery can take up to a minute. Poll List boards until it reads ready. A 201 means the board was already known to us and fresh enough to serve as-is, so there is nothing to wait for.

locked: true is a warning on a success, not an error. You are over your plan’s board limit. The board is added and listed, but it is not read and will never fill with jobs until you free a slot or upgrade. A client that ignores this field gets a board that stays permanently empty, which is why it is stated rather than left to be inferred.

409 on a board you already track, with the existing boardId in details. This is the one place the API differs from the app on purpose: in the app, re-adding is a no-op that shows you the board you already have, which is right for someone who pasted a domain twice. A script needs the opposite — if “add these 40 domains” quietly succeeds for the 12 already present, the run cannot report what it actually did.

Note that a duplicate add may still refresh a stale board before returning 409. Nothing is added and no slot is spent; the board simply gets re-read sooner than it would have.

Body

urlstringrequired
A company domain (clay.com), a board URL (boards.greenhouse.io/discord), or a careers page. We resolve it.
companyNamestring
Optional display name, used only until a scrape discovers the real one.