---
title: "Create user job permission"
method: POST
path: "/v3/user_job_permissions"
tags: ["User Job Permissions"]
---

# Create user job permission

`POST /v3/user_job_permissions`

## Request

- Base URL: `https://harvest.greenhouse.io`
- URL: `https://harvest.greenhouse.io/v3/user_job_permissions`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://auth.greenhouse.io/authorize`
    - Client credentials
    - Token URL: `https://auth.greenhouse.io/token` scopes: `harvest:user_job_permissions:create`
  - HTTP bearer

Grant a user a Job Admin role on a single job. The `role_id` must reference a Job Admin role; site admin and deprecated role types are rejected. Site admins already have access to every non-confidential job, so creating a user job permission for a site admin is a no-op and returns `204 No Content` instead of `201 Created`. To grant a role on jobs that don't exist yet, use `/v3/future_job_permissions` with an office and/or department scope instead.

## Request body

- object
  - `job_id` integer, required: Id of the job to grant access to. Must reference a job in the caller's organization.
  - `user_id` integer, required: Id of the user who should receive the role on this job. Must reference a user in the caller's organization. If the user is a site admin, the request returns `204 No Content` and no permission row is created — site admins already have access to every non-confidential job.
  - `role_id` integer, required: Id of the Job Admin role to grant on this job. Must reference a `user_role` with `role_type: job_admin`; site admin and deprecated role types are rejected.

## Response `201`

Successful

- object
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `job_id` integer: Id of the job this permission grants the user access to. References a `/v3/jobs` row.
  - `user_id` integer: Id of the user receiving access to the job. References a `/v3/users` row. Site admins are never represented here — they have implicit access to every non-confidential job — so a user with a site admin role will not appear in this list.
  - `role_id` integer: Id of the Job Admin role the user holds on this job. References a `/v3/user_roles` row; only roles with `role_type: job_admin` can be granted through this resource.
  - `automated` boolean, nullable: When `true`, the permission was created by an automated permission rule (e.g. a `future_job_permission` that matched the job when it was opened, or an automated permission policy) rather than assigned by hand.

## Other responses

- `204`: Successful (No Content)
- `401`: Unauthorized
- `403`: Forbidden
- `422`: Unprocessable Content

---

[API](https://skmtc.dev/greenhouse/apis/harvest-api.md) - [All operations](https://skmtc.dev/greenhouse/apis/harvest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/greenhouse/apis/harvest-api/revisions/822822e3f771?raw)
