Endpoints Generated from the OpenAPI 3.1 document. Each endpoint lists its parameters and every status code it returns, with a copy-ready curl and a live try-it console — run it with your session or a pasted key.
Surface v2.3.6 - last updated 29 Oct 2026
Session API key
Signed out — the try-it console has no session to send. Sign in Common: Identity GET /me/organizations My organizations POST /me/organizations/active Choose the organization an OAuth token acts in Common: Public GET /public/maintenance The open maintenance window, or null GET /public/plans Published plans by id Common: Me GET /me/terms The caller's legal documents on this surface POST /me/terms/{id}/accept Accept a legal document POST /me/terms/{id}/revoke Revoke an acceptance GET /me/notifications The caller's notifications POST /me/notifications/{id}/read Mark a notification read GET /me/verification The caller's identity verification and contact access Common: Assistant GET /realtime/transport How this caller listens for live updates Candidate GET /candidate/applications My applications POST /candidate/applications Apply to a job on the board GET /candidate/matches Roles that fit my resume GET /candidate/keys My API keys POST /candidate/keys Create an API key DELETE /candidate/keys/{id} Revoke an API key GET /candidate/interviews My interviews GET /candidate/profile Read my profile PATCH /candidate/profile Save a profile section POST /candidate/resume Upload a resume POST /candidate/interviews/{id}/change-request Request a reschedule or cancellation POST /candidate/applications/{id}/withdraw Withdraw an application GET /candidate/applications/{id}/messages List an application's messages POST /candidate/applications/{id}/messages Send a message on an application PATCH /candidate/applications/messages/{messageId} Edit an application message DELETE /candidate/applications/messages/{messageId} Delete an application message Interviewer GET /interviewer/interviews Interviews I conduct POST /interviewer/interviews/{id}/scorecard Submit a scorecard POST /interviewer/interviews/{id}/change-request Request a reschedule or cancellation (interviewer side) GET /interviewer/availability My availability POST /interviewer/availability Set an availability slot Recruiter: Jobs GET /recruiter/jobs List published roles GET /recruiter/jobs/{id} Get a role Recruiter: Applications GET /recruiter/applications List applications POST /recruiter/applications Apply to a job POST /recruiter/applications/decide Accept or dismiss applications POST /recruiter/applications/undo Undo an Accept or Dismiss POST /recruiter/applications/clear Clear dismissed applications POST /recruiter/applications/clear/undo Undo a clear Recruiter: Clients GET /recruiter/clients List clients POST /recruiter/clients Create a client GET /recruiter/clients/{id} Get a client PATCH /recruiter/clients/{id} Set client status POST /recruiter/clients/{id}/contacts Add a client contact POST /recruiter/clients/{id}/contracts Add a client contract Recruiter: Agencies GET /recruiter/agencies List agencies POST /recruiter/agencies Create an agency GET /recruiter/agencies/{id} Get an agency PATCH /recruiter/agencies/{id} Update an agency POST /recruiter/agencies/{id}/status Set agency status POST /recruiter/agencies/{id}/contacts Add an agency contact Recruiter: Recruiting GET /recruiter/requirements List requirements POST /recruiter/requirements Create a requirement GET /recruiter/requirements/suggest-code Suggest a requirement code GET /recruiter/requirements/by-source Find the requirement imported from a page POST /recruiter/requirements/import-log Log a requirement import (at the click) GET /recruiter/requirements/import-log/{id} Read one requirement import log row (AI read status) PATCH /recruiter/requirements/import-log/{id} Close a requirement import log row PATCH /recruiter/requirements/{id} Update a requirement POST /recruiter/requirements/{id}/apply-source Update a requirement from its source page GET /recruiter/requirements/{id}/pipeline Pipeline snapshot POST /recruiter/requirements/{id}/status Set requirement status POST /recruiter/requirements/{id}/compose-share Draft the job description as a mail POST /recruiter/requirements/{id}/share Email the job description POST /recruiter/requirements/research Research requirements (grounded) POST /recruiter/requirements/{id}/assignees Add an assignee DELETE /recruiter/requirements/{id}/assignees/{assignmentId} Remove an assignee POST /recruiter/submittals/{id}/transition Move a submittal POST /recruiter/submittals/{id}/reassign Reassign a submittal POST /recruiter/submittals/{id}/reorder Reorder a pipeline card POST /recruiter/submittals/{id}/offer Update the offer on a card POST /recruiter/requirements/{id}/attach-candidate Search-and-attach a candidate POST /recruiter/submittals/{id}/compose-submission Draft the client submission POST /recruiter/submittals/{id}/submit Send the composed submission Recruiter: Candidates GET /recruiter/candidates List candidates POST /recruiter/candidates Create a candidate GET /recruiter/candidates/{id}/similar Candidates like this one GET /recruiter/candidates/{id}/brief The candidate as a search brief GET /recruiter/candidates/{id} Get a candidate PATCH /recruiter/candidates/{id} Update a candidate GET /recruiter/candidates/search Search candidates POST /recruiter/candidates/{id}/flags Flag a candidate DELETE /recruiter/candidates/{id}/flags Clear a candidate's flag POST /recruiter/candidates/{id}/offers Add an offer for a requirement POST /recruiter/candidates/{id}/skill-score Set a manual skill score POST /recruiter/candidates/upload-batch Bulk resume upload POST /recruiter/candidates/{id}/resume Attach a resume to a candidate POST /recruiter/candidates/{id}/compose-message Draft a message to a candidate POST /recruiter/candidates/{id}/message Email a candidate Recruiter: Interviewers GET /recruiter/interviewers List interviewers POST /recruiter/interviewers Create or update an interviewer GET /recruiter/interviewers/search Search interviewers GET /recruiter/interviewers/{id} Get an interviewer POST /recruiter/interviewers/{id}/skills Update an interviewer's skills POST /recruiter/interviewers/{id}/status Set interviewer status POST /recruiter/interviewers/{id}/link Link an interviewer to a client or agency POST /recruiter/interviewers/{id}/unlink Unlink an interviewer from a client or agency Recruiter: Meetings GET /recruiter/candidates/{id}/cards A candidate's job cards GET /recruiter/meetings List meetings POST /recruiter/meetings Schedule a meeting GET /recruiter/meetings/{id} Get a meeting PATCH /recruiter/meetings/{id} Update a meeting POST /recruiter/meetings/{id}/cancel Cancel a meeting POST /recruiter/mail/preview Render a composed mail as it will arrive POST /recruiter/mail/attachments Upload an attachment for a composed mail DELETE /recruiter/mail/attachments Drop an unsent attachment POST /recruiter/meetings/{id}/resend-invite Resend a meeting invite Recruiter: Interviews GET /recruiter/interviews List interviews Recruiter: Placements GET /recruiter/placements List placements GET /recruiter/placements/{id} Get a placement PATCH /recruiter/placements/{id} Update placement money/date fields POST /recruiter/placements/{id}/state Set placement state POST /recruiter/placements/{id}/repoint-contract Re-point a placement's contract Recruiter: Invoices GET /recruiter/invoices List invoices POST /recruiter/invoices Create an invoice GET /recruiter/invoices/{id} Get an invoice PUT /recruiter/invoices/{id}/lines Replace an invoice's lines POST /recruiter/invoices/{id}/issue Issue a draft invoice POST /recruiter/invoices/{id}/void Void an invoice POST /recruiter/invoices/{id}/credit-note Issue a credit note POST /recruiter/invoices/{id}/email Email an invoice POST /recruiter/invoices/{id}/payments Record a payment PATCH /recruiter/invoices/{id}/payments/{paymentId} Edit a payment DELETE /recruiter/invoices/{id}/payments/{paymentId} Remove a payment Recruiter: Admin GET /recruiter/admin/branding The organisation's branding PUT /recruiter/admin/branding Change the organisation's branding GET /recruiter/signature Your own email signature PUT /recruiter/signature Set your own email signature GET /recruiter/admin/ai-runs AI run log POST /recruiter/admin/users Create or invite a user PATCH /recruiter/admin/users/{id}/role Grant or revoke a role PATCH /recruiter/admin/users/{id}/active Activate or deactivate a user Recruiter: Sourcing GET /recruiter/sourcing/requirements Requirements to source for GET /recruiter/sourcing/requirements/{id} One requirement's search brief POST /recruiter/extension/telemetry The browser assistant's usage diagnostics GET /recruiter/sourcing/site-profiles How each portal is read (versioned data) GET /recruiter/sourcing/runs List sourcing runs POST /recruiter/sourcing/runs Start a sourcing run PATCH /recruiter/sourcing/runs/{id} Update a run's progress or outcome GET /recruiter/sourcing/profiles The review list for a requirement POST /recruiter/sourcing/profiles Capture profiles read off a portal page PATCH /recruiter/sourcing/profiles/{id} Shortlist, dismiss, or reset a profile POST /recruiter/requirements/{id}/sourcing/runs Find talent for a requirement GET /recruiter/requirements/{id}/sourcing/runs/{runId} One web sourcing run PATCH /recruiter/requirements/{id}/sourcing/runs/{runId} Pause, resume or cancel a web sourcing run GET /recruiter/requirements/{id}/sourcing/runs/{runId}/log What a web sourcing run did, step by step GET /recruiter/requirements/{id}/sourcing/people The people web sourcing found POST /recruiter/requirements/{id}/sourcing/people/{profileId}/status Shortlist, dismiss or reset a found person POST /recruiter/sourcing/profiles/{id}/contact Record contact a recruiter revealed POST /recruiter/sourcing/profiles/{id}/portal-profile Keep the profile page's sections on a sourced profile POST /recruiter/sourcing/profiles/{id}/promote Promote to a candidate on the requirement Recruiter: Talent pool GET /recruiter/talent-pool Search the talent pool GET /recruiter/talent-pool/suggest Typeahead for the talent pool search Recruiter: Search GET /recruiter/search The search box: everything at once (streams) Recruiter: Assistant POST /recruiter/assistant/chat One chat turn (streams) POST /recruiter/assistant/chat/tool-result Answer a browser tool call POST /recruiter/assistant/chat/confirm Allow or decline a change the assistant proposed POST /recruiter/assistant/chat/page-decision Record the answer to a press the assistant asked for GET /recruiter/assistant/conversations The caller's assistant conversations GET /recruiter/assistant/conversations/{id} One conversation with its messages PATCH /recruiter/assistant/conversations/{id} Rename a conversation POST /recruiter/assistant/files Attach a file to the next message GET /recruiter/assistant/files/{id} Download a file the caller attached GET /recruiter/assistant/drafts/{id} A draft under review in the chat PATCH /recruiter/assistant/drafts/{id} Change one card of a draft POST /recruiter/assistant/drafts/{id}/save Save a draft's cards as candidates GET /recruiter/assistant/memory What the assistant remembers about the caller PUT /recruiter/assistant/memory Replace the memory