Skip to main content
The Public API exposes Reviewer Feedback at /api/public/v1/job-feedback and adaptive Task Checklists at /api/public/v1/job-checklists. Both families require a stored OpenTrain API token and canonical employer access to the exact job.
Reviewer Feedback reads are employer-only. Do not copy report data into a worker-visible system. OpenTrain never returns this ledger to the reported AI trainer through an agent surface.

Authorization and discovery

The write scope implies read. Probe GET /api/public/v1/capabilities before using either family; its agentSurfaces entry reports the rollout and per-operation authorization state. The feature must also be enabled separately for each job before its tab appears to employers or workers. All mutations require an Idempotency-Key header. Reuse a stable key only for the same intent and payload. The response’s replayed field reports whether the server returned the original durable outcome. The TypeScript SDK exposes the same operations in @opentrain-ai/sdk 0.13.0 or later. Reviewer Feedback methods include listJobFeedback, getJobFeedbackReport, getJobFeedbackSummary, listJobFeedbackRoster, submitJobFeedback, triageJobFeedbackReport, linkJobFeedbackSubject, reviewer-access methods, and settings methods. Task Checklist methods include list/get/create/manage/validate/resolve/publish, version and submission reads, reorder, settings, capabilities, and previewJobChecklistGrant.

Reviewer Feedback endpoints

The list endpoint accepts status, subject, severity, reporter, search, createdFrom, createdTo, and 1-based page filters. Use subject=UNLINKED for legacy rows without a canonical person. hasMore is the only continuation signal; never infer completeness from the returned row count.

Submit a report

subjectContractId is optional. When omitted, OpenTrain stores a deterministic contract reference: the newest active contract, otherwise the newest ended contract. Use the roster endpoint if the caller needs to choose a specific contract.

Triage safely

Terminal transitions to ACTIONED or DISMISSED, and reopening from a terminal state, require a nonblank note. A stale expectedUpdatedAt returns 409; get the report again and deliberately re-evaluate the transition.

Task Checklist endpoints

Validate a file-first bundle

checklist-validate.json
Inline validation can include baselineDefinitionId and expectedDraftVersion to calculate publish impact and detect a stale local base before writing. Use the exact same server validator for create, draft update, and publish readiness—do not reimplement its rules in a client.

Preview and publish exact revisions

Mint a preview grant with one closed source mode:
or:
The response returns a short-lived previewUrl whose fragment carries the capability. Open that URL in an authenticated browser. It renders the exact bound snapshot and strips the fragment after exchange. Publish only after previewing:
The response reports the immutable version and content hash, the change impact, open runs swept, and answers that workers must reconfirm. Read the canonical definition afterward rather than incrementing a version locally.

Errors and privacy

Use the machine-readable OpenAPI document for the exact schemas served by the current deployment.