CallbackAPI v1 · Developer documentation

Callback API

Add AI CV writing, interview practice and LinkedIn rewriting to your own product, or search candidates who chose to be visible to recruiters. Simple JSON over HTTPS, in English, French and Spanish.

Base URL
https://YOUR-DOMAIN/api/v1
All requests and responses are JSON (except the PDF endpoint, which returns a PDF file). Times are UTC, ISO 8601.

Authentication

Every request needs an API key. Send it in the Authorization header (or X-Api-Key):

Authorization: Bearer cb_live_3f9a1c2b7d10_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Keys are created by the Callback team and shown once. Each key has scopes that decide which endpoints it can call: cv, interview, profile, talent.

Keep keys on your server. Never put them in a mobile app, browser JavaScript or a public repository. If a key leaks, ask us to revoke it and we'll issue a new one.

Limits & usage

LimitValue
Requests per minute, per key60
Requests per month, per keySet on your plan (default 1,000)
Request body size1 MB

Every response includes X-RateLimit-Monthly-Limit and X-RateLimit-Monthly-Remaining headers.

Errors

Errors use standard HTTP status codes and a JSON body:

{ "error": { "code": "invalid_request", "message": "\"notes\" (object) is required." } }
StatusCodeMeaning
400invalid_requestA required field is missing or malformed.
401invalid_api_keyMissing, malformed or revoked key.
403scope_not_allowedYour key can't use this endpoint.
413payload_too_largeBody over 1 MB.
429rate_limited / monthly_quota_exceededSlow down, or your monthly quota is used.
502 / 503upstream_error, invalid_json, sampling_disabledThe AI didn't answer correctly. Retry after a few seconds.

Generate a CV

POST/cv/generate

Scope cv. Turns rough notes into a structured, ATS-friendly CV.

FieldTypeDescription
notesobject, requiredname, target_role, location, experience_notes, education_notes, skills_and_languages, additional_details (array)
job_descriptionstringOptional. Tailors the CV to this job.
languagestringen (default), fr or es
tonestringe.g. "Confident and professional"
curl -X POST BASE/cv/generate \
  -H "Authorization: Bearer $CALLBACK_KEY" -H "Content-Type: application/json" \
  -d '{"language":"en","notes":{"name":"Maria Lopez","target_role":"Customer Success Manager",
       "experience_notes":"5 yrs support at a SaaS company, 60 tickets/day, 94% CSAT, built FAQ",
       "skills_and_languages":"Zendesk, HubSpot, English, Spanish"}}'

Response

{ "cv": { "headline": "Customer Success Manager", "summary": "...", "skills": ["Zendesk", "..."],
          "experience": [{ "title": "...", "company": "...", "location": "...", "dates": "2021 – Present", "bullets": ["..."] }],
          "education": [{ "degree": "...", "school": "...", "dates": "..." }], "extras": ["..."], "tips": ["..."] } }

CV to PDF

POST/cv/pdf

Scope cv. Returns application/pdf: a real text PDF (ATS-readable), without Callback branding.

FieldTypeDescription
cvobject, requiredThe object returned by /cv/generate (or your own, same shape).
namestringCandidate's full name.
contactsstring[]Email, phone, city, LinkedIn… (max 8)
templatestringclassic, modern or sidebar
accentstringHex colour, e.g. #3D5AFE
photostringOptional JPEG/PNG data URL (square works best). photo_shape: circle, rounded, square.
languagestringSection headings language.
curl -X POST BASE/cv/pdf -H "Authorization: Bearer $CALLBACK_KEY" -H "Content-Type: application/json" \
  -d @cv.json --output Maria-Lopez-CV.pdf

Interview question

POST/interview/question

Scope interview. Opening question for a mock interview.

{ "role": "Data Analyst", "company": "Acme", "type": "Behavioral (STAR)", "level": "Mid", "job_description": "...", "language": "fr" }
→ { "question": "...", "focus": "..." }

Interview feedback

POST/interview/feedback

Scope interview. Scores an answer and returns the next question.

{ "role": "Data Analyst", "question": "Tell me about yourself.", "answer": "...", "previous": [{ "question": "...", "answer": "..." }], "last": false, "language": "en" }
→ { "score": 7, "verdict": "...", "strengths": ["..."], "improve": ["..."], "stronger_answer": "...", "next_question": "...", "focus": "..." }

Profile rewrite

POST/profile/rewrite

Scope profile. LinkedIn headline options, About section, experience, skills, social bios and banner text.

{ "notes": { "name": "...", "target_role": "...", "experience_notes": "...", "skills_and_languages": "..." }, "language": "es" }

Talent search

GET/talent?q=zendesk&country=CA&page=1&limit=20

Scope talent. Only candidates who opted in to the recruiter talent pool are returned. Candidates can leave at any time; don't store their data longer than your hiring process needs.

{ "total": 12, "page": 1, "results": [{ "id": "…", "name": "…", "country": "CA", "email": "…", "headline": "…", "skills": ["…"], "summary": "…", "updated_at": "…" }] }

Usage

GET/usage
{ "key": "cb_live_3f9a…", "month": "202610", "monthly_limit": 1000, "used": 214, "by_endpoint": { "cv_generate": 120, "cv_pdf": 94 }, "scopes": ["cv"] }

Security & privacy

  • HTTPS only. Keys are stored as SHA-256 hashes; we can't read them back.
  • AI processing uses Anthropic's Claude models under commercial terms: your data isn't used to train them.
  • You are responsible for having a lawful basis to send candidate data, and for honouring deletion requests.
  • Talent results respect each candidate's consent. Using them for anything but recruiting is prohibited.

Get access

Tell us about your platform, the endpoints you need and your expected monthly volume. We'll send your key and pricing.

info@callback.my