Install
npm install @one-career/sdkimport { OneCareer, OneCareerError } from "@one-career/sdk";
const oc = new OneCareer({
apiKey: process.env.ONE_CAREER_API_KEY, // omit for public endpoints only
maxRetries: 2, // 429 always; 5xx/network for GET & DELETE
timeoutMs: 30_000,
});Pagination
// one page
const page = await oc.postings.list({ status: "open", limit: 50 });
page.data; page.has_more; page.next_cursor;
// everything (fetches pages of 100 lazily)
for await (const app of oc.applications.all({ posting_id })) { … }
// any list endpoint
for await (const iv of oc.paginate((cursor) => oc.interviews.list({ cursor }))) { … }Errors
try {
await oc.applications.move(id, "offer");
} catch (e) {
if (e instanceof OneCareerError) {
e.code; // "insufficient_scope" | "not_found" | "rate_limited" | …
e.status; // HTTP status (0 for network errors)
e.requestId; // quote this to support
e.retryAfter; // seconds, for 429
}
}Webhook verification
import { verifyWebhook, signTestPayload } from "@one-career/sdk/webhooks";
const event = await verifyWebhook({ payload: rawBody, header: req.headers["oc-signature"], secret: process.env.OC_WEBHOOK_SECRET });
// in your tests
const header = await signTestPayload("whsec_test", JSON.stringify({ id: "1", type: "ping", created_at: new Date().toISOString(), data: {} }));Method reference
| Method | Endpoint | Scope |
|---|---|---|
oc.me() | GET /me | public |
oc.org.get() | GET /org | org:read |
oc.postings.list() | GET /postings | postings:read |
oc.postings.create() | POST /postings | postings:write |
oc.postings.get() | GET /postings/{id} | postings:read |
oc.postings.update() | PATCH /postings/{id} | postings:write |
oc.postings.submit() | POST /postings/{id}/submit | postings:write |
oc.postings.pause() | POST /postings/{id}/pause | postings:write |
oc.postings.resume() | POST /postings/{id}/resume | postings:write |
oc.postings.close() | POST /postings/{id}/close | postings:write |
oc.applications.list() | GET /applications | applications:read |
oc.applications.get() | GET /applications/{id} | applications:read |
oc.applications.move() | POST /applications/{id}/move | applications:write |
oc.offers.list() | GET /offers | offers:read |
oc.offers.approvals() | GET /offers/approvals | offers:read |
oc.offers.get() | GET /offers/{id} | offers:read |
oc.vault.list() | GET /vault | vault:read |
oc.vault.download() | GET /vault/{id}/download | vault:read |
oc.assessments.list() | GET /assessments | assessments:read |
oc.assessments.results() | GET /assessments/{id}/results | assessments:read |
oc.interviews.list() | GET /interviews | interviews:read |
oc.interviews.createMeeting() | POST /interviews/{id}/meeting | interviews:write |
oc.webhooks.list() | GET /webhooks | webhooks:manage |
oc.webhooks.create() | POST /webhooks | webhooks:manage |
oc.webhooks.update() | PATCH /webhooks/{id} | webhooks:manage |
oc.webhooks.deliveries() | GET /webhooks/{id}/deliveries | webhooks:manage |
oc.webhooks.redeliver() | POST /webhook-deliveries/{id}/redeliver | webhooks:manage |
oc.webhooks.delete() | DELETE /webhooks/{id} | webhooks:manage |
oc.webhooks.test() | POST /webhooks/{id}/test | webhooks:manage |
oc.public.company() | GET /companies/{slug} | public |
oc.public.companyJobs() | GET /companies/{slug}/jobs | public |
oc.request() | GET /companies/{slug}/embed | public |
oc.public.job() | GET /jobs/{id} | public |
oc.public.verifyCard() | GET /verify/card/{number} | public |
oc.public.verifyCertificate() | GET /verify/certificate/{serial} | public |
oc.public.profileCard() | GET /profile-cards/{token} | public |
oc.public.verifySignature() | GET /verify/signature/{ref} | public |