ドキュメント本文へスキップ
CLI

スクリプト

JSON 出力、ストリーム、終了コード、環境変数、無人実行と CI での実行。

JSON 出力

--json を付けると、stdout にはスペース 2 つでインデントした JSON だけが出力され、メモや進捗は stderr に残り、何も尋ねません。リストは { items, hasMore, nextCursor } を出力し、API のオブジェクトは API が返したとおりに、手書きのコマンドはヘルプに記載のオブジェクトを出力します。

ターミナル
openemail whoami --json | jq -r .workspaceIdopenemail emails list --status failed --json | jq -r ".items[].id"

エラーは stderr に 1 行の JSON として出力され、終了コードは人が使った場合と同じです:

stderr
{"error":{"type":"permission_error","code":"insufficient_scope","message":"This API key does not have the domains:write scope.","hint":"The credential is missing a scope this call needs. Use a key that has it, or sign in again with openemail login.","next":null,"status":403,"requestId":"req_7Hc2kQ","param":null,"docUrl":"https://openemail.uk/docs/api/errors#insufficient_scope","exitCode":4}}
フィールド内容
typeAPI のエラータイプ、または CLI 内部の失敗の場合は cli_error、network_error、internal_error
codeinsufficient_scope、not_signed_in、unknown_flag などの安定したコード
message何が問題だったかを 1 文で
hint, next試すべきことと次に実行するコマンド、または null
status, requestId, param, docUrlエラーが API から来た場合はその値、それ以外は null
exitCodeプロセスが終了するときの終了コード

ストリーム

一部の出力は 1 行に 1 つの JSON オブジェクトが並ぶストリームなので、パイプラインは各項目を届いたそばから処理できます:

  • stdout がターミナルでないときの --all 付きのリソース一覧、または --ndjson。--max <n> はその件数で停止します。
  • openemail temp watch --json。新しいメッセージごとに 1 行。
  • openemail mcp serve。双方向とも 1 行に 1 つの JSON-RPC メッセージ。
ターミナル
openemail contacts list --all > contacts.ndjsonopenemail emails list --status failed --all --max 500 | jq -r .id

終了コード

コード意味
0完了
1予期しない失敗、サーバーエラー、または送信の失敗
2使い方のエラー:不正な引数、不明なコマンドやフラグ、尋ねられなかった値や確認、または CLI が認証情報を送らないオリジンやパス
3サインインしていない、またはサインインが拒否された、期限切れになった、コマンドの実行中にサインアウトされた
4許可されていない:スコープや権限の不足、尋ねられなかったか一時停止中の確認コード、ブラウザでのサインインが必要な場面での API キー
5見つからない
6現在の状態との競合
7入力が無効
8レート制限、または AI の枠を使い切った
9ネットワークの失敗またはタイムアウト
10キャンセル:確認やプロンプトを拒否した
130, 143Ctrl+C または SIGTERM で停止

環境変数

変数機能
OPENEMAIL_API_KEY保存済みプロファイルの代わりに使う API キー
OPENEMAIL_PROFILE使用する保存済みプロファイル
OPENEMAIL_BASE_URLOPENEMAIL_API_KEY、--api-key、および認証情報を送らないコマンドのための API のオリジン。保存されたサインインは、サインインした API にしか送られません
OPENEMAIL_APP_URLサインイン、open、ドキュメントのリンクに使う Web アプリのオリジン
OPENEMAIL_CONFIG_DIRプロファイルと受信トレイトークンの保存場所。未設定なら ~/.openemail
OPENEMAIL_NO_UPDATE_CHECKnpm で新しいリリースを確認しない。OPENEMAIL_DISABLE_UPDATE_NOTICE も同じ効果
NO_COLOR, FORCE_COLOR=0色なし
CIプロンプトを出さず、ブラウザを開かず、アップデートを確認しない。多くの CI サービスはこの変数がなくても認識されます
VISUAL, EDITORsend と reply が本文用に開くエディター

無人実行

CLI がプロンプトを出すのは、stdin と stdout の両方がターミナルで、--json、--no-input、CI のいずれにも当てはまらない場合だけです。それ以外では:

  • 必須の値が足りない場合は終了コード 2 で停止し、渡すべきフラグを示します。
  • 破壊的なコマンドは、--yes を渡さない限り Refusing to run unattended. Pass --yes to confirm. と表示して終了コード 2 で停止します。
  • 確認コードが必要な変更は、入力できる人がいないため終了コード 4 で停止します。API キーを使うか、先に openemail verify を実行してください。

CI で

ジョブには必要なスコープだけを持つ API キーを渡し、シークレットに保存して OPENEMAIL_API_KEY で渡してください。何も保存されず、何も尋ねられず、アップデートの確認も行われません。

.github/workflows/deploy.yml
- name: Tell the team  env:    OPENEMAIL_API_KEY: ${{ secrets.OPENEMAIL_API_KEY }}  run: |    npx -y @openemail/[email protected] send \      --from [email protected] \      --to [email protected] \      --subject "Deployed ${{ github.sha }}" \      --text "Build ${{ github.run_number }} is live." \      --idempotency-key "deploy-${{ github.run_id }}"
登録メールを待つ
ADDRESS=$(npx -y @openemail/[email protected] temp new --ttl 15)./signup-test.sh "$ADDRESS"npx -y @openemail/[email protected] temp watch --first --json | jq -r .snippetnpx -y @openemail/[email protected] temp delete --yes
送信失敗でビルドを失敗させる
failed=$(openemail emails list --status failed --json | jq ".items | length")test "$failed" -eq 0

パイプラインが再試行する可能性のある送信には --idempotency-key を渡し、実行 ID など送信が必要になった理由から導いた値にしてください。ステップを再実行すると、二重に送る代わりに最初の送信が返されます。

受信トレイを、
あなたの思いどおりに。

企業、AI、エージェント、個人利用のためのメールインフラ。スケール、プライバシー、コントロールのために設計。メールが最初から備えているべきだったすべて。

OpenEmail

企業、AI、エージェント、個人利用のためのメールインフラ。スケール、プライバシー、コントロールのために設計。メールが最初から備えているべきだったすべて。

© 2026 OpenEmail. 無断転載を禁じます。