Authenticate with a Bearer token, send JSON, get JSON back. No SDK required, but our types are TypeScript-first.
Sign up for free at app.ceevee.cc — no credit card. Free tier includes 1,000 API calls / month and full webhook access.
Sign upInside the dashboard, head to Developers → APIs. You'll see a list of every key set you've issued for the workspace.
Open dashboardClick "New key set", give it a name, and toggle Sandbox if you want test data. We show the secret key once — store it in a secrets manager immediately.
Pass the secret as a Bearer token. The /me endpoint returns your organization, scopes and rate-limit budget — perfect for connection checks.
View full referenceReplace ceevee_sk_live_... with the secret you just minted. The same call works against the sandbox — just swap the host.
// npm install ceevee
import { CeeveeClient } from "ceevee";
const ceevee = new CeeveeClient({
apiKey: process.env.CEEVEE_API_KEY!,
baseUrl: "https://api.sandbox.ceevee.cc",
});
const me = await ceevee.request("/v1/me");
console.log(me.scopes);Every state change in Ceevee — a CV scan completes, a candidate moves stage, a portal application lands — can ping your endpoint in under a second. Each delivery is signed and timestamped against replay attacks.
// Recommended: official SDK
import { verifyWebhookSignature } from "ceevee";
export async function POST(req) {
const rawBody = await req.text(); // raw bytes — do not JSON.parse first
try {
verifyWebhookSignature({
rawBody,
signatureHeader: req.headers.get("ceevee-signature") ?? "",
secret: process.env.CEEVEE_WEBHOOK_SECRET,
});
} catch (err) {
return new Response("invalid signature", { status: 400 });
}
const event = JSON.parse(rawBody);
// ... handle event.type / event.data
return new Response("ok");
}