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 の時に、公開の権限を確認しています。下書きでは保存できるのに、公開すると失敗する時は、ユーザーの役割(寄稿者など)を確認します。
見分ける順番
- HTTPの番号を見る(401・403・404・400・500番台)
- レスポンスの中の code と message を見る
404:ブラウザで/wp-json/を開き、JSONが出るかを確かめる(サイトヘルスのREST APIエラー)401:ユーザー名と、アプリケーションパスワードを確かめる。HTTPSで接続しているか(HTTPS化の確認)403:まずユーザーの権限、次にサーバーのWAFやセキュリティ系プラグイン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本体の挙動の説明です。プラグインやサーバーの設定によっては、異なるコードが返ることがあります。


