- Send Candidates API workflow
- Send Candidates API references
- Send Candidates API overview
- Authenticate
- Register employer
- リクエスト – Register employer
- レスポンス – Register employer
- Initialize application and upload attachments
- Request – Initialize application
- Response – Initialize application
- Submit application
- Request – Submit application
- Response – Submit application
- Track application status
- Request – Find application status
- Delete application
- Request – Delete application
- Response – Delete application
Send Candidates API guide
Sync candidate applications with Indeed.
このAPIとそのドキュメントを使用して連携を構築すると、APIに関する追加の利用規約およびガイドラインに同意したことになります。
Send Candidates API workflow
- 1.Send Candidates API overview: Learn how the Send Candidates API syncs candidate applications with Indeed.
- 2.Authenticate.
- 3.Register employer: Register an employer, and return information about the registration.
- 4.Initialize application and upload attachments: Stage an application version with Indeed, generate attachment upload URLs, and upload files to those URLs.
- 5.Submit application: Submit an application version to Indeed. Versions are published asynchronously in submission order.
- 6.Track application status: Track application status and processing errors.
- 7.Delete application: Permanently remove an application and all its versions from Indeed.
- 8.Troubleshoot GraphQL errors: Resolve GraphQL errors.
Send Candidates API references
registerEmployer: Register an employer, and return information about the registration.application.initialize: Stage an application version with Indeed and generate URLs to upload attachments.application.submit: Submit an application.findStatuses: Track application status and processing errors.application.delete: Delete an application.
Send Candidates API overview
The Send Candidates API provides a complete workflow for submitting and tracking candidate applications. Submitting an application requires three steps: initialize, upload attachments, and submit.
Initializing stages an application version with Indeed and generates URLs to upload attachments. Each initialization creates a version with a unique applicationVersionId. After initialization, you have five minutes to upload attachments and submit.
The API organizes data in a hierarchy. The applicationIdentifier object contains these fields, which uniquely identify an application:
| Field | Required | Description |
|---|---|---|
indeedRegistrationId | ✅ | Unique ID linking an Indeed employer to a partner employer. Provided during registration. |
atsCandidateId | ⬜ | ID for a candidate profile associated with one or more ATS applications. |
atsApplicationId | ✅ | Unique ID for the application in the ATS. |
job.sourcedPostingId | ✅ | Job posting ID that createSourcedJobPostings returns. |
This combination defines a single logical application. Each time you call initialize with the same applicationIdentifier, you create a new version of that application.
All fields contribute to this uniqueness, including those that are optional. This means that, for example, an application that includes an atsCandidateId is different from one that does not include this field, even if the other fields are all identical.
When you upload attachments:
- All attachments are scanned for viruses and harmful content. Unsafe files are removed.
- Total size of all attachments must not exceed 15 MB (15,728,640 bytes).
- Individual file size must not exceed 6 MB (6,291,456 bytes).
- Duplicate attachments are not allowed, based on MD5 hash.
- Include at most one RESUME and one
COVER_LETTERattachment. UseOTHER_RESUMEorOTHER_COVER_LETTERfor additional files. - All attachments must have a valid Base64-encoded MD5 checksum.
Answers to questions about protected demographic information (such as race, gender, age, or disability status) are not published to Indeed.
Deleting an application permanently removes it and all its versions from Indeed. You cannot reinitialize deleted applications.
Avoid concurrent mutations (initialize, submit, delete) on the same application. Multiple operations in quick succession can cause race conditions, unexpected data states, and difficulty confirming which version is published.
Authenticate
Indeed パートナーになると、Indeed が連携用のアプリを作成します。Partner Console にサインインして、アプリと OAuth 認証情報(クライアント ID、クライアントシークレット、および 3-legged OAuth の場合は認可コード)を確認します。認証情報をアクセ ストークンと交換し、API 呼び出しを認証します。
Candidate Sync API の各オペレーションには OAuth トークンが必要です。
| API とオペレーション | OAuth トークン種別 |
|---|---|
| 雇用主を表す 3-legged OAuth トークン を使用し、 |
| 2-legged OAuth トークン で認証します。アプリケーションは、ユーザー操作なしで Indeed の認可サーバーに直接認証します。 |
アクセストークンは ATS 内に安全に保存し、ユーザー間で共有しないでください。Indeed は、お客様のシステムが求人の信頼できる情報源であることを前提としています。あるユーザーが投稿した求人に別のユーザーのアクセストークンを使うと、Indeed 上でそのユーザーに別のユーザーの求人へのアクセスを付与する可能性があります。
アクセストークンを取得したら、クエリまたはミューテーションにこのトークンを含めます。最新の求人ステータスを 確認するたびにユーザーへサインインを求めることがないよう、アクセストークンは有効期限が切れる前に更新することを推奨します。
Indeed と連携して API を呼び出す と スコープをご覧ください。
Register employer
The Employer Registration API enables you to register an employer.
リクエスト – Register employer
雇用主を登録し、登録情報を返すには、registerEmployer を呼び出します。
雇用主を表す 3-legged OAuth トークン を使用し、employer.ats_candidate.sync スコープで認証します。このトークンは雇用主の Indeed アカウントと ATS アカウントを関連付けます 。Indeed の管理者またはオーナーが作成する必要があります。registerEmployer がスコープ不足のエラーを返す場合、このトークンが雇用主に関連付けられていない可能性があります。
RegisterEmployerInput では、次の入力フィールドを指定します。
| フィールド | 必須 | 説明 |
|---|---|---|
型: | ✅ | 雇用主を一意に識別するために指定する ID です。 1 つの |
型: | ✅ | 雇用主に対して指定する名称です。Indeed 上では、この名称が雇用主に表示されます。 |
レスポンス – Register employer
API は EmployerRegistration を返します。後続の Candidate Sync API 呼び出しで使用するために id を保存するか、partnerEmployerId を指定して findRegisteredEmployers でもう一度取得します。
Initialize application and upload attachments
Stage an application version with Indeed, generate attachment upload URLs, and upload files to those URLs.
Request – Initialize application
To initialize an application, call initialize. This operation stages an application version with Indeed and generates URLs to upload attachments.
2-legged OAuth トークン で認証します。アプリケーションは、ユーザー操作なしで Indeed の認可サーバーに直接認証します。
-
Register employer:
To identify the employer on Indeed, set
indeedRegistrationIdto theidthatregisterEmployerreturns inEmployerRegistration.The employer must have the
sendApplicationsfeature enabled.
Provide these input fields:
| Field | Required | Description |
|---|---|---|
| ✅ | Unique ID for the application on Indeed. | |
| ✅ | Complete applicant details. | |
Type: [AtsSyncCandidateSyncApplicationQuestionAndAnswerInput!]! | ⬜ | Screener questions and applicant answers, each as a plain text string. |
| ✅ | Current application disposition status. See Indeed Standard Disposition Statuses for status mapping examples. | |
|
Type: | ✅ | Direct link to the application in your system. |
|
Type: | ⬜ | Direct link to the candidate profile in your system. |
mutation InitializeApplication($input: InitializeAtsSyncCandidateSyncApplicationInput!) { atsSyncCandidateSync { application { initialize(input: $input) { applicationVersionId attachments { fileType fileName contentType contentLength fileChecksum { checksum } url } } } }}Response – Initialize application
| Field | Description |
|---|---|
|
Type: | New application version, used when submitting. |
| Uploads file data for each attached file. |
For each attachment returned in the initialize response, upload the file data with a PUT request to url. Include these headers matching the applicant.attachments values from the initialize mutation:
| Header | Value source | Description |
|---|---|---|
Content-Type | contentType | Original media type of the file attachment. |
Content-Length | contentLength | File size in bytes. |
Content-MD5 | fileChecksum.checksum | MD5 hash. Important Base64-encode the |
Submit application
2-legged OAuth トークン で認証します。アプリケーションは、ユーザー操作なしで Indeed の認可サーバーに直接認証します。
Submit an application version to Indeed. Versions are published asynchronously in submission order.
-
Register employer:
Provide
indeedRegistrationIdto identify the employer on Indeed. The employer must have thesendApplicationsfeature enabled.For information about managing these IDs, see Employer Registration API.
Request – Submit application
To submit an application, call the application.submit mutation.
Provide these input fields:
| Field | Required | Description |
|---|---|---|
|
Type: | ✅ | Links to the Indeed employer account. |
|
Type: | ✅ | Version ID that application.initialize returns. |
mutation SubmitApplication($input: SubmitAtsSyncCandidateSyncApplicationInput!) { atsSyncCandidateSync { application { submit(input: $input) { applicationVersionId } } }}Response – Submit application
| Field | Description |
|---|---|
|
Type: | Same as the input value. Log for audit purposes if needed. |
Call within five minutes of initialization. Upload all file attachments before submission. Applications with missing attachments are still processed, but findStatuses returns a FILE_NOT_UPLOADED error. Applications can be submitted even if a file attachment failed to process. Processing is asynchronous but maintains submission order.
Track application status
2-legged OAuth トークン で認証します。アプリケーションは、ユーザー操作なしで Indeed の認可サーバーに直接認証します。
After submission, query application version status to check processing and identify errors.
Request – Find application status
To query application version status with pagination, call findStatuses.
Use this query to track publishing progress after submission and check bulk status with version history.
| Field | Filters by |
|---|---|
|
Type: | Employers. |
| Application IDs. | |
|
Type: | Application versions. |
|
Type: | Statuses. |
query FindApplicationStatuses($input: AtsSyncCandidateSyncApplicationFindStatusesInput!$first: Int $after: String $last: Int $before: String) { atsSyncCandidateSync { application { findStatuses(input: $input first: $first after: $after last: $last before: $before) { applicationVersionStatuses { applicationVersionId applicationIdentifier { indeedRegistrationId atsCandidateId atsApplicationId job { sourcedPostingId } } status processingStatus errors } pageInfo { hasNextPage hasPreviousPage startCursor endCursor } } } }}Delete application
2-legged OAuth トークン で認証します。アプリケーションは、ユーザー操作なしで Indeed の認可サーバーに直接認証します。
Permanently remove an application and all its versions from Indeed.
-
Register employer:
Provide an
indeedRegistrationIdto identify the employer on Indeed. The employer must have thesendApplicationsfeature enabled.For information about managing these IDs, see Employer Registration API.
Request – Delete application
To delete an application, call the application.delete mutation.
This operation is permanent. All application versions are removed from Indeed and cannot be recreated. New versions cannot be created after deletion.
| Field | Required | Description |
|---|---|---|
| ✅ | Unique ID for the application. | |
|
Type: | ✅ | Timestamp when the application was deleted. |
mutation DeleteApplication($input: DeleteAtsSyncCandidateSyncApplicationInput!) { atsSyncCandidateSync { application { delete(input: $input) { applicationVersionId } } }}Response – Delete application
| Field | Description |
|---|---|
|
Type: | Unique ID for this deletion. References the final version of the deleted application. |