# エラーコード

このページでは MoreLogin API が返す主なエラーコードを一覧します。

## レスポンス形式

すべての API レスポンスは次の標準形式に従います：

```json
{
  "code": 0,
  "msg": null,
  "data": {},
  "requestId": "unique-request-id"
}
```

| フィールド | 型 | 説明 |
|  --- | --- | --- |
| `code` | 整数 | `0` = 成功、`>0` = エラー |
| `msg` | 文字列 | エラーメッセージ（成功時は null） |
| `data` | オブジェクト | レスポンスデータ |
| `requestId` | 文字列 | 調査用の一意なリクエスト識別子 |


## コードが示す領域の見分け方

エラーコードは単一の連番から割り当てられているのではありません。製品領域ごとに区間が割り当てられているため、先頭 2〜3 桁でどのサブシステムがリクエストを拒否したか分かります：

| 区間 | 領域 |
|  --- | --- |
| `14xxx` | プロキシ |
| `15xxx` | グループとタグ |
| `19xxx` | ブラウザープロファイル |
| `20xxx` | ウォレット、注文、課金 |
| `21001` | クライアントのバージョンが古い |
| `33xxx` | クラウドフォン |
| `35xxx` | API 認証とレート制限 |
| `39xxx` | クラウドストレージ |
| `40xxx` | クラウドブラウザーのランタイム |
| `41xxx` | Webhook 設定 |
| `99xxx` | ゲートウェイとリクエスト検証 |


各操作には、返し得ることが分かっているコードが記載されています。[エンドポイントのリトライと完了マトリクス](/ja/api-reference/getting-started/endpoint-behavior)からリンクされた製品別のページを参照してください。

## 共通エラーコード

リクエスト検証、権限チェック、ゲートウェイに由来し、業務ロジックからではないため、どの操作でも返り得ます。

| コード | 説明 | 対処方法 |
|  --- | --- | --- |
| `0` | 成功 | — |
| `21001` | クライアントのバージョンが古い | MoreLogin デスクトップクライアントを更新してください |
| `35000` | API リクエストが多すぎる | リトライ可能な操作はジッター付きバックオフで再試行してください。[レート制限](/ja/api-reference/getting-started/rate-limits)を参照 |
| `99000` | システムの不明なエラー | 後で再試行し、サポートには `requestId` を伝えてください |
| `99001` | リクエストパラメーターが不正 | リクエストボディの形式と必須項目を確認してください |
| `99002` | 操作権限がありません | アカウントの権限を確認してください |
| `99003` | リクエスト例外 | `msg` に応じて業務上の調整を行ってください |
| `99004` | リクエストボディが大きすぎる | リクエストボディを小さくしてください |
| `99005` | 同じリクエストが処理中です | 実行中のリクエストが終わるまで待ってから再試行してください |
| `99006` | 不正なリクエスト | HTTP メソッド、ヘッダー、ボディを確認してください |
| `99007` | リクエスト元 IP が許可リストにありません | 呼び出し元 IP を許可リストに追加してください |
| `99008` | IP または端末のリクエスト回数上限を超過 | この IP や端末からのリクエスト量を減らしてください |
| `99009` | リクエストが多すぎる | ジッター付きバックオフで再試行してください |
| `99011` | リクエストのタイムスタンプが失効 | 現在のタイムスタンプで再送信してください |
| `99012` | 費用権限が必要 | チームオーナーのアカウントを使うか、費用権限を付与してください |


### クラウドフォン（`33xxx`）

