即効レスキュー・コピペ復旧!現場のAPIエラー・連携不具合を3分で直す実践ガイド

【kintone×Make】HTTP 400 Bad Requestが出たときの原因特定とフィールドコード修正手順

カテゴリー1

【kintone×Make】HTTP 400 Bad Requestが出たときの原因特定とフィールドコード修正手順

解決可否:解決可能(設定ミスによる100%人為的なエラーであり、kintone・Make双方に障害がなければ必ず復旧できる)
主な発生原因
①フィールドコードの表記揺れ(大文字・小文字・全角半角・アンダースコア抜け)、
②データ型のミスマッチ(数値/日時/ドロップダウンの形式不一致)、
③必須項目へのnull・空文字送信
修正所要時間:原因特定込みで平均10〜20分(エラーログからフィールドコードを特定できれば5分程度)

1. はじめに:kintone×Makeで「400 Bad Request」が起きる仕組み

Make(旧Integromat)からkintoneへレコードを登録・更新するシナリオを組んでいると、実行ログに次のようなエラーが表示されて処理が止まることがあります。

text
[400] Bad Request
kintone REST API でエラーが発生しました。

kintoneのREST API(/k/v1/record.json/k/v1/records.json)は、受け取ったJSONの中身をサーバー側で厳格にバリデーションします。フィールドコードが1文字でも間違っていたり、数値フィールドに文字列を送ったり、必須項目が空欄だったりすると、レコードは1件も登録されずに400エラーとして即座に拒否されます。

これはkintone側の仕様であり、Make側の通信自体が失敗しているわけではありません。Makeの実行履歴(Execution History)を開き、該当モジュールの「Output」または「Error」タブを確認すると、kintoneが返してきた詳細なエラーメッセージ(JSON形式)を確認できます。まずはここを見る癖をつけることが、原因特定の第一歩です。

kintoneが返す400エラーのレスポンスは、おおむね次のような構造をしています。

json
{
  "code": "CB_VA01",
  "id": "20240816-abcdef123456",
  "message": "入力内容が正しくありません。",
  "errors": {
    "顧客名": {
      "messages": ["必須です。"]
    }
  }
}

このerrorsオブジェクトのキーに、問題を起こしているフィールドコードがそのまま表示されます。ここを起点に、以下の3つの原因を順番に切り分けていきます。

2. 【原因1】フィールドコードの大文字・小文字・アンダースコア表記揺れ

最も多い原因が、Make側のマッピングで指定した文字列と、kintone側の実際のフィールドコードが一致していないケースです。kintoneのフィールドコードは大文字・小文字を区別するため、CustomerNamecustomername は別物として扱われます。

特に次のようなパターンで表記揺れが起きやすいので注意してください。

  • フィールド名を日本語で作成した際に自動採番された 文字列__1行__0 のようなアンダースコア付きコードを、途中でリネームし忘れている
  • Excel等からフィールドコード一覧をコピーする際に、全角スペースや改行が混入している
  • 開発環境(テスト用アプリ)と本番アプリでフィールドコードが微妙に異なる(アプリをコピーした際に自動でサフィックスが付与されることがある)

正確なフィールドコードは、kintoneの管理画面から必ず確認してください。

  1. 対象アプリを開き、右上の歯車アイコンから[アプリの設定]を開く
  2. [フォーム]タブを選択する
  3. 対象フィールドをクリックし、右側に表示される設定パネルの[フィールドコード]欄を確認する

Make側では、HTTPモジュールでJSONを手書きしている場合、次のようにフィールドコードをキーとして正確に一致させる必要があります。

json
{
  "app": 123,
  "record": {
    "顧客名": { "value": "山田太郎" },
    "customer_email": { "value": "yamada@example.com" }
  }
}

キー名にタイプミスがあると、kintoneはそのフィールドを「存在しないフィールド」として認識し、CB_VA01(不正なリクエスト)や GAIA_IL19(フィールドが見つからない)といったエラーコードを返します。エラーレスポンスの errors キー、または message に表示されるフィールド名と、実際のフィールドコードを1文字ずつ突き合わせて確認しましょう。

3. 【原因2】データ型(文字列・数値・日時・ドロップダウン)のミスマッチ

フィールドコードが正しくても、送信する値の「型」がkintoneの期待する形式と合っていないと400エラーになります。代表的な組み合わせミスは以下の通りです。

