# ModernLoop Platform API > REST API and MCP server for programmatic access to ModernLoop scheduling data and actions. ## Docs - [Get an application](https://docs.modernloop.io/api-reference/application/get-an-application.md): Returns the application summary with its candidate, job, current stage, status, and hiring-team assignments. The application must belong to the authenticated organization or the request returns not found. - [List applications](https://docs.modernloop.io/api-reference/application/list-applications.md): Returns paginated application summaries with the candidate, job, current stage, and hiring-team assignments. Combine IDs, candidate IDs, job IDs, statuses, ATS IDs, and record timestamps to narrow results; every supplied filter is applied together. Use the cursor to continue the same filtered result… - [Update an application](https://docs.modernloop.io/api-reference/application/update-an-application.md): Updates the supplied internal note, candidate-portal state, and hiring-team assignments. Omitted fields are preserved; nullable team IDs clear their assignment, while internal_note and is_portal_enabled are write-only because the summary does not expose them. The response is re-read after the update… - [Get a candidate](https://docs.modernloop.io/api-reference/candidate/get-a-candidate.md): Returns the candidate's identity, contact details, hiring-team assignments, ATS metadata, and anonymization state. For anonymized candidates, PII fields may be redacted; an unknown or out-of-organization ID returns not found. - [List candidates](https://docs.modernloop.io/api-reference/candidate/list-candidates.md): Returns paginated candidate summaries with contact details, hiring-team assignments, ATS metadata, and anonymization state. Combine IDs, email, name, ATS, and record-timestamp filters to narrow results; every supplied filter is applied together. Anonymized candidates return redacted PII, and the ret… - [Update a candidate](https://docs.modernloop.io/api-reference/candidate/update-a-candidate.md): Updates the supplied hiring-team assignments and candidate profile fields. Omitted fields are preserved; nullable team IDs clear their assignment, clear_preferred_email clears only when true, and an empty conflict list removes all listed conflicts. Some writable fields are intentionally write-only b… - [Get an interview event](https://docs.modernloop.io/api-reference/interview-event/get-an-interview-event.md): Returns one scheduled interview event with its people, application, job, timing, and status details. The event must belong to the authenticated organization or the request returns not found. - [Search interview events](https://docs.modernloop.io/api-reference/interview-event/search-interview-events.md): Flat scheduled interview-event rows for BI exports and person/candidate/date filtering. - [Add a member to an interview module](https://docs.modernloop.io/api-reference/interview-module/add-a-member-to-an-interview-module.md): Adds one employee as a member of an interview module with optional initial training status and per-member requirements. When supplied, the member weekly-limit override uses null to mean unlimited. The response returns the new membership and calculated training progress. - [Create an interview module](https://docs.modernloop.io/api-reference/interview-module/create-an-interview-module.md): Creates an interview module with its shadow and reverse-shadow requirements, graduation rules, and weekly interview limit. The create body supplies the complete training configuration; null weekly_interview_limit means unlimited. The response includes the new module and its initial member counts. - [Get an interview module](https://docs.modernloop.io/api-reference/interview-module/get-an-interview-module.md): Returns an interview module's training requirements, graduation configuration, weekly limit, and member counts. The module must belong to the authenticated organization or the request returns not found. - [Get an interview module member](https://docs.modernloop.io/api-reference/interview-module/get-an-interview-module-member.md): Returns one employee's membership in the module, including current training status, pause state, limits, and calculated training progress. The module and member must be in the authenticated organization or the request returns not found. - [Get interview module member stats](https://docs.modernloop.io/api-reference/interview-module/get-interview-module-member-stats.md): Returns detailed training counts, remaining requirements, current session state, and pause state for one interview module member. - [Get interview module statistics](https://docs.modernloop.io/api-reference/interview-module/get-interview-module-statistics.md): Returns member training counts for one interview module. Modules outside the authenticated organization are reported as not found. - [List interview module members](https://docs.modernloop.io/api-reference/interview-module/list-interview-module-members.md): Returns paginated module memberships with each employee's current training status, pause state, limits, and training progress. Filter by member IDs or training statuses; every supplied filter is applied together. Use the cursor to continue the same filtered result set. - [List interview modules](https://docs.modernloop.io/api-reference/interview-module/list-interview-modules.md): Returns paginated interview modules with training requirements, weekly limits, and member counts. Combine IDs, a case-insensitive name substring, and record timestamps to narrow results; every supplied filter is applied together. Use the cursor to continue the same filtered result set. - [Permanently delete an interview module](https://docs.modernloop.io/api-reference/interview-module/permanently-delete-an-interview-module.md): Permanently deletes the interview module and all member training history in it. This action cannot be undone. Unknown and cross-organization module IDs return not found. - [Remove a member from an interview module](https://docs.modernloop.io/api-reference/interview-module/remove-a-member-from-an-interview-module.md): Removes a member from an interview module and deletes that member's training progress in the module. This does not delete the employee or the module itself. An unknown module or member returns not found. - [Update an interview module](https://docs.modernloop.io/api-reference/interview-module/update-an-interview-module.md): Updates the supplied interview-module configuration, including training requirements, graduation rules, weekly limit, and fast-track setting. Omitted fields are preserved, while supplied approver lists replace the complete list for that graduation step. Null weekly_interview_limit means unlimited. - [Update an interview module member](https://docs.modernloop.io/api-reference/interview-module/update-an-interview-module-member.md): Partially updates a member's training requirements, status, pause state, timestamps, and weekly limit. Changes to required counts can advance training through the module's configured approval rules; setting training_status to TRAINED marks the member trained directly. - [Get an interviewer](https://docs.modernloop.io/api-reference/interviewer/get-an-interviewer.md): Returns an interviewer profile with load limits, pause state, work hours, attributes, and interview-module memberships. The interviewer must belong to the authenticated organization or the request returns not found. - [List interviewers](https://docs.modernloop.io/api-reference/interviewer/list-interviewers.md): Lists interviewer load, pause state, work hours, and module training. Omit statuses for the default active-only view; pass statuses=ACTIVE,ARCHIVED to include both active and archived interviewers. - [Update an interviewer](https://docs.modernloop.io/api-reference/interviewer/update-an-interviewer.md): Updates the admin-managed interviewer profile, scheduling controls, load-limit overrides, and organization attributes. Example: `{"title":"Principal Engineer","timezone":"America/Chicago","daily_load_limit":{"limit":4,"type":"NUMBER_OF_INTERVIEWS"}}`. Set nullable overrides to `null` to clear them.… - [Get a job stage](https://docs.modernloop.io/api-reference/job-stage/get-a-job-stage.md): Returns a job stage with its job reference and resolved settings. An unknown or out-of-organization stage ID returns not found. - [List job stages](https://docs.modernloop.io/api-reference/job-stage/list-job-stages.md): Returns job-stage summaries and resolved settings for the requested stage IDs or a single job. At least one of ids or job_id is required; when both are supplied, only stages that satisfy both are returned. This operation returns a single unpaginated result page. - [Update a job stage](https://docs.modernloop.io/api-reference/job-stage/update-a-job-stage.md): Updates a job stage's settings. Targets the stage settings only; the base stage (name, index, ATS identity, schedulable) is ATS-sync-owned and read-only. Every supplied settings group merges per field, including `self_schedule_defaults` and `availability_request_defaults`; omitted fields are preserv… - [Get a job](https://docs.modernloop.io/api-reference/job/get-a-job.md): Returns one job with its resolved scheduling settings and job-stage information. The job must belong to the authenticated organization or the request returns not found. - [List jobs](https://docs.modernloop.io/api-reference/job/list-jobs.md): Returns paginated job summaries with status and ATS information. Combine IDs, status, name, ATS ID, and record timestamps to narrow results; every supplied filter is applied together. Use the cursor to continue the same filtered result set. - [Update a job](https://docs.modernloop.io/api-reference/job/update-a-job.md): Updates the supplied fallback name or internal note for a job. Omitted fields are preserved, and both fields are write-only because the current job summary RPC does not return them. An empty PATCH body is rejected. - [Get organization](https://docs.modernloop.io/api-reference/organization/get-organization.md): Returns the organization associated with the authenticated token, including its scheduling defaults. No organization ID is accepted because the caller's organization is determined from authentication. - [Update organization](https://docs.modernloop.io/api-reference/organization/update-organization.md): Partially updates the authenticated organization's scheduling defaults. Work hours and daily or weekly load-limit options replace atomically; scalar groups merge per field. Omitted settings are preserved and the response returns the updated organization representation. - [Get a schedule](https://docs.modernloop.io/api-reference/schedule/get-a-schedule.md): Returns a schedule group and the interview events it contains, including their timing and participants. The schedule must belong to the authenticated organization or the request returns not found. - [List schedules](https://docs.modernloop.io/api-reference/schedule/list-schedules.md): Returns paginated schedule groups, each with its nested interview events. Record timestamp filters narrow the schedule records and are combined with IDs when supplied. Use the cursor to continue the same filtered result set. - [Cancel a scheduling task](https://docs.modernloop.io/api-reference/scheduling-task/cancel-a-scheduling-task.md): Cancels a scheduling task, optionally recording a cancellation reason. Cancellation is rejected when the underlying scheduler reports a conflict. The returned task shows the resulting scheduling state. - [Create a scheduling task](https://docs.modernloop.io/api-reference/scheduling-task/create-a-scheduling-task.md): Creates a scheduling task for the supplied application and job stage. The task starts with the requested urgency and optional initial note; the server assigns the scheduling-task type. An idempotency key is required so retries return the original result instead of creating another task. - [Get a scheduling task](https://docs.modernloop.io/api-reference/scheduling-task/get-a-scheduling-task.md): Returns one scheduling task with its application, stage, assignee, queue, tags, flags, delegation, notes, and timing metadata. The task must belong to the authenticated organization or the request returns not found. - [List scheduling tasks](https://docs.modernloop.io/api-reference/scheduling-task/list-scheduling-tasks.md): Searches scheduling tasks with status, flag, urgent, queue, tag, delegation, assignee, job, and application filters. - [Update a scheduling task](https://docs.modernloop.io/api-reference/scheduling-task/update-a-scheduling-task.md): Updates the supplied assignee, urgency, queue, tags, debrief requirement, or meeting location for a scheduling task. Omitted fields are preserved; null clears the assignee, queue, or meeting location, while supplying tags replaces the task's tag list. An empty PATCH body is rejected. - [Get a task queue](https://docs.modernloop.io/api-reference/task-queue/get-a-task-queue.md): Returns the name and timestamps for one active scheduling-task queue. Unknown, deleted, or out-of-organization queues return not found. - [List task queues](https://docs.modernloop.io/api-reference/task-queue/list-task-queues.md): Returns paginated active scheduling-task queues. IDs and a name filter can be combined to narrow results, and deleted queues are excluded. Use the cursor to continue the same filtered result set. - [Get a template](https://docs.modernloop.io/api-reference/template/get-a-template.md): Returns one organization email or calendar template, including its type, content, and send metadata. The template must belong to the authenticated organization or the request returns not found. - [List templates](https://docs.modernloop.io/api-reference/template/list-templates.md): Returns paginated organization email and calendar templates with their content and send metadata. Combine IDs, template types, a case-insensitive name substring, and record timestamps to narrow results; every supplied filter is applied together. Use the cursor to continue the same filtered result se… - [ModernLoop Platform API](https://docs.modernloop.io/index.md): Placeholder public API documentation. - [MCP](https://docs.modernloop.io/mcp.md): Placeholder MCP documentation. ## OpenAPI Specs - [openapi](https://docs.modernloop.io/openapi.json)