---
title: "Create a job title screening"
method: POST
path: "/v1/job-title-screenings"
tags: ["Job Title Screenings"]
---

# Create a job title screening

`POST /v1/job-title-screenings`

## Request

- Base URL: `https://gateway.remote.com`
- URL: `https://gateway.remote.com/v1/job-title-screenings`
- Auth: one of:
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token`

Screens a batch of job titles for EOR hiring eligibility, before any company or
employment exists. Callable with an integration (client credentials) token or a
company-scoped token issued through the integration; screenings belong to the
integration either way. Returns immediately with a `processing` screening — poll the
show endpoint until `status` is `completed`. Verdicts are advisory and reflect the
eligibility policy at the time of screening: the policy evolves over time and the same
checks re-run during onboarding, so the onboarding outcome may differ from an earlier
screening verdict for the same title.

## Authentication

This endpoint accepts any one of the following token types:

- **Company-scoped access token** (`OAuth2AuthorizationCode`) — obtained by a company manager through the Authorization Code flow or the Refresh Token flow. See [Authentication for partners](https://developer.remote.com/docs/authentication-for-partners).
- **Company-scoped access token (assertion)** (`OAuth2CompanyManagerAssertion`) — obtained through the `urn:ietf:params:oauth:grant-type:jwt-bearer` grant for a company manager. See [OAuth Assertion](https://developer.remote.com/docs/authorization-method-oauth-assertion).
- **Client credentials access token** (`OAuth2ClientCredentials`) — obtained through the Client Credentials flow or the Refresh Token flow. See [Authentication for partners](https://developer.remote.com/docs/authentication-for-partners).

## Request body

- CreateJobTitleScreeningParams
  - `items` object[], required: The job titles to screen. `role_description`, `role_is_onsite` and `role_requires_license` are optional but must be provided together; when present they allow an ambiguous title to be resolved without a human review.
    - `job_title` string, required: The job title to screen.
    - `role_description` string: The role description.
    - `role_is_onsite` 'yes' | 'no' | 'not_applicable': Whether the role is onsite.
    - `role_requires_license` 'yes' | 'no' | 'not_applicable': Whether the role requires a license.

## Response `202`

Accepted

- JobTitleScreeningResponse
  - `data` object
    - `job_title_screening` JobTitleScreening
      - `created_at` string, required: The timestamp when the screening request was created.
      - `id` string, required: The unique identifier (UUID) of the screening request.
      - `items` JobTitleScreeningItem[], required
        - `job_title` string, required: The screened job title.
        - `role_description` string, nullable: The role description, if provided.
        - `role_is_onsite` 'yes' | 'no' | 'not_applicable', nullable: Whether the role is onsite, if provided.
        - `role_requires_license` 'yes' | 'no' | 'not_applicable', nullable: Whether the role requires a license, if provided.
        - `verdict` 'pending' | 'eligible' | 'not_eligible' | 'needs_review' | 'eligible_with_risk_acknowledgement', required: The screening verdict. `pending` while the screening is processing; `eligible` and `not_eligible` are definitive; `needs_review` means the title will require a human review during onboarding; `eligible_with_risk_acknowledgement` means the title is eligible once the employer acknowledges the risk during onboarding. Verdicts are advisory and reflect the eligibility policy at the time of screening: the policy evolves over time and the same checks re-run during onboarding, so the onboarding outcome may differ from an earlier screening verdict for the same title.
      - `status` 'processing' | 'completed' | 'failed', required: The processing status of the screening request. Poll until `completed` or `failed`. A `failed` screening gave up after retries; unscreened items stay `pending` and the batch should be resubmitted as a new screening.
      - `updated_at` string, required: The timestamp of the last update to the screening request.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `422`: Unprocessable Entity

---

[API](https://skmtc.dev/remote-com/apis/integrations.md) - [All operations](https://skmtc.dev/remote-com/apis/integrations/llms.txt) - [OpenAPI document](https://skmtc.dev/remote-com/apis/integrations/revisions/1798c3c003d5?raw)