kintoneのフィールド種別 期待される値の形式 よくある間違い
数値 半角数字の文字列(例:"1000" カンマ区切り("1,000")や全角数字
日時 ISO8601形式(例:"2026-08-16T09:00:00Z" "2026/08/16" のようなスラッシュ区切り
ドロップダウン アプリ側で定義済みの選択肢と完全一致する文字列 選択肢にない自由記述値、末尾の空白
チェックボックス 配列(例:["A","B"] カンマ区切りの単一文字列

Makeでは前段のモジュール(Google スプレッドシートやWebhookなど)から取得した値が、そのままの形式でkintoneに渡されてしまうことがよくあります。特に日時フィールドは要注意で、Makeの日付操作関数を使って明示的にフォーマットを変換する必要があります。

text
formatDate(now; "YYYY-MM-DDTHH:mm:ssZ")

ドロップダウンやラジオボタンでは、kintone側の選択肢設定と1文字でも異なると即エラーになります。実際に返ってくるエラーはこのような形です。

json
{
  "code": "CB_VA01",
  "id": "20240816-xyz789",
  "message": "入力内容が正しくありません。",
  "errors": {
    "ステータス": {
      "messages": ["選択肢にない値が指定されています。"]
    }
  }
}

この場合は、kintoneの[アプリの設定]>[フォーム]でドロップダウンフィールドをクリックし、登録されている選択肢の文言(表記ゆれ・全角半角・末尾スペースの有無)を一つずつ確認してください。

4. 【原因3】kintone側で「必須項目」に指定されているフィールドの空欄(null)送信

3つ目の代表的な原因は、kintone側で「必須項目」に設定されているフィールドに対して、Makeから空文字・null・未マッピングの値が送信されているケースです。特にWebhookやフォームツール(Google フォームなど)と連携している場合、入力必須ではない項目がMake側で空のまま渡り、kintone側の必須設定に引っかかるパターンが頻発します。

エラーレスポンスの例は次の通りです。

json
{
  "code": "CB_VA01",
  "id": "20240816-req000111",
  "message": "入力内容が正しくありません。",
  "errors": {
    "電話番号": {
      "messages": ["必須です。"]
    }
  }
}

必須設定になっているかどうかは、以下の手順で確認できます。

  1. 対象アプリの[アプリの設定]を開く
  2. [フォーム]タブで対象フィールドをクリックする
  3. 設定パネル内の「必須項目にする」チェックボックスの状態を確認する

対処方法は2通りあります。運用上その項目が本当に必須であれば、Make側のマッピングステップで欠損時のデフォルト値を設定するか、フィルター(Filter)機能を使って値が空の場合はシナリオを分岐・停止させます。逆に、その項目を必須にする必要がないのであれば、kintone側の必須設定を外すことも検討してください。

5. 【復旧手順】Makeのモジュール設定とJSONマッピングの直し方

ここまでの原因切り分けを踏まえ、実際にMake側で修正する手順をまとめます。

手順1:エラー内容の再確認

Makeのシナリオ画面右上の[Execution history(実行履歴)]を開き、エラーが発生した実行を選択します。該当モジュールをクリックし「Error」または「Output」パネルに表示されるJSONから、errors オブジェクトのキー(=問題のフィールドコード)とメッセージ内容を控えます。

手順2:モジュール設定を開く

kintoneへの登録・更新を行っているモジュール(「Create a Record」「Update a Record」またはHTTPモジュール)をダブルクリックして設定画面を開きます。

手順3:フィールドコードとマッピング値を突き合わせる

HTTPモジュールを使っている場合は、Request contentのJSONを直接編集します。

json
{
  "app": 123,
  "record": {
    "電話番号": {
      "value": "{{formatNumber(4.PhoneNumber; 0; \"\"; \"\")}}"
    },
    "契約日": {
      "value": "{{formatDate(4.ContractDate; \"YYYY-MM-DD\")}}"
    },
    "ステータス": {
      "value": "対応中"
    }
  }
}

修正のポイントは次の3つです。第一に、フィールドコードをkintone管理画面の表記と完全一致させること。第二に、数値・日時は formatNumberformatDate などMakeの変換関数を挟んで型を明示的に揃えること。第三に、必須フィールドには ifempty() 関数などでデフォルト値を設定し、nullが渡らないようにすることです。

text
ifempty({{4.PhoneNumber}}; "未登録")

手順4:単体テスト実行で確認

修正後は、シナリオ全体を回す前に対象モジュールのみ「Run this module only」で単体実行し、400エラーが解消されたことを確認します。成功すると、Outputパネルにkintoneから返却されたレコードID(id)と revision が表示されます。

json
{
  "id": "4521",
  "revision": "1"
}

これが表示されればkintone側への登録は正常に完了しています。最後にシナリオ全体を有効化(ON)に戻し、次回の自動実行で再発しないかを1サイクル分監視してください。

6. まとめ:エラーログから対象フィールドを一瞬で特定するコツ

kintone×Makeの400エラーは、原因の9割が「フィールドコードの表記揺れ」「データ型のミスマッチ」「必須項目への空欄送信」のいずれかに集約されます。復旧を早めるコツは、エラーメッセージを読み込む前に、まずレスポンスJSONの errors キーだけを確認することです。ここに問題のフィールドコードがそのまま表示されるため、kintoneの[アプリの設定]>[フォーム]で同名のフィールドを開けば、型・必須設定・選択肢のどこに問題があるかを数分で特定できます。

日常的な予防策としては、フィールドコードを変更した際は必ずMake側のマッピングも同時に更新すること、日時・数値フィールドには変換関数を必ず挟んでおくこと、そしてテスト用アプリと本番アプリでフィールドコードが完全に一致しているかを定期的に照合することが有効です。この3点を運用ルールに組み込んでおけば、同様のエラーの再発をほぼ防ぐことができます。

関連記事

特集記事

TOP
目次