offer.create now returns specific error codes instead of a generic internal_server_error when the request fails due to a problem with the referenced opening:
opening_in_use — the opening is already in use by another offer.
opening_state_invalid — the opening has already been closed or filled by a different application.
notetakerTranscript.info now returns specific error codes instead of a generic notetaker_transcript_not_found when the request fails due to missing prerequisites:
notetaker_transcript_api_not_enabled — the endpoint has not been enabled for your organization (early access).
notetaker_transcript_not_enabled — your organization does not have AI Notetaker enabled.
notetaker_transcript_expired — the transcript has expired on the free tier.
Added notetakerTranscriptId field to the InterviewEvent object returned by interviewEvent.list and interviewSchedule.list. This field contains the ID of the AI Notetaker transcript recording for the event, or null if no transcript exists.
Added a new notetakerTranscript.info endpoint (Beta) to fetch transcript metadata and a pre-signed download URL for the raw transcript JSON. The URL is valid for 5 minutes. The response includes participant information (interviewers and candidate) resolved from the interview schedule. Contact your Ashby account team to enable this feature.
user.list now correctly accepts null for the cursor and syncToken request fields again. Sending {"cursor": null} to fetch the first page was returning invalid_input after the recent Zod validation migration; this has been fixed. Omitting the fields or passing a valid string value continues to work as before.
Added candidate.setFraudStatus endpoint to set a candidate's fraud status to Fraudulent, NotFraudulent, or Unsure. Requires the candidatesWrite permission and the Fraud Detection feature to be enabled.
Added fraudStatus field to the candidate.info response. Returns the candidate's fraud review status (Fraudulent, NotFraudulent, Unsure, Unreviewed, PassedFraudCheck, or null).
customField.create now supports creating custom fields with the UUID field type.
customField.setValue and customField.setValues now accept UUID string values for UUID-type custom fields. The value must be a valid UUID string (e.g., 550e8400-e29b-41d4-a716-446655440000).
Fixed a validation bug where non-string values passed to UUID fields were incorrectly accepted instead of being rejected.
The nested field object inside formDefinition (e.g. id, type, path, humanReadablePath, title, isNullable) is now documented as required, matching the Public API response shape. selectableValues remains optional.
Added surveyFormDefinitionId field to the survey submission object returned by surveySubmission.list, surveySubmission.create, and the surveySubmit webhook payload. This field allows integrations to reliably identify which survey form definition triggered a submission without inspecting individual field IDs.