Ashby Offers API

Generate offer drafts, route through approvals, and track offer versions, compensation, and acceptance status.

OpenAPI Specification

ashby-api-openapi.json Raw ↑
{"openapi":"3.1.0","info":{"version":"1.0.0","title":"Ashby API","description":"The public API for accessing resources in your Ashby instance.","contact":{"name":"Ashby Support","url":"https://app.ashbyhq.com/support","email":"[email protected]"}},"servers":[{"url":"https://api.ashbyhq.com"}],"tags":[{"name":"ashby","description":"The Ashby API"}],"paths":{"/apiKey.info":{"post":{"summary":"apiKey.info","description":"Retrieve information about the API key being used to make the request.\n\n**Requires the [`apiKeysRead`](authentication#permissions-apikeyinfo) permission.**\n","operationId":"apiKeyInfo","tags":["API Key"],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Responses for the apiKey.info endpoint","content":{"application/json":{"schema":{"oneOf":[{"title":"Success response","allOf":[{"$ref":"#/paths/~1job.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0"},{"type":"object","properties":{"results":{"type":"object","properties":{"title":{"type":"string","description":"The name of the API key.","example":"Custom Job Board API key"},"createdAt":{"$ref":"#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt"},"scopes":{"type":"array","description":"List of permission scopes that this API key is authorized for.","items":{"type":"string"},"example":["jobs:read","candidates:read"]}}}},"required":["results"]}]},{"title":"Error response","$ref":"#/paths/~1report.generate/post/responses/429/content/application~1json/schema"}]}}}}},"security":[{"BasicAuth":[]}]}},"/application.changeSource":{"post":{"summary":"application.changeSource","operationId":"applicationChangeSource","description":"Change the source of an application.\n\n**Requires the [`candidatesWrite`](authentication#permissions-applicationchangesource) permission.**\n","tags":["Application"],"requestBody":{"content":{"application/json":{"schema":{"properties":{"applicationId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the application to update the source of"}]},"sourceId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The source to set on the application. Pass null to unset an application's source."}]}},"required":["applicationId","sourceId"],"example":{"applicationId":"3ae2b801-19f6-41ef-ad28-214bd731948f","sourceId":"2c6991c5-c9e2-4af8-879e-29c5a9d26509"}}}}},"responses":{"200":{"description":"Responses from the application.changeSource endpoint","content":{"application/json":{"schema":{"oneOf":[{"title":"Success response","allOf":[{"$ref":"#/paths/~1job.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0"},{"type":"object","properties":{"results":{"$ref":"#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application"}},"required":["results"]}]},{"$ref":"#/paths/~1report.generate/post/responses/429/content/application~1json/schema"}]}}}}}}},"/application.changeStage":{"post":{"summary":"application.changeStage","operationId":"applicationChangeStage","description":"Change the stage of an application\n\n**Requires the [`candidatesWrite`](authentication#permissions-applicationchangestage) permission.**\n","tags":["Application"],"requestBody":{"content":{"application/json":{"schema":{"properties":{"applicationId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the application to update the stage of"}]},"interviewStageId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The interview stage to move the application to."}]},"archiveReasonId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"Archive Reason to set when moving to an Interview Stage with type: `Archived`. \nNote: You must pass this parameter when moving to an Interview Stage with type: `Archived`\n"}]},"archiveEmail":{"type":"object","properties":{"communicationTemplateId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the communication template to use for the email.\nNote: This communication template's intendedTypes must include: `email`.\n"}]},"sendAt":{"type":"string","format":"date-time","description":"The date and time to send the email as an ISO 8601 date and time string, e.g. `2025-02-24T08:27:01Z`.\nIf omitted, the email will be scheduled for the following morning at 9:32am in your default timezone.\nIf the time is in the past, the email will be sent immediately.\nNote: If a timezone is not specified, timestamps will be interpreted in UTC, regardless of your timezone setting.\n"}},"description":"Email to send to the candidate when moving to an Interview Stage with type: `Archived`.\nNote: If application is already archived, the email will not be sent.\nNote: If email send fails, the application stage will not be updated. If this is the case, you can retry the request without this parameter.\nNote: You may only pass this parameter if the application is moving to an Interview Stage with type: `Archived`.\n","required":["communicationTemplateId"]}},"required":["applicationId","interviewStageId"],"example":{"applicationId":"3ae2b801-19f6-41ef-ad28-214bd731948f","interviewStageId":"2c6991c5-c9e2-4af8-879e-29c5a9d26509"}}}}},"responses":{"200":{"description":"Responses from the application.changeStage endpoint","content":{"application/json":{"schema":{"oneOf":[{"title":"Success response","allOf":[{"$ref":"#/paths/~1job.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0"},{"type":"object","properties":{"results":{"$ref":"#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application"}},"required":["results"]}]},{"allOf":[{"$ref":"#/paths/~1report.generate/post/responses/429/content/application~1json/schema"},{"type":"object","properties":{"errors":{"type":"array","items":{"type":"string","enum":["invalid_input","application_not_found","interview_plan_not_found","interview_stage_not_found","archive_reason_not_found","communication_template_not_found","communication_template_not_allowed"]},"description":"| Error Code | Description |\n|------------|-------------|\n| `invalid_input` | A parameter is the wrong type |\n| `invalid_input` | Archive fields are not allowed for non-archive stages |\n| `invalid_input` | Archive reason ID is required for archive stages |\n| `application_not_found` |  |\n| `interview_plan_not_found` |  |\n| `interview_stage_not_found` |  |\n| `archive_reason_not_found` |  |\n| `communication_template_not_found` |  |\n| `communication_template_not_allowed` | Template contains unresolvable substitution tokens |\n| `communication_template_not_allowed` | Template intended types does not include 'email' |\n| `communication_template_not_allowed` | [Less common] Template is archived |\n| `communication_template_not_allowed` | [Less common] Template is a one-off template |\n"}}}]}]}}}}}}},"/application.create":{"post":{"summary":"application.create","operationId":"applicationCreate","description":"Consider a candidate for a job (eg when sourcing a candidate for a job posting).\n\nIf you're submitting an application as a job board, use the [`applicationForm.submit`](ref:applicationformsubmit) endpoint instead. See [Creating a custom careers page](https://developers.ashbyhq.com/docs/creating-a-custom-careers-page) for details.\n\n**Requires the [`candidatesWrite`](authentication#permissions-applicationcreate) permission.**\n\nTo set values for custom fields on Applications, use the [`customFields.setValue`](ref:customfieldsetvalue) endpoint.\n","tags":["Application"],"requestBody":{"content":{"application/json":{"schema":{"properties":{"candidateId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the candidate to consider for a job"}]},"jobId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the job to consider the candidate for"}]},"interviewPlanId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the interview plan to place the application in. If none is provided, the default interview plan is used.\n"}]},"interviewStageId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The interview stage of the interview plan (either default or provided) to place the application in. \nIf none is provided, the application is placed in the first \"Lead\" stage. \nYou can also supply the special string \"FirstPreInterviewScreen\", which will choose the first pre-interview-screen stage on the specified job's interview plan.\n"}]},"sourceId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The source to set on the application being created."}]},"creditedToUserId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the user the application will be credited to."}]},"createdAt":{"allOf":[{"description":"An ISO date string to set the application's `createdAt` timestamp. When this value isn't provided, the `createdAt` timestamp defaults to the time the call was made.\n"},{"$ref":"#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt"}]},"applicationHistory":{"allOf":[{"type":"array","description":"An array of objects representing the application history.","items":{"type":"object","properties":{"stageId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The ID of the interview stage for this history event. This stage must belong to the interview plan associated with the application."}]},"stageNumber":{"allOf":[{"type":"integer"},{"description":"The sort order of this event. 0 is the first, the highest number will be the current stage."}]},"enteredStageAt":{"allOf":[{"$ref":"#/paths/~1candidate.addEmailMessage/post/requestBody/content/application~1json/schema/properties/sentAt/allOf/0"},{"description":"An ISO date string representing the time the application entered this stage."}]},"archiveReasonId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The ID of the archive reason. If the interview stage is an `Archived` stage type, this field is required."}]}},"required":["stageId","stageNumber","enteredStageAt"]}},{"description":"An array of objects representing the application history.\n"}]}},"required":["candidateId","jobId"],"example":{"candidateId":"3ae2b801-19f6-41ef-ad28-214bd731948f","jobId":"2c6991c5-c9e2-4af8-879e-29c5a9d26509"}}}}},"responses":{"200":{"description":"Responses from the application.create endpoint","content":{"application/json":{"schema":{"oneOf":[{"title":"Success response","allOf":[{"$ref":"#/paths/~1job.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0"},{"type":"object","properties":{"results":{"$ref":"#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application"}},"required":["results"]}]},{"$ref":"#/paths/~1report.generate/post/responses/429/content/application~1json/schema"}]}}}}}}},"/application.info":{"post":{"summary":"application.info","operationId":"applicationInfo","description":"Fetch application details by application id or by submitted form instance id (which is return by the `applicationForm.submit` endpoint). If both applicationId and submittedFormInstanceId are provided, we will lookup by applicationId.\n\n**Requires the [`candidatesRead`](authentication#permissions-applicationinfo) permission.**\n","tags":["Application"],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"applicationId":{"allOf":[{"description":"The id of the application to fetch."},{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"}]},"expand":{"type":"array","description":"Choose to expand the result and include additional data for related objects. \n","items":{"type":"string","enum":["openings","applicationFormSubmissions","referrals"]}}},"required":["applicationId"]},{"type":"object","properties":{"submittedFormInstanceId":{"allOf":[{"description":"The id of the application's submitted form instance to fetch."},{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"}]},"expand":{"type":"array","description":"Choose to expand the result and include additional data for related objects. \n","items":{"type":"string","enum":["openings","applicationFormSubmissions"]}}},"required":["submittedFormInstanceId"]}]}}}},"responses":{"200":{"description":"Responses from the application.info endpoint","content":{"application/json":{"schema":{"oneOf":[{"title":"Success response","allOf":[{"$ref":"#/paths/~1job.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0"},{"type":"object","properties":{"results":{"allOf":[{"$ref":"#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application"},{"type":"object","properties":{"openings":{"description":"The openings array will only be included if the `openings` expand parameter is included when the request is made.","type":"array","items":{"$ref":"#/webhooks/openingCreate/post/requestBody/content/application~1json/schema/properties/data/properties/opening"}}}},{"type":"object","properties":{"applicationHistory":{"type":"array","items":{"$ref":"#/paths/~1application.listHistory/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/items"}},"applicationFormSubmissions":{"type":"array","description":"Application form submissions. These match the response from the `applicationForm.submit` endpoint. Use of the expand parameter is required to fetch.","items":{"$ref":"#/paths/~1applicationForm.submit/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/properties/submittedFormInstance"}},"referrals":{"type":"array","items":{"type":"object","properties":{"user":{"$ref":"#/paths/~1user.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results"},"referredAt":{"$ref":"#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt"}}}},"resumeFileHandle":{"description":"The id, name and handle for the application's resume","$ref":"#/paths/~1candidate.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/properties/fileHandles/items"}}}]}},"required":["results"]}]},{"$ref":"#/paths/~1report.generate/post/responses/429/content/application~1json/schema"}]}}}}}}},"/application.list":{"post":{"summary":"application.list","operationId":"applicationList","description":"Gets all applications in the organization.\n\nSee the [Pagination and Incremental Synchronization](/docs/pagination-and-incremental-sync) guide for detailed usage examples.\n\n**Requires the [`candidatesRead`](authentication#permissions-applicationlist) permission.**\n","tags":["Application"],"requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/paths/~1opening.list/post/requestBody/content/application~1json/schema"},{"properties":{"status":{"type":"string","enum":["Hired","Archived","Active","Lead"]},"jobId":{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},"expand":{"type":"array","description":"Choose to expand the result and include additional data for related objects. \n","items":{"type":"string","enum":["openings"]}}}}]}}}},"responses":{"200":{"description":"Responses from the application.list endpoint","content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"$ref":"#/paths/~1job.list/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0"},{"properties":{"results":{"type":"array","items":{"allOf":[{"$ref":"#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application"},{"$ref":"#/paths/~1application.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/allOf/1"}]}}}}],"required":["results"]},{"$ref":"#/paths/~1report.generate/post/responses/429/content/application~1json/schema"}]}}}}}}},"/application.transfer":{"post":{"summary":"application.transfer","operationId":"applicationTransfer","description":"Transfer an application to a different job.\n\n**Requires the [`candidatesWrite`](authentication#permissions-applicationtransfer) permission.**\n","tags":["Application"],"requestBody":{"content":{"application/json":{"schema":{"properties":{"applicationId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the application to transfer."}]},"jobId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the job to transfer the application to."}]},"interviewPlanId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the interview plan to transfer the application to. \n"}]},"interviewStageId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The interview stage of the interview plan to transfer the application to. \n"}]},"startAutomaticActivities":{"allOf":[{"type":"boolean"},{"description":"Whether to start any automatic activities set on the target interview stage. \nIf not provided, the default value is `true`.\n"},{"default":true}]}},"required":["applicationId","jobId","interviewPlanId","interviewStageId"],"example":{"applicationId":"3ae2b801-19f6-41ef-ad28-214bd731948f","jobId":"2c6991c5-c9e2-4af8-879e-29c5a9d26509","interviewPlanId":"af94aedd-b743-462c-ab22-9e7e356c11b4","interviewStageId":"5eb15197-8664-48fd-99cf-fbdc9d25149d"}}}}},"responses":{"200":{"description":"Responses from the application.transfer endpoint","content":{"application/json":{"schema":{"oneOf":[{"title":"Success response","allOf":[{"$ref":"#/paths/~1job.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0"},{"type":"object","properties":{"results":{"$ref":"#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application"}},"required":["results"]}]},{"$ref":"#/paths/~1report.generate/post/responses/429/content/application~1json/schema"}]}}}}}}},"/application.update":{"post":{"summary":"application.update","operationId":"applicationUpdate","description":"Update an application\n\n**Requires the [`candidatesWrite`](authentication#permissions-applicationupdate) permission.**\n\nTo set values for custom fields on Applications, use the [`customFields.setValue`](ref:customfieldsetvalue) endpoint.\n","tags":["Application"],"requestBody":{"content":{"application/json":{"schema":{"properties":{"applicationId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the application to update"}]},"sourceId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The source to set on the application being created."}]},"creditedToUserId":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the user the application will be credited to."}]},"createdAt":{"allOf":[{"description":"An ISO date string to set the application's `createdAt` timestamp. When this value isn't provided, the `createdAt` timestamp defaults to the time the call was made.\n"},{"$ref":"#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt"}]},"sendNotifications":{"type":"boolean","default":true,"description":"Whether or not users who are subscribed to the application should be notified that application was updated. Default is true."}},"required":["applicationId"],"example":{"applicationId":"3ae2b801-19f6-41ef-ad28-214bd731948f","createdAt":"2021-01-01T00:00:00Z","creditedToUserId":"3ae2b801-19f6-41ef-ad28-214bd731948f","sourceId":"3ae2b801-19f6-41ef-ad28-214bd731948f"}}}}},"responses":{"200":{"description":"Responses from the application.update endpoint","content":{"application/json":{"schema":{"oneOf":[{"title":"Success response","allOf":[{"$ref":"#/paths/~1job.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0"},{"type":"object","properties":{"results":{"$ref":"#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application"}},"required":["results"]}]},{"$ref":"#/paths/~1report.generate/post/responses/429/content/application~1json/schema"}]}}}}}}},"/application.updateHistory":{"post":{"summary":"application.updateHistory","operationId":"applicationUpdateHistory","description":"Update the history of an application. This endpoint is used to update the history of an application, such as setting the entered stage time or deleting a history event.\n\n**Requires the [`candidatesWrite`](authentication#permissions-applicationupdatehistory) permission and the `Allow updating application history?` setting found in your admin API key permissions configuration.**\n","tags":["Application"],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"applicationId":{"allOf":[{"description":"The id of the application to fetch."},{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"}]},"applicationHistory":{"type":"array","description":"The updated array of application history events. This array should contain all history events for the application, not just the events being updated.","items":{"type":"object","properties":{"stageId":{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},"stageNumber":{"type":"integer","title":"Stage Number","description":"The order of the history event in the application's history. 0 is the first event."},"enteredStageAt":{"description":"The time the application entered the stage.","$ref":"#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt"},"applicationHistoryId":{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId","title":"Application History ID","description":"The id of the application history event to update if you are updating an existing event."},"archiveReasonId":{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId","title":"Archive Reason ID","description":"The id of the archive reason to associate with the history event if the stage type is `archived`."}},"required":["stageId","stageNumber","enteredStageAt"]}}},"required":["applicationId","applicationHistory"]}]}}}},"responses":{"200":{"description":"Responses from the application.updateHistory endpoint","content":{"application/json":{"schema":{"oneOf":[{"title":"Success response","allOf":[{"$ref":"#/paths/~1job.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0"},{"type":"object","properties":{"results":{"allOf":[{"$ref":"#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application"},{"$ref":"#/paths/~1application.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/allOf/1"},{"type":"object","properties":{"applicationHistory":{"type":"array","items":{"$ref":"#/paths/~1application.listHistory/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/items"}},"applicationFormSubmissions":{"type":"array","description":"Application form submissions. These match the response from the `applicationForm.submit` endpoint. Use of the expand parameter is required to fetch.","items":{"$ref":"#/paths/~1applicationForm.submit/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/properties/submittedFormInstance"}},"referrals":{"type":"array","items":{"type":"object","properties":{"user":{"$ref":"#/paths/~1user.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results"},"referredAt":{"$ref":"#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt"}}}}}}]}},"required":["results"]}]},{"$ref":"#/paths/~1report.generate/post/responses/429/content/application~1json/schema"}]}}}}}}},"/application.listHistory":{"post":{"summary":"application.listHistory","operationId":"applicationListHistory","description":"Fetch a paginated list of application history items for an application.\n\nThis endpoint supports pagination only (not incremental sync). See the [Pagination and Incremental Synchronization](/docs/pagination-and-incremental-sync) guide for usage examples.\n\n**Requires the [`candidatesRead`](authentication#permissions-applicationListHistory) permission.**\n","tags":["Application"],"requestBody":{"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"applicationId":{"allOf":[{"description":"The id of the application to fetch."},{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"}]}}},{"$ref":"#/paths/~1brand.list/post/requestBody/content/application~1json/schema","required":["applicationId"]}]}}}},"responses":{"200":{"description":"Responses for the application.listHistory endpoint","content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"$ref":"#/paths/~1brand.list/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0"},{"properties":{"results":{"type":"array","items":{"type":"object","properties":{"id":{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},"stageId":{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},"title":{"type":"string","title":"Title","example":"Offer"},"enteredStageAt":{"$ref":"#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt"},"leftStageAt":{"$ref":"#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt"},"stageNumber":{"type":"integer","title":"Stage Number","description":"The order of the history event in the application's history. 0 is the first event."},"allowedActions":{"type":"array","items":{"type":"string","enum":["none","delete","set_entered_at"]},"title":"Allowed Actions","description":"Actions that can be performed on the application via `application.updateHistory`.","example":["delete","set_entered_at"]},"actorId":{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId","title":"Actor ID","description":"The ID of the user that performed the stage change."}},"required":["id","stageId","title","enteredStageAt","allowedActions","stageNumber"]}}}}],"required":["results"]},{"$ref":"#/paths/~1report.generate/post/responses/429/content/application~1json/schema"}]}}}}}}},"/application.listCriteriaEvaluations":{"post":{"summary":"application.listCriteriaEvaluations","operationId":"applicationListCriteriaEvaluations","description":"Fetch a paginated list of AI criteria evaluations for an application.\n\nThis endpoint returns the AI-generated criteria evaluations that assess how well a candidate meets specific job requirements. Each evaluation contains the outcome, reasoning, and other assessment details.\n\nThis endpoint supports pagination only (not incremental sync). See the [Pagination and Incremental Synchronization](/docs/pagination-and-incremental-sync) guide for usage examples.\n\n**Requires the [`candidatesRead`](authentication#permissions-applicationListCriteriaEvaluations) permission.**\n\n**Note:** This endpoint requires the AI Application Review feature to be enabled for your organization.\n","tags":["Application"],"requestBody":{"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"applicationId":{"allOf":[{"description":"The id of the application to fetch criteria evaluations for."},{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"}]}}},{"$ref":"#/paths/~1brand.list/post/requestBody/content/application~1json/schema"}],"required":["applicationId"]}}}},"responses":{"200":{"description":"Responses for the application.listCriteriaEvaluations endpoint","content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"$ref":"#/paths/~1brand.list/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0"},{"properties":{"results":{"type":"array","items":{"type":"object","title":"Criteria Evaluation","description":"An AI-generated evaluation of how well a candidate meets a specific job criterion.","properties":{"id":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the criteria evaluation."}]},"criterion":{"allOf":[{"type":"object","title":"Criterion Version","description":"The criterion that was evaluated, including its configuration and prompt details.","properties":{"id":{"allOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"description":"The id of the criterion version."}]},"title":{"type":"string","description":"The title of the criterion.","example":"Location"},"type":{"type":"string","description":"The type of criterion evaluation.","enum":["ResumePrompt","DidAnswerApplicationFormQuestion","SimilarityToAiGeneratedAnswer"],"example":"ResumePrompt"},"prompt":{"type":"string","description":"The prompt text used for AI evaluation.","example":"Evaluate if the candidate's location aligns with the job requirements."},"applicationFormDefinitionId":{"anyOf":[{"$ref":"#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId"},{"type":"null"}],"description":"The id of the application form definition (if applicable)."},"applicationFormFieldPath":{"type":["string","null"],"description":"The path to the specific application form field (if applicable)."}},"required":["id","title","type","prompt"]},{"description":"The criterion that was evaluated."}]},"status":{"type":"string","description":"The status of the evaluation.","enum":["Pending","Completed","Failed","Skipped"],"example":"Completed"},"outcome":{"type":["string","null"],"description":"The evaluation outcome (e.g., \"Meets\", \"Does Not Meet\").","example":"Meets"},"reasoning":{"type":["string","null"],"description":"The AI's reasoning for the evaluation outcome.","example":"The candidate's location in San Francisco aligns well with the job's requirement for Bay Area presence."},"skipReason":{"type":["string","null"],"description":"The reason why the evaluation was skipped (if status is \"Skipped\").","example":"NoResume"},"outcomeNumber":{"type":["number","null"],"description":"A numerical score representing the evaluation outcome (0.0 to 1.0).","minimum":0,"maximum":1,"example":0.85},"evaluatedAt":{"type":["string","null"],"format":"date-time","description":"The date and time when the evaluation was completed.","example":"2024-01-15T10:30:00Z"}},"required":["id","criterion","status"]}}}}],"required":["results"]},{"$ref":"#/paths/~1report.generate/post/responses/429/content/application~1json/schema"}]}}}}}}},"/applicationFeedback.lis

# --- truncated at 32 KB (409 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ashby/refs/heads/main/openapi/ashby-api-openapi.json