エラーリファレンス
Indeed APIのエラーコード、メッセージ、HTTPステータスコードを参照できます。各エントリには、エラーコードまたはメッセージ、説明、およびリクエストを変更せずに再試行できるかどうかが記載されています。
ステップごとのトラブルシューティングについては、トラブルシューティングをご覧ください。
GraphQLエラーコード
BAD_USER_INPUT
Exception while fetching data入力が無効であるか、処理できません。エラーメッセージを確認して、クエリを修正してリトライしてください。
BAD_USER_INPUTタイプの検証エラーは、クライアントが無効なデータを送信した場合に発生します。以下は検証エラーの例です:
{ "errors": [{ "message": "Exception while fetching data (/patchEmployer) : EmployerIdentifiersInput contains invalid type or id", "path": [ "patchEmployer" ], "extensions": { "code": "BAD_USER_INPUT", "classification": { "type": "ExtendedValidationError", "validatedPath": [ "patchEmployer", "input", "employerAttributes", "countrySpecificAttributes", 0, "websiteUrl" ], "constraint": "@DossierUrlConstraint" }, "serviceName": "company-data-api" } }], "data": { "patchEmployer": null }}FORBIDDEN
Client is not authorized認証情報に十分な権限がありません。HTTP 403 Forbiddenに相当します。
OAuthクライアントがIndeed APIゲートウェイに登録されていない場合、FORBIDDENコードとともにClient is not authorizedメッセージが表示されることがあります。
{ "data": null, "errors": [{ "extensions": { "code": "FORBIDDEN" }, "message": "Client is not authorized." }]}OAuthクライアントをIndeed APIゲートウェイに登録するには、サポートにお問い合わせください。
GRAPHQL_PARSE_FAILED
Syntax Error: Invalid number, expected digit but got: "a".GraphQLオペレーション文字列に構文エラーが含まれています。通常、descriptionフィールドでHTMLタグがエスケープされていない場合に発生します。
以下のペイロードは、descriptionフィールドのHTMLをエスケープしていません:
mutation { createSourcedJobPostings( input: { jobPostings: [{ body: { title: "Server" description: "<h4 style="text - align: left;">Responsibilities include:</h4> <ul> <li style="text-align: left;"> Customer interaction </li> <li style="text-align: left;"> Taking orders and closing checks </li> </ul>" location: { country: "US", cityRegionPostal: "Clio, MI 48420" } } }] } ) { results { jobPosting { sourcedPostingId } } }}以下のエラーが発生します:
{ "errors": [{ "message": "Syntax Error: Invalid number, expected digit but got: \"a\".", "locations": [{ "line": 7, "column": 33 }], "extensions": { "code": "GRAPHQL_PARSE_FAILED" } }]}このエラーを修正するには、descriptionフィールドの引用符を エスケープしてください:
引用符をエスケープしてください。<h4>、<ul>、<li>などのHTMLタグはそのまま使用できます。
mutation { createSourcedJobPostings( input: { jobPostings: [{ body: { title: "Server" description: "<h4 style=\"text - align: left;\">Responsibilities include:</h4> <ul> <li style=\"text-align: left;\"> Customer interaction </li> <li style=\"text-align: left;\"> Taking orders and closing checks </li> </ul>" location: { country: "US", cityRegionPostal: "Clio, MI 48420" } } }] } ) { results { jobPosting { sourcedPostingId } } }}UNAUTHENTICATED
リクエストに認証情報がありません。HTTP 401 Unauthorizedに相当します。詳しくはIndeedとの連携とAPI呼び出しをご覧ください。クエリを修正してリトライしてください。
GraphQLエラーメッセージ
Data Integrity or Validation Error
APIに入力として渡されたフィールドが正常に処理できない場合に発生する可能性があります。入力値が有効であることを確認してください。問題が続く場合は、Indeedにお問い合わせください。
Internal server error
Indeedは100%の稼働時間を目指していますが、エラーが発生し、サービスの呼び出しが失敗する可能性があります。
以下のサービスまたはコンポーネントが障害を起こす可能性があります:
- Indeedインフラストラクチャ内のバックエンドサービス。
- クライアントとサーバー間のネットワーク。
- その他の中間コンポーネント。
一般的に、これらのエラーに対して基本的なリトライロジックを実装してください。エラーが断続的な場合、リトライで解決する可能性があります。 問題が続く場合は、サーバーに実際の問題がある可能性があります。そのような場合は、Indeedサポートにお問い合わせください。
Indeed PLUS APIを呼び出すと、5,000ミリ秒後にタイムアウトとなります。
JobIdentifierInput must specify one of indeedJobKey, employerJobId, or atsApplicationIdentifier
応募者ステータスを処理するために、次の識別子のうち少なくとも1つを指定してください:
indeedJobKeyemployerJobIdatsApplicationIdentifier
JobSeekerIdentifierInput must specify either indeedJobSeekerKey or emailAddress
応募者ステータスを処理するために、次の識別子のうち少なくとも1つを指定してください:
indeedJobSeekerKeyemailAddress
PartnerDispositionIdentifierInput must specify one of indeedApplyID, ittk, universalApplyId, or alternateIdentifier
応募者ステータスを処理するために、次の識別子のうち少なくとも1つを指定してください:
indeedApplyIDittkuniversalApplyIdalternateIdentifier
Unable to parse statusChangeDateTime
サーバーはリクエストを受信しましたが、指定されたstatusChangeDateTimeを解析できませんでした。正しいstatusChangeDateTimeを送信していることを確認してください。
このエラーは、リクエストのstatusChangeDateTime値がRFC 3339標準に準拠していないか、正しい形式であるが将来の日付を指定している場合に発生する可能性があります。
validation-errors-in-batch
複数の求人を含むバッチリクエストを送信した場合、一部の求人が成功し、他の求人が失敗しても、Job Sync APIがリク エスト全体を拒否することがあります。これはGraphQLの基本的な動作によるものです。
バッチ呼び出しでは、APIは求人投稿を作成した順序でsourcedPostingIdsの値をリストします。
エラーのclassificationに応じて、Job Sync APIは検証エラーを異なる方法で処理します:
| エラー分類 | Job Sync APIの動作 |
|---|---|
ExtendedValidationError | バッチリクエスト内の1つ以上の求人が失敗しても、バッチリクエスト内の求人の処理を続行します。 |
ExtendedValidationError以外 | バッチリクエスト内の1つ以上の求人が失敗した場合、バッチリクエスト全体を拒否します。 |
バッチ検証エラーの例:
{ "errors": [{ "extensions": { "code": "BAD_USER_INPUT", "classification": "ValidationError" }, "locations": [{ "line": 1, "column": 46 }], "message": "Validation error (WrongType@[jobsIngest/createSourcedJobPostings]) : argument 'input.jobPostings[1].metadata.contacts[0].contactInfo.contactPhone' with value 'StringValue{value='***********'}' is not a valid 'PhoneNumber' - String value `10001212223` is not a valid E.164 phone number" }]}Variable 'input' has an invalid value: String value is not a valid web URL. Relative paths are not allowed. Value must be an absolute URL.
ミューテーションまたはクエリに値を提供するための変数が検証チェックに合格しない場合、GraphQLはどの変数に問題があるかとその理由を特定しますが、デフォルトではミューテーションまたはクエリ内で変数が使用されている場所のパス情報は含まれません。
HTTPステータスコード
HTTP 400
Apollo Serverはリクエストを有効なGraphQLドキュメントに解析し、スキーマに対して検証できません。クライアントがallowBatchedHttpRequestsが有効でない場合にバッチHTTPリクエストを送信しようとした場合や、CSRFの防止がリクエストをブロックした場合にも発生する可能性があります。
HTTP 404
要求されたリソースが存在しないか、リクエスト元のアカウントには表示されません。識別子(求人IDや広告主IDなど)を確認し、アクセストークンがリソースへのアクセス権を持つアカウントを表していることを確認してください。
HTTP 405
リクエストで無効なHTTPメソッドが使用されました。たとえば、ミューテーションでGETを使用した場合や、GETまたはPOST以外のHTTPメソッドを使用した場合です。
HTTP 409
リクエストがリソースの現在の状態と競合しています。Job Sync APIの場合、これは多くの場合、重複または同時更新を示します。競合を解決してから再試行してください。
HTTP 429
クライアントが一定期間に多くのリクエストを送信しました。レート制限を超過しました。リトライの回数を減らすか、リトライ間の待ち時間を増やしてください。
詳細については、以下をご覧ください:
HTTP 500
このエラーの考えられる原因:
- Apollo Serverが起動していない、またはシャットダウン中です。
context関数がエラーをスローしました。- Apollo Serverのバグやプラグインフックがエラーをスローしたなど、リクエスト処理中に予期しないエラーが発生しました。
OAuthエラー
invalid_client
クライアントIDまたはクライアントシークレットが正しくないか、有効期限が切れているか、取り消されています。
一般的 な原因:
- クライアントIDまたはクライアントシークレットが正しくない
- 認証情報の有効期限が切れているか取り消されている
- 誤った環境を使用している(QA vs 本番環境)
解決するには:
- パートナーコンソールで認証情報を確認してください。
- 正しい環境を使用していることを確認してください。
- 必要に応じて新しい認証情報を生成してください。
- 余分なスペースや非表示の文字がないか確認してください。
invalid_grant
Invalid grantクライアントID、クライアントシークレット、認可コード、またはリフレッシュトークンが正しくありません。error_descriptionフィールドには一般的なInvalid grantメッセージが含まれます。
以下の原因と解決策を確認 してください:
| 原因 | 解決策 |
|---|---|
| クライアントIDまたはシークレットが正しくない — Manage app credentialsページから認証情報を正しくコピーしていません。 | クライアントIDとシークレットを確認してください。 |
| クライアントシークレットが正しくない — クライアントIDにシークレットを追加し、元のシークレットを削除しましたが、すべての認証情報ストアを更新していません。 | 認証情報ストアに最新のクライアントシークレットが含まれていることを確認してください。 |
| クライアント認証情報グラントタイプが無効 — クライアント認証情報グラントタイプ(2-legged OAuth)を使用していますが、クライアント認証情報グラントタイプが有効になっていません。 | Manage app credentialsページで、Allowed grant typesのClient credentialsを選択してください。 |
| 認可コードグラントタイプが無効 — 認可コードグラントタイプ(3-legged OAuth)を使用していますが、認可コードグラントタイプが有効になっていません。 | Manage app credentialsページで、Allowed grant typesのAuthorization codeを選択してください。 |
redirect_uriパラメータ値の不一致 — 認可コードグラントタイプ(3-legged OAuth)を使用しており、https://apis.indeed.com/oauth/v2/tokensに送信したredirect_uriパラメータ値がhttps://secure.indeed.com/oauth/v2/authorizeに送信した値と一致しません。 | 2つのredirect_uriパラメータ値が一致していることを確認してください。 |
| 認可コードの期限切れまたは使用済み — 認可コードグラントタイプ(3-legged OAuth)を使用しており、期限切れまたは使用済みの認可コードを使用しました。認可コードは1回のみ使用できます。 | 再認可なしでアクセストークンを更新するには、offline_accessスコープをリクエストし、最初のアクセストークンとともにリフレッシュトークンを保存してください。 |
| リフレッシュトークンが無効 — リフレッシュトークンの期限が切れた(最後の使用から60日後)か、ユーザーが認可を取り消しました。 | ユーザーに認可コードグラントタイプ(3-legged OAuth)を通じて新しいリフレッシュトークンをリクエストするよう依頼してください。 |
| 別のアプリに発行された認可コードまたはリフレッシュトークン — 認可コードまたはリフレッシュトークンは有効ですが、別のアプリに発行されたものです。 | 認可プロセスのすべての段階で同じクライアントIDとシークレットを使用してください。 |
invalid_request
リクエストパラメータに問題があります。error_descriptionフィールドに問題の詳細が記載されています。
以下の原因と解決策を確認してください:
| 原因 | 解決策 |
|---|---|
| パラメータが正しくないまたは欠落している — 必須パラメータが欠落しているか、その値が無効です。 | パラメータを追加または修正してください。 |
クエリ文字列パラメータの配置ミス — https://apis.indeed.com/oauth/v2/tokensリクエストのリクエストURLにクエリ文字列パラメータが含まれています。 | application/x-www-form-urlencoded形式を使用して、HTTPリクエストボディにクエリ文字列パラメータを含めてください。 |
employerパラメータ値が正しくない — アプリのアカウント(2-legged OAuth)またはユーザー(3-legged OAuth)に雇用主へのアクセス権限がないか、employerパラメータに有効な雇用主IDが含まれていません。 | 有効なemployer値をリストするには、2-legged OAuthの場合はappinfoエンドポイントを呼び出し(雇用主を表すアクセストークンの取得をご覧ください)、3-legged OAuthの場合はv2/api/userinfoエンドポイントを呼び出してください(userinfoエンドポイントをご覧ください)。次に、employerパラメータの値を更新してください。 |
unsupported_grant_type
グラントタイプがサポートされていません。リクエストされたgrant_typeは次のいずれかの値である必要があります:
client_credentialsauthorization_coderefresh_token
Indeed エントリーのエラー
BAD_USER_INPUT
リクエストに無効な入力が含まれています。extensionsのmessageとsubCodeに具体的な原因が記載されています。
subCodeの値:
JOB_NOT_FOUND— 指定されたsourceJobPostingIdで求人が見つかりません。JOB_NOT_INDEEDAPPLYABLE— 求人がIndeedエントリーに対応していません。JOB_EXPIRED— 求人の有効期限が切れています。PARTNER_INTEGRATION_DISABLED— パートナーが無効であるか、この連携方法を使用できません。partnerApiTokenでApply with Indeedを有効にするには、Indeedにお問い合わせください。INVALID_PARAMETER— 入力URLまたは復号化された文字列がnullまたは空です。PARTNER_DATA_NOT_FOUND— リクエストしているパートナーのパートナーデータが見つかりません。FEED_NOT_FOUND— XMLフィードの入力でフィードIDが存在しません。MULTIPLE_MATCHING_FEEDS_FOUND— XMLフィードの入力で一意のフィードIDを特定できません。
INTERNAL_SERVER_ERROR
Indeedエントリーサービスで問題が発生しました。リクエスト をリトライしてください。数回のリトライ後もエラーが続く場合は、Indeedにお問い合わせください。
ia-awi-javascript-errors
Apply with Indeed(AWI)のJavaScript連携方法を実装する際に発生するJavaScript固有のエラーです。
一般的なエラーと解決策:
sourceJobPostingIdが見つからない — リクエストのsourceJobPostingIdを再確認してください。- パラメータが未入力/空または無効 —
sourceJobPostingId、encryptedFeedUrl、partnerApiToken、encryptedJobUrlが正しく入力されていることを確認してください。 - クライアントのパートナーデータが利用できない — パートナーAPIトークンが登録されていないか、正しくありません。トークンを登録するには、Indeedにお問い合わせください。
- パートナーはこのメソッドを使用できない — パートナーAPIトークンは登録されていますが、AWIが有効になっていません。Apply with Indeedを有効にするには、Indeedにお問い合わせください。
- 16進文字列の長さは2の倍数でなければならない — 暗号化パラメータの16進文字列の長さを確認してください。
Job Sync API のエラー
All jobs on this feed must have seats
マルチシートフィードを使用していますが、シートが含まれていません。少なくとも1つのシートを含むseats配列を追加してください。
少なくとも1つのシートを含むseats配列を追加してください:
body: { title: "Software Engineer" location: { country: "US" } seats: [{ seatPostingId: "SEAT-001" seatLocation: { country: "US" cityRegionPostal: "Dallas, TX 75201" } }]}No jobs on this feed may have seats
標準フィードを使用していますが、seatsが含まれています。seats配列を削除し、求人レベルで勤務地を指定してください。
seats配列を削除し、求人レベルで勤務地を指定してください:
body: { title: "Software Engineer" location: { country: "US" cityRegionPostal: "Austin, TX 78701" streetAddress: "100 Congress Ave" }}No contacts found with type 'contact'
リクエストにcontactTypeで"contact"を含む連絡先がありません。contactType配列に"contact"を含む連絡先を1つだけ含めてください。
contactType配列に"contact"を含む連絡先を1つだけ含めてください:
contacts: [{ contactType: ["contact", "hiring manager"] contactInfo: { email: "hr@example.com" }}]Multiple contacts with type 'contact' found
複数の連絡先のcontactType配列に"contact"が含まれています。"contact"タイプを持つ連絡先は1つだけにしてください。他の連絡先には"recruiter"や"hiring manager"などのタイプを使用してください。
Maximum amount cannot be less than minimum amount
maximumMinorの値がminimumMinorより小さくなっています。maximumMinorがminimumMinor以上であることを確認するか、最低給与のみを指定する場合はmaximumMinorを省略してください。給与の値はマイナー通貨単位(USDの場合はセント)です。
maximumMinorがminimumMinor以上であることを確認するか、最低給与のみを指定する場合はmaximumMinorを省略してください。給与の値はマイナー通貨単位(USDの場合はセント)です。たとえば、$50,000 = 5000000です。
salary: { currency: "USD" minimumMinor: 5000000 maximumMinor: 7500000 period: "YEAR"}The request contains duplicate job entries
各求人には一意のsourceNameとjobPostingIdのペアが必要です。同じペアがリクエスト内に複数含まれています。
The request contains duplicate seat entries
各求人には一意のsourceNameとseatPostingIdのペアが必要です。同じペアがリクエスト内に複数含まれています。
All seats must be located in the same country
シートの勤務地の国がトップレベルの求人の勤務地と異なっています。すべてのシートは、求人のトップレベルの勤務地と同じ国コードを使用する必要があります。
すべてのシートは、求人のトップレベルの勤務地と同じ国コードを使用する必要があります:
body: { location: { country: "US" } seats: [{ seatPostingId: "SEAT-001" seatLocation: { country: "US" cityRegionPostal: "Dallas, TX 75201" } }, { seatPostingId: "SEAT-002" seatLocation: { country: "US" cityRegionPostal: "Austin, TX 78701" } }]}cityRegionPostal cannot be null when remote type is not 'Fully Remote'
リモートでな い求人にはcityRegionPostalが必要です。cityRegionPostalを指定するか、remoteTypeを"Fully Remote"に設定して求人をフルリモートにしてください。
cityRegionPostalを指定するか、求人をフルリモートに設定してください:
# オプション1: 勤務地を指定location: { country: "US" cityRegionPostal: "Austin, TX 78701"}
# オプション2: フルリモートに設定location: { country: "US"}taxonomyClassification: { remoteType: "Fully Remote"}job-not-appearing
作成した求人がIndeedに表示されません。考えられる原因: 求人がまだ処理中(1〜2時間かかる場合があります)、求人が処理中に拒否された、またはsourceNameが正しくありません。
解決するには:
- 求人が検索可能になるまで1〜2時間お待ちください。
employerJobIdを使用して求人のステータスをクエリしてください。lifecycleStatusとisRejectedフィールドを確認してください。sourceNameが登録済みフィードと一致していることを確認してください。
job-wont-reactivate
求人は有効期限切れから30日以内のみ再有効化できます。
- 30日以内: 元の
jobPostingIdとsourceNameでcreateSourcedJobPostingsを呼び出し、datePublishedを更新してください。 - 30日を超えた場合: 新しい求人として作成してください(新しい
sourcedPostingIdが割り当てられる場合があります)。
jobs-dont-auto-expire
求人は自動的に有効期限切れになりません。求人を有効期限切れにするには、expireSourcedJobsBySourcedPostingIdを明示的に呼び出す必要があります。
Job Update API のエラー
FORBIDDEN
アクセストークンにJob Update APIの操作に必要な権限がありません。messageフィールドに具体的な原因が記載されています。
一般的なバリエーション:
- Advertiser is in a restricted moderation status — 広告主がスパム対策として制限されています。制限を解除するには、パートナーマネージャーにお問い合わせください。
- You are missing permissions for this action — OAuthトークンに関連付けられたユーザーに
Hosted_Job Create、Hosted_Job Update、またはHosted_Job Readの権限がありません。管理者ユーザーがIndeedアカウント設定で権限を付与できます。 - Advertiser is requesting an update to EJ claimed by a different advertiser — 別の広告主がこの求人を既に更新しています。一度に1つの広告主のみが求人を更新できます。求人投稿の更新をクリアミューテーションを使用して解決してください。
BAD_USER_INPUT
リクエストの形式が正しくありません。詳細はmessageフィールドをご覧ください。
解決するには、リクエストフィールドの形式が正しいことを確認してください。正しい形式の例についてはAPIリファレンスをご覧ください:
DOWNSTREAM_SERVICE_ERROR
内部サーバーエラーが発生しました。このエラーはINTERNAL_SERVER_ERRORとして表示される場合もあります。後でリクエストをリトライしてください。
Send Candidates API のエラー
sc-upload-validation-errors
添付ファイルのアップロードステップで検証に失敗した場合、S3がアップロードを拒否します。
S3が返すエラーコード:
SignatureDoesNotMatch— ヘッダーまたはコンテンツが欠落しているか正しくありません。すべてのヘッダーが初期化値と一致していることを確認してください。BadDigest— ファイルの内容がMD5チェックサムと一致しません。ファイルの整合性とチェックサム計算を確認してください。AccessDenied— 署名済みURLの有効期限が切れています(URLは5分後に期限切れになります)。新しいURLを取得するにはアプリケーションを再初期化してください。
sc-integration-errors
Send Candidates API連携中に発生する一般的なエラーです。パートナーアプリの設定、採用企業の登録、応募の送信に関する問題が含まれます。
一般的なシナリオと解決策:
- 無効なパートナーアプリ — パートナーアプリの設定が無効です。Indeedパートナー担当者にお問い合わせください。
- 無効な登録ID — 指定された採用企業の登録が存在しません。Employer Registration APIガイドで登録IDを確認してください。
- 採用企業がオプトインしていない — 採用企業の登録で応募送信機能が有効になっていません。Employer Registration APIで採用企業の機能を更新してください。
- GraphQL検証 — 必須フィールドが不足しています。スキーマ要件を確認してください。
- 大きなアプリケーションファイル — すべての添付ファイルの合計サイズは15 MBを超えてはなりません。不要なファイルや大きなファイルを除外してください。
- 重複するアプリケーションファイル — 添付ファイルを重複させないでください。重複するファイルを除外してください。
- 複数の履歴書 — タイプ
RESUMEの添付ファイルは1つのみにしてください。追加の履歴書にはOTHER_RESUMEを使用してください。 - 複数のカバーレター — タイプ
COVER_LETTERの添付ファイルは1つのみにしてください。 - 削除済みアプリケーションの公開 — アプリケーションは既に削除されています。削除済みのアプリケーションを再初期化または送信しないでください。
Sponsored Jobs API のエラー
INSUFFICIENT_SCOPE
アクセストークンは有効ですが、このAPIエンドポイントの呼び出しに必要なスコープがリクエストされていないか、付与されていません。
NOT_EMPLOYER_ACCESS_TOKEN
採用企業を表すアクセストークンでこのAPIエンドポイ ントを呼び出してください。アクセストークンを取得する際に、employerパラメータで採用企業を指定してください。
EMPLOYER_ACCESS_TOKEN_NOT_ALLOWED
特定の採用企業を表さないアクセストークンでこのAPIエンドポイントを呼び出してください。このAPIのアクセストークンを取得する際に、採用企業を指定しないでください。
LEGACY_ACCESS_TOKEN_NOT_ALLOWED
Sponsored Jobs APIは新しいOAuth認可エンドポイントのみをサポートしています。最新のOAuthエンドポイントに更新してく ださい。
UNACCEPTED_PARAMETER
このAPIはadvertiserIdパラメータを受け付けなくなりました。advertiserIdパラメータを削除し、oauth/v2/tokensエンドポイントに採用企業IDを渡して、その採用企業のアクセストークンを取得してください。
一般的なエラー
access-token-expired
アクセストークンの有効期限(通常1時間)が切れたか、取り消されました。API呼び出しが401 Unauthorizedで失敗します。
解決するには:
- トークンリフレッシュロジックを実装してください。
- リフレッシュトークンを使用して新しいアクセストークンをリクエストしてください。
- トークンをキャッシュし、有効期限切れ前にプロアクティブにリフレッシュしてください。
Employer not found
採用企業エンティティが存在しないか、採用企業IDが正しくないため、求人の作成に失敗しました。
一般的な原因:
- Employer Data APIで採用企業エンティティが作成されていない
- 採用企業IDが正しくない
- 採用企業IDが誤った環境のものである
解決するには:
- Employer Data APIを使用して採用企業エンティティを先に作成してください。
- 採用企業IDがAPIから返されたものと一致していることを確認してください。
- 正しい環境を使用していることを確認してください。