Embed namespace
Reference for the embeddable jobs response.
A
JUse board.embed.jobs to load compact published-job cards for the public “Powered by Cavuno” embed. The candidate paywall does not gate this response, but board password protection and plan API access still apply.
Shared behavior
The method returns the Board API wire body unchanged and throws BoardApiError for a non-2xx response. Its trailing FetchOptions passes abort signals, headers, and framework cache directives through to fetch.
board.embed.jobs
1234board.embed.jobs(query?: EmbedJobsQuery,options?: FetchOptions,): Promise<ListEnvelope<PublicJobCard>>
| Field | Type | Behavior |
|---|---|---|
q | string | Free-text query up to 200 characters. |
cursor | string | Opaque cursor from nextCursor. |
limit | number | Defaults to 8; values above 50 are clamped to 50. |
offset | number | Jobs to skip. It takes precedence over cursor; offset + limit cannot exceed 10,000. |
companyId | string[] | Up to 10 company IDs, matched with OR. |
remoteOption | RemoteOption[] | on_site, hybrid, or remote. |
employmentType | EmploymentType[] | Employment types, matched with OR. |
seniority | Seniority[] | Seniority levels, matched with OR. |
location | string | Place slug for a radius search. An unresolvable place is ignored. |
radius | number | 10–250 km; defaults to 50 and is ignored without location. |
The response contains object: 'list', url, hasMore, nextCursor, data, and the catalog count, limit, and offset fields when supplied by the API. Each PublicJobCard contains the fields needed for a listing card: identity, title/slug, publish date, employment and remote details, salary, company, categories, skills, and canonical link.
12345678910111213141516const controller = new AbortController();const page = await board.embed.jobs({q: 'robotics',limit: 8,offset: 0,remoteOption: ['remote', 'hybrid'],location: 'london',radius: 25,},{ signal: controller.signal },);for (const job of page.data) {console.log(job.title, job.links.public);}
Gating and edge behavior
The embed deliberately does not return gatedCount or relatedSearches: candidate-paywall gating and the main job list’s related-search rail do not apply. Do not infer candidate entitlement from the embed response.
Handle:
pagination_invalid_cursororpagination_offset_too_largewith status 400.board_password_requiredwith status 401; obtain a board access grant throughboard.password.verifybefore retrying.plan_upgrade_requiredwith status 402 when the board plan does not include API access.- A missing/private board with status 404.
search_unavailablewith status 503.
Abort superseded interactive searches with FetchOptions.signal. Use nextCursor only when hasMore is true; an empty data array is a successful result.
Related methods
- Use
board.jobs.listfor the board’s normal candidate-facing catalog, including paywall counts and related searches. - Use
board.jobs.retrievefor the canonical job detail after a user follows a card link. - Use
board.password.verifywhen a password-protected board returnsboard_password_required.