WordPressのREST APIのエラーコード|401・403・404の違い

REST APIでWordPressに投稿して失敗した時は、返ってくるエラーのHTTPの番号とコード名で、原因をほぼ見分けられます。401 は「ログインしていない」、403 は「ログインしているが権限が足りない」(または、サーバーが止めた)、404 の rest_no_route は「URLかメソッドが違う」です。

この記事では、WordPress 7.1.2 のソースコードと日本語の翻訳にもとづいて、投稿の保存でよく出るコードを一覧にします。サイトヘルスでの確認はサイトヘルスのREST APIエラー、サーバーのWAFが原因の場合はエックスサーバーでREST APIが403になる時の確認で説明しています。

(確認:WordPress 7.1.2 のソースコード wp-includes/rest-api.php・rest-api/class-wp-rest-server.php・endpoints/class-wp-rest-posts-controller.php、日本語の翻訳ファイル。確認日:2026年10月6日)

401と403の違い

WordPressは、権限が足りない時のHTTPの番号を、rest_authorization_required_code() という関数で決めます(ソースで確認)。

  • ログインしていない:401
  • ログインしている:403

このため、アプリケーションパスワードで外部から投稿して 401 が返る時は、認証が通っていない(ユーザー名・パスワードの間違い、またはアプリケーションパスワードが使えない状態)ことを示します(アプリケーションパスワードが表示されない時)。認証が通って、403 が返る時は、そのユーザーの権限が足りないことが多いです。

投稿でよく出るコード

コード HTTP メッセージ(日本語の翻訳) 主な原因
rest_no_route 404 URL とリクエストメソッドに一致するルートが見つかりませんでした。 URLの間違い、メソッド(GET/POST)の間違い。パーマリンクの問題で /wp-json/ に届かない場合もある
rest_forbidden 401 / 403 その操作を実行する権限がありません。 ログインしていない(401)、または権限が足りない(403)
rest_cannot_create 401 / 403 このユーザーとして投稿を編集する権限がありません。(英語は「create posts」) ユーザーの役割に、投稿を作る権限が無い
rest_cannot_publish 401 / 403 この投稿タイプで投稿を公開する権限がありません。 status を publish や future にするには、公開の権限が要る
rest_cookie_invalid_nonce 403 Cookie チェック失敗 Cookieでログインした状態で、確認用のコード(nonce)を付けずに送った
rest_invalid_param 400 無効なパラメータ: ○○ 送った値の形式の間違い(日付の形式など)

rest_cannot_publish について、ソースでは、status が draft(下書き)と pending(レビュー待ち)の時は、公開の権限を確認せず、publish・future・private の時に、公開の権限を確認しています。下書きでは保存できるのに、公開すると失敗する時は、ユーザーの役割(寄稿者など)を確認します。

見分ける順番

  1. HTTPの番号を見る(401・403・404・400・500番台)
  2. レスポンスの中の code と message を見る
  3. 404:ブラウザで /wp-json/ を開き、JSONが出るかを確かめる(サイトヘルスのREST APIエラー)
  4. 401:ユーザー名と、アプリケーションパスワードを確かめる。HTTPSで接続しているか(HTTPS化の確認)
  5. 403:まずユーザーの権限、次にサーバーのWAFやセキュリティ系プラグイン
  6. 400:送った値の形式。日付はWordPressのREST APIで予約投稿|dateの時差を確認

サーバーが返すエラーの文面は、WordPressではなく、サーバーのWAFが返している場合もあります。レスポンスにWordPressのコード名(rest_ で始まる名前)が無い時は、WordPressに届く前に止められている可能性があります。

外部から投稿する仕組みを使う前に

REST APIで投稿する仕組みを使うには、HTTPS・REST APIが止められていない・投稿できる権限のユーザー、の3つがそろう必要があります。当サイトが販売するAmazon Auto Postsの動作条件はAmazon Auto Posts 導入前に確認することにまとめています。

まとめ

  • 401は未ログイン、403はログイン済みで権限不足(またはサーバーが拒否)、404の rest_no_route はURLかメソッドの違い
  • 公開(publish・future)には公開の権限が要る。下書きだけ保存できる時は、ユーザーの役割を確認する
  • rest_ で始まるコード名が無い時は、WordPressの手前で止められている可能性がある

本記事はWordPress本体の挙動の説明です。プラグインやサーバーの設定によっては、異なるコードが返ることがあります。