| コード | 説明 | 対処方法 |
|  --- | --- | --- |
| `20002` | The original monthly order was cancelled | Create a new monthly purchase for eligible Cloud Phones |
| `20003` | The original monthly order was refunded | Create a new monthly purchase for eligible Cloud Phones |
| `20004` | The original monthly order does not exist | Verify the Cloud Phone purchase state and contact support with `requestId` if it persists |
| `20008` | The original monthly order is not completed or its status cannot be confirmed | Check the order and Cloud Phone state before retrying |
| `20055` | A Cloud Phone does not exist, was deleted, or does not belong to the team | Verify every Cloud Phone ID and team ownership |
| `20068` | A pending monthly payment order already exists | Complete or cancel the pending order before using the activation API |
| `20070` | A concurrent Cloud Phone purchase is already in progress | Wait for the in-flight purchase to settle, then read state before retrying |
| `20071` | A selected monthly SKU is unavailable or has no active 30-day price | Query the monthly SKU endpoint again and choose an available product |
| `33420` | Paid and unpaid Cloud Phones cannot be activated in the same batch | Separate Cloud Phones by purchase state and submit compatible batches |
| `33421` | Paid Cloud Phones from different purchase orders cannot be mixed | Submit one activation batch per original purchase order |
| `33422` | Payment succeeded but activation is incomplete or cannot yet be confirmed | Inspect `data.results` and each Cloud Phone's expiry state; do not pay again blindly |
| `33300` | クラウドフォンが存在しません | クラウドフォン ID と、それが自チームのものかを確認してください |
| `33301` | クラウドフォンが起動していません | 起動して、実行可能な状態になるまで待ってください |
| `33308` | 他のメンバーが使用中のため電源を切れません | 他のメンバーが解放してから再試行してください |
| `33309` | 他のメンバーが使用中のため接続できません | 他のメンバーが解放してから再試行してください |
| `33315` | アカウントが未払いのためクラウドフォンが凍結されています | ウォレットにチャージしてください |
| `33316` | 利用可能なプロファイル数が不足 | プランをアップグレードしてください |
| `33317` | プロファイルの権限が取り消されました | 管理者にアクセス権の付与を依頼してください |
| `33318` | 残高不足で起動できません | ウォレットにチャージしてください |
| `33321` | プロファイルが利用できません | 再試行の前にプロファイルの状態を確認してください |
| `33322` | プロキシの検査中です | 検査が終わるまでポーリングしてください |
| `33323` | プロファイルが起動中です | 起動が終わるまで待ち、再送信しないでください |
| `33324` | プロファイルはすでに実行中です | 対応は不要です |
| `33325` | プロファイルが無効化されています | 使用前に再有効化してください |
| `33331` | ワンクリック新端末の処理中で電源を切れません | 完了するまで待ってください |
| `33332` | 再起動中で電源を切れません | 完了するまで待ってください |
| `33333` | リセット中で電源を切れません | 完了するまで待ってください |
| `33338`–`33345` | 国、タイムゾーン、言語、経度、緯度のいずれかが未指定または不正 | [国とタイムゾーン対照表](/ja/api-reference/appendix/country-time-zone)を参照してください |
| `33346` | SKU の販売が終了しています | 別の `skuId` を選んでください |
| `33347` | この機種は最新の Windows クライアントが必要です | MoreLogin デスクトップクライアントを更新してください |
| `33367` | メンテナンス中で起動できません | 復旧時間はシステムのお知らせを確認してください |
| `33376` | 月額課金の期間が終了しました | サブスクリプションを更新してください |
| `33398`–`33400` | 経度、緯度、または高度が範囲外 | 経度 −180…180、緯度 −90…90、高度 −50000…100000 |
| `33401` | このクラウドフォンは未対応です | 対応している機種を使ってください |
| `33407` | 同時実行パッケージの上限を超過 | 枠が空くのを待つか、上限を引き上げてください |
| `33408` | 電話番号の形式が不正 | `+` で始め、国コードは 1〜3 桁（86 を除く）、全体で 8〜14 桁 |
| `33418` | ライブ配信用ファイルが存在しないか無効 | `uploadType=2` でアップロードし、返された `fileId` を使ってください |
| `33419` | ライブ配信用ファイルの形式が未対応 | `/cloudphone/uploadFile` から MP4 をアップロードしてください |
| `33005` | アプリのインストールに失敗 | 再試行し、端末のストレージ空き容量も確認してください |
| `33014` | 操作が頻繁すぎる | バックオフしてから再試行してください |
| `33714` | アプリが存在しないか公開停止されました | アプリライブラリを再読み込みしてください |
| `33814` | RPA テンプレートが存在しません | テンプレートを再取得し、現在の `templateId` を使ってください |
| `33818` | RPA テンプレートのパラメーター形式が不正 | `templateParameter` はエスケープした JSON 文字列として送ってください |
| `33303` | クラウドフォンの作成に失敗 | 再試行の前に `/cloudphone/page` を照会し、無条件に再送信しないでください |
| `33320` | このクラウドフォンに紐付いていたプロキシは削除されました | `/cloudphone/setProxy` でプロキシを再紐付けしてください |
| `33326` | 他のメンバーが使用中のため端末を入れ替えられません | 他のメンバーが解放してから再試行してください |
| `33350` | 一部のクラウドフォンで ADB を有効化できませんでした | 該当機は未起動か ADB 非対応です。状態を読み直し、その機だけ再試行してください |
| `33507` | 端末上にファイルが存在しません | パスを確認してください。ダウンロード要求は転送前に親ディレクトリを走査します |


インストールおよび電源操作では、さらに `33001`–`33033`、`33500`–`33520`、`33700`–`33724`、`33900`–`33910` の区間からデバイスサービス由来のコードが返ることがあります。どれが到達可能かは端末を提供するデバイスサービスに依存するため、各操作では個別に列挙していません。

### ブラウザープロファイル（`19xxx`）

| コード | 説明 | 対処方法 |
|  --- | --- | --- |
| `19001` | プロファイル名が既に存在します | 一意な名前にするか、`envName` を省略して自動生成させてください |
| `19002` | 下流でプロファイル作成に失敗 | 再試行の前に `/env/page` で確認してください |
| `19004` | ユーザーエージェントの形式が不正 | 解析可能な `advancedSetting.ua` を送ってください |
| `19005` | Cookie の形式が不正 | `cookies` はエスケープした JSON 配列文字列として送ってください |
| `19039` | プロファイルが見つかりません | `envId` / `uniqueId` と、それが自チームのものかを確認してください |
| `19063` | プロファイル数の上限に達しました | プロファイルを削除するか、プランをアップグレードしてください |
| `19064` | このグループへの権限がありません | 管理者にグループへのアクセス権を依頼してください |
| `19065` | このプロファイルへの権限がありません | 管理者にプロファイルへのアクセス権を依頼してください |
| `19099` | 利用可能なプロファイル数が不足し、利用が制限されています | プランをアップグレードしてください |
| `19100` | プラットフォーム ID が不正 | `/system/platform/list` が返す `platformId` を使ってください |
| `19101` | サイト ID が不正 | `/system/platform/list` が返す `siteId` を使ってください |
| `19102` | カスタムプラットフォームの URL は必須です | `platformId` が `9999` のときは `platformUrl` を送ってください |
| `19103` | 自動で開く URL の形式が不正 | `afterStartupConfig` には有効な絶対 URL を送ってください |
| `19104` | グループ ID が不正 | 自チームに存在するグループを使ってください |
| `19105` | タグ ID が不正 | 自チームに存在するタグを使ってください |
| `19106` | プロキシ ID が不正 | 自チームに存在するプロキシを使うか、`proxyId` を省略してください |
| `19107` | ブラウザーカーネルのバージョンが不正 | `/env/advanced/ua/versions` からバージョンを選んでください |
| `19108` | ユーザーエージェントのバージョンが不正 | `/env/advanced/ua/versions` からバージョンを選んでください |
| `19109` | ユーザーエージェントのバージョンが UA と一致しません | `uaVersion` を `advancedSetting.ua` と揃えるか、どちらか一方だけ送ってください |
| `19110` | カスタム URL の形式が不正 | 有効な絶対 URL を送ってください |
| `19111` | Firefox は Windows と macOS のみ対応 | Windows か macOS を選ぶか、Chrome に切り替えてください |
| `19112` | 暗号鍵が未設定のため、プロファイルの暗号化を有効にできません | チームの暗号鍵を設定するか、`isEncrypt=0` を送ってください |
| `19141` | 100 文字以内、数字・英字・スペースのみ | `accountInfo.otpSecret` を短くし、それ以外の文字を除いてください |
| `19142` | エンドツーエンド暗号化されたプロファイルは変更できません | 暗号化プロファイルは MoreLogin クライアントで操作してください |
| `19143` | クライアントのバージョンが低くカーネルに適合しません | MoreLogin デスクトップクライアントを更新してください |
| `19147` | 1 日の作成上限を超過 | プランをアップグレードして上限を引き上げてください |
| `19149` | 消去するキャッシュ種別が選択されていません | 消去するキャッシュ種別を少なくとも 1 つ指定してください |
| `19159` | OS が高度な設定と一致しません | 更新時に OS は変更できません。`advancedSetting.os` は保存値どおりにしてください |
| `19160` | ブラウザー種別が高度な設定と一致しません | 更新時にブラウザーは変更できません。`advancedSetting.vendor` は保存値どおりにしてください |
| `19175` | 座標がサービス範囲外です | 対応範囲内の座標を選んでください |
| `19193` | 共有元がこのプロファイルの編集を禁止しています | オーナーに編集許可を依頼してください |


### クラウドストレージ（`39xxx`）

| コード | 説明 | 対処方法 |
|  --- | --- | --- |
| `39001` | クラウドストレージの情報が存在しません | チームでクラウドストレージが開通済みか確認してください |
| `39011` | ファイルが見つかりません | ファイル ID を確認してください |
| `39014` | ファイルのアクセス URL が空です | アップロードを再登録してください |
| `39037` | ファイル拡張子のパラメーターが不正 | 対応している拡張子を送ってください |
| `39041` | ストレージ容量の上限に達しました | ファイルを削除して空き容量を作ってください |
| `39044` | ファイル名が重複しています | ファイル名を変更してください |
| `39045` | 未確定の署名付きアップロードが多すぎます | 先に未確定のアップロードを完了または破棄してください |
| `39046` | ファイルが正しくアップロードされていません | complete を呼ぶ前に署名付き URL へアップロードしてください |
| `39047` | クラウドストレージの期限が切れました | クラウドストレージを更新してください |
| `39048` | クラウドストレージのタグが存在しません | `/cloudstorage/tag/all` が返すタグを使ってください |
| `39049` | タグ ID は必須です | 少なくとも 1 つのタグを送ってください。空のリストは拒否されます |
| `39050` | ファイル名が 60 文字を超えています | 名前を短くしてください |
| `39051` | ファイルサイズは 0 B より大きく 2 GB 未満である必要があります | ファイルを分割または圧縮してください |


### プロキシ（`14xxx`）とウォレット（`20xxx`）

| コード | 説明 | 対処方法 |
|  --- | --- | --- |
| `14003` | プロキシの更新に失敗、またはプロキシが存在しません | プロキシ ID を確認してください |
| `14017` | プロキシを削除できません | 期限切れでないクラウドプラットフォームプロキシは削除できません。期限切れを待ってください |
| `14023` | プロキシ種別が存在しません | 対応しているデバイスサービス値を使ってください |
| `14024` | プロキシが存在しません | プロキシ ID を確認してください |
| `14519` | ダイナミックプロキシの情報は変更できません | ダイナミックプロキシはプロキシ系エンドポイントの外で管理してください |
| `20018` | 商品価格を取得できませんでした | 後で再試行し、サポートには `requestId` を伝えてください |
| `20029` | ウォレットのアカウントが利用できません | チームのウォレットを確認してください |
| `20032` | 残高の照会に失敗 | 後で再試行し、サポートには `requestId` を伝えてください |
| `20041` | 残高不足 | ウォレットにチャージしてください |


### クラウドブラウザーのランタイム（`40xxx`）

`/cloudbrowser/start`、`/cloudbrowser/stop`、`/cloudbrowser/connect` が返します。起動リクエストがディスパッチされた後に発生するコードは起動レスポンスではなく `/cloudbrowser/page` に現れます。

| コード | 説明 | 対処方法 |
|  --- | --- | --- |
| `40001` | クラウドブラウザーは実行中です | 対応は不要です。既存の実行に接続してください |
| `40002` | 現在の状態ではクラウドブラウザーを終了できません | `/cloudbrowser/page` を読み直してから再試行してください |
| `40003` | プロキシの検査に失敗 | 紐付いたプロキシが到達可能か確認してください |
| `40006` | クラウドブラウザーの操作に失敗 | 再試行してください。アーカイブが失敗した場合は `cloudBrowserArchiveStatus` を確認してください |
| `40008` | 実行中のクラウドブラウザーが見つかりません | 先に起動するか、`/cloudbrowser/page` を読み直してください |
| `40009` | 他のメンバーが起動したクラウドブラウザーには接続できません | そのメンバーに解放を依頼してください |
| `40010` | クラウドブラウザーへの接続に失敗 | 再試行してください。デスクトップアクセストークンを発行できませんでした |
| `40015` | このプロファイルにはプロキシが紐付いていません | 先に `/env/setProxy/batch` でプロキシを紐付けてください |
| `40016` | 起動リクエストを送信できませんでした | 再試行してください |
| `40020` | クラウドブラウザーは終了処理中です | 終了が完了するまで待ってください |
| `40021` | クラウドブラウザーはすでに起動処理中です | 再送信せず、`/cloudbrowser/page` をポーリングしてください |
| `40023` | このプロファイルは使用中です | 先に別のセッションを閉じてください |
| `40024` | クラウドブラウザーが時間内に起動しませんでした | もう一度起動してください |
| `40025` | 紐付いたプロキシが存在しません | プロキシを再紐付けしてください |
| `40026` | 紐付いたプロキシの期限が切れました | プロキシを更新または交換してください |
| `40027` | 紐付いたプロキシは割り当て中です | 割り当て完了後に再試行してください |
| `40028` | ローカルプロキシは未対応です | ローカル以外のプロキシを使ってください |
| `40029` | このプロキシ種別は未対応です | 対応しているプロキシ種別を使ってください |
| `40037` | エンドツーエンド暗号化されたプロファイルはクラウドブラウザーを利用できません | 暗号化されていないプロファイルを使ってください |


