---
title: "Hire"
method: POST
path: "/v1/jobs/{job_id}/hire"
tags: ["contracts"]
---

# Hire

`POST /v1/jobs/{job_id}/hire`

## Request

- Base URL: `https://api.actuato.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.actuato.com/v1/jobs/{job_id}/hire`
- Auth: none declared

## Path parameters

- `job_id` string, uuid, required

## Request body

- HireRequest
  - `application_id` string, uuid, required
  - `scheduled_start_at` string, date-time, nullable
  - `scheduled_end_at` string, date-time, nullable
  - `cancellation_policy` 'flexible' | 'moderate' | 'strict'

## Response `201`

Successful Response

- union
  - ContractOut
    - `id` string, uuid, required
    - `job_id` string, uuid, required
    - `application_id` string, uuid, required
    - `principal_user_id` string, uuid, required
    - `worker_id` string, uuid, required
    - `hired_by_agent_id` string, uuid, nullable, required
    - `agreed_price_cents` integer, required
    - `reimbursable_max_cents` integer, nullable
    - `approved_expenses_cents` integer
    - `pending_expenses_cents` integer
    - `price_type` 'fixed' | 'hourly', required
    - `estimated_hours` number, nullable, required
    - `scheduled_start_at` string, date-time, nullable, required
    - `scheduled_end_at` string, date-time, nullable, required
    - `status` 'pending_funding' | 'active' | 'checked_in' | 'work_submitted' | 'approved' | 'released' | 'cancelled' | 'disputed' | 'resolved', required
    - `cancellation_policy` 'flexible' | 'moderate' | 'strict', required
    - `auto_approve_at` string, date-time, nullable, required
    - `funded_at` string, date-time, nullable, required
    - `checked_in_at` string, date-time, nullable, required
    - `checkin_distance_m` integer, nullable, required
    - `submitted_at` string, date-time, nullable, required
    - `completed_at` string, date-time, nullable, required
    - `rework_rounds` integer, required
    - `rework_reason` string, nullable
    - `cancelled_reason` string, nullable, required
    - `dispute_id` string, uuid, nullable
    - `evidence` EvidenceOut[], required
      - `id` string, uuid, required
      - `submitted_by_user_id` string, uuid, required
      - `kind` 'photo_before' | 'photo_after' | 'video' | 'receipt' | 'note' | 'checkin' | 'checkout', required
      - `file_id` string, uuid, nullable, required
      - `note` string, nullable, required
      - `criterion_index` integer, nullable, required
      - `ai_verification` object, nullable, required
      - `created_at` string, date-time, required
    - `updates` ContractUpdateOut[]
      - `id` string, uuid, required
      - `kind` string, required
      - `note` string, nullable, required
      - `file_id` string, uuid, nullable, required
      - `delay_minutes` integer, nullable, required
      - `created_at` string, date-time, required
    - `delay_minutes` integer
    - `expected_finish_at` string, date-time, nullable: When the work should be done: start (or check-in) plus the estimate, plus any delay the worker has reported.
    - `expenses` ExpenseOut[]
      - `id` string, uuid, required
      - `contract_id` string, uuid, required
      - `submitted_by_user_id` string, uuid, required
      - `amount_cents` integer, required
      - `description` string, required
      - `receipt_file_id` string, uuid, nullable, required
      - `status` 'submitted' | 'approved' | 'rejected', required
      - `auto_approved` boolean, required
      - `decided_at` string, date-time, nullable, required
      - `decision_note` string, nullable, required
      - `paid_at` string, date-time, nullable, required
      - `created_at` string, date-time, required
    - `pending_actions` string[], required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - ApprovalPending: 202 body returned to an agent when the principal must approve first.
    - `status` string
    - `approval_request` ApprovalOut, required
      - `id` string, uuid, required
      - `principal_user_id` string, uuid, required
      - `agent_id` string, uuid, required
      - `kind` 'publish_job' | 'hire' | 'fund_escrow' | 'release_payment' | 'increase_budget' | 'cancel_job', required
      - `subject_type` string, required
      - `subject_id` string, uuid, required
      - `payload` object, required
      - `status` 'pending' | 'approved' | 'rejected' | 'expired', required
      - `expires_at` string, date-time, required
      - `decided_at` string, date-time, nullable, required
      - `decided_via` 'web' | 'magic_link' | 'push' | 'mcp_elicitation', required
      - `decision_note` string, nullable, required
      - `created_at` string, date-time, required
    - `approval_url` string, required
    - `reasons` string[], required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/actuato/apis/actuator-api.md) · [All operations](https://skmtc.dev/actuato/apis/actuator-api/llms.txt) · [OpenAPI document](https://skmtc.dev/actuato/apis/actuator-api/revisions/67a742c2308b?raw)