### Webhook（`41xxx`）

Webhook 設定エンドポイントがコールバック URL を拒否したときに返されます。

| コード | 説明 | 対処方法 |
|  --- | --- | --- |
| `41001` | コールバック URL は有効な HTTPS アドレスである必要があります | 1024 文字以内の HTTPS URL を指定し、ユーザー情報とフラグメントを含めず、ポートを正しくし、解決先のすべてのアドレスが公開経路であることを確認してください |


### API 認証（`35xxx`）とチーム（`12xxx`）

| コード | 説明 | 対処方法 |
|  --- | --- | --- |
| `12002` | チームが存在しません | そのメンバーのチームは削除されています。サポートへご連絡ください |
| `35002` | API 認証に失敗 | `client_id`（API ID）と `client_secret`（API キー）を確認してください |
| `35005` | このリクエストに操作権限がありません | メンバーが無効化されているか、呼び出し元 IP が Open API の許可・拒否リストを通過していません |


## HTTP ステータスコード

| ステータス | 説明 |
|  --- | --- |
| `200` | リクエストは処理済み（業務結果は `code` フィールドを確認） |
| `401` | 未認証 — アクセストークンが無効または期限切れ |
| `403` | 禁止 — 権限が不足 |
| `429` | リクエスト過多 — レート制限に達しました |
| `500` | サーバー内部エラー — サポートへご連絡ください |


現行のアプリケーションゲートウェイは自身のレート制限拒否を業務コード `35000` で表し、HTTP `429` を明示的には設定しません。エッジプロキシや将来のゲートウェイでは `429` が返る可能性もあるため、クライアントは両方の形式を扱ってください。

## リトライと復旧の考え方

| 失敗の種類 | リトライ可否 | クライアントに必要な対応 |
|  --- | --- | --- |
| 検証、権限、残高、機能非対応のエラー | 不可 | リクエスト、権限、残高、選択したリソースを修正してから再試行 |
| レート制限（`35000`） | 条件付きで可 | ジッターを入れてバックオフ。HTTP ステータスが `200` でもボディの `code` を確認 |
| サーバーまたはデバイスサービスの一時的障害 | 条件付きで可 | 読み取りは再試行可。書き込みはまずリソースやタスクの状態を照会 |
| 非同期処理が受理された | すぐに再送しない | 文書化されたステータスエンドポイントを、成功・失敗・タイムアウトまでポーリング |
| ネットワークタイムアウト後に結果が不明 | まず状態確認 | 作成、購入、アップロード登録、スケジュール作成を無条件に繰り返さない |


この公開 API には現時点で汎用の冪等キーヘッダーはありません。したがって状態を変えるリクエストでは、エンドポイントごとの状態照会が安全な復旧手順の一部になります。

非同期処理では `code: 0` のレスポンスが「完了」ではなく「受理」を意味することがあります。各操作のドキュメントに記載されたステータス項目と終了状態に従ってください。

全操作については[エンドポイントのリトライと完了マトリクス](/ja/api-reference/getting-started/endpoint-behavior)、ポーリングの流れと終了状態については[非同期操作](/ja/api-reference/getting-started/async-operations)を参照してください。

> **ヒント**：サポートへ問い合わせる際は、レスポンスの `requestId` を必ず添えてください。調査が早くなります。