このページでは

HTTP V2 API

地域

ベースURLは、プロジェクトのデータのレジデンシーによって異なります。このページ内のすべての例では、プロジェクトがAmplitudeのEUデータセンターを利用している場合を除き、デフォルトのベースURLを使用してください。EUデータセンターを利用している場合は、この表に記載されているEU用のベースURLを使用してください。

このAPIでは、イベント取り込みのホストとしてapi2.amplitude.com(デフォルト)またはapi.eu.amplitude.com(EU)が使用されます。他のAmplitude APIでは、別のホスト名(api.amplitude.comcore.amplitude.comdata-api.amplitude.comexperiment.amplitude.comなど)が使用されます。https://analytics.amplitude.comのホスト名は、アナリティクスWebアプリ(ブラウザーUI)であり、取り込みのエンドポイントではありません。

考慮事項

HTTP V2 API を使用する際は、次の点に注意してください。

レート制限

Amplitudeは、ユーザープロパティを1時間あたり1800回以上更新する個々のユーザーを(Amplitude IDによって)レート制限します。この制限はユーザープロパティの同期に適用され、イベントの取り込みには適用されません。Amplitudeは引き続きイベントを取り込みますが、そのユーザーのユーザープロパティ更新をドロップする場合があります。

アップロード制限

無料プランをご利用のお客様の場合:

アップロードを毎秒100バッチ、毎秒1000イベントに制限してください。イベントを一括してアップロードすることもできますが、Amplitudeは1バッチあたり10件以下のイベントを送信することを推奨しています。 Amplitudeでは、1秒あたり100件以下のバッチを想定しており、1,000件/秒のイベント制限は引き続き適用されます。

グロースプランとエンタープライズプランをご利用のお客様向け:

リクエストサイズを1MB未満に抑え、リクエストあたりのイベント数を2,000未満に抑えます。これらのサイズ制限を超えると、413エラーが発生します。

大量データにより規模を拡大する必要がある場合は、device_idまたはuser_idベースで作業を分割してください。作業を分割することで、特定のdevice_iduser_idでのスロットリングによるシステム内の送信者への影響を抑えられる場合があります。プロキシサービスを使用してイベントをAmplitudeに送信する場合、クライアントへのスロットリングを十分に確認して、スパムクライアントによりシステム内での作業分割が遅れないようにしてください。

各プロジェクトのスループット上限は、HTTP API および HTTP V2 エンドポイントに対して 1 秒あたり 50,000 イベントです。 比較のために、SDK エンドポイントはプロジェクトごとに最大 150,000 件/秒のイベントをサポートしています。

パートナー統合に関する情報

Amplitudeとのイベント取り込み連携がある場合は、連携に割り当てられたパートナーIDをイベントペイロードで送信してください。

連携のパートナーIDとペイロードの例を確認するには、「イベント取り込み連携の作成」を参照してください。

デバイスIDがすべてゼロ:追跡型広告の制限が有効

iOS 10 以降、Apple はユーザーが広告追跡の制限を有効にしている場合、広告主識別子(IDFA)をすべて 0 に置き換えます。 すべてのイベントにはデバイス ID が必要であるため、Amplitude はすべてゼロのデバイス ID を廃棄し、リクエストに対してエラーを返します。

デバイス ID として IDFA を渡す場合は、まず IDFA 値を確認してください。 IDFA がすべてゼロの場合、デバイス ID に別の値を渡します(たとえば、ベンダー識別子(IDFV)など)。

Windows OS

Windows オペレーティング システムを使用している場合は、すべての単一引用符をエスケープされた二重引用符に置き換える必要がある場合があります。

文字列の字数上限

user_id、イベント、ユーザープロパティ値など、文字列値の字数上限はすべて1024文字までです。

日付値を設定する

Amplitudeでは、日付を文字列として比較するため、ISO 8601形式(YYYY-MM-DDTHH:mm:ss)を使用します。この形式を使用すると、日付を比較できます(例:'2016-01-31' > '2016-01-01')。この形式の日時値でも比較できます(例:'2017-08-07T10:09:08' > '2017-08-07T01:07:00')。

時刻値を設定する

各イベントのtimeパラメータをエポックからのミリ秒単位で送信します。 それ以外の形式(ISO 形式など)を使用すると、400 Bad Request レスポンスが発生します。

イベント重複排除

Amplitudeでは、重複したイベントの送信を防ぐために、各イベントに対してinsert_idを送信することを強く推奨しています。Amplitudeでは、過去7日以内に各アプリで、同じdevice_id(イベントにdevice_id値がある場合)において同じinsert_idを使用してイベントが送信された場合、後続のイベントは無視されます。

デバイスIDとユーザーIDの最小長

デバイスIDとユーザーIDは、5文字以上の文字列である必要があります。最小の長さは、潜在的なインスツルメンテーションの問題を防ぎます。イベントに短すぎるデバイス ID またはユーザー ID が含まれている場合、Amplitude はそのイベントから ID 値を削除します。

リクエストにmin_id_lengthオプションを渡すことで、デフォルトの最小長である 5 文字を上書きします。

イベントにdevice_idの値もuser_idの値もない場合、Amplitudeではステータス「400」でイベントが拒否されることがあります。

言語フィールド

リクエスト内のlanguageフィールドにタグが含まれている場合、Amplitudeはタグを人間にわかりやすい言語名に変更します。 たとえば、リクエストに"language": "en-US"が含まれている場合、Amplitudeは値を保存する前に、それを"language": "English"に変更します。

言語タグは大文字と小文字を区別しません。

リクエスト

POST https://api2.amplitude.com/2/httpapi

ヘッダー

Amplitude HTTP V2 APIにデータを送信するには、Content-Typeヘッダーをapplication/jsonに設定します。

ボディパラメータ

イベント配列キー

これらのキーは、JSONイベントオブジェクトで送信できます。user_idまたはdevice_idのいずれかが必要です。また、event_typeも必須です。

トップレベルのプロパティ

イベントペイロードのトップレベルに session_id のようなプロパティを含めます。そうしないと、Amplitudeは値を正しくマッピングできません。

オプション

レスポンス

Amplitudeでは、リトライロジックを実装し、イベント内でinsert_id(同じイベントの重複を排除する際に使用)を送信することを推奨しています。 リトライロジックやinsert_idを使用することで、APIが使用できない場合やリクエストが失敗した場合にイベントの損失や重複を防ぐことができます。

ログエラー

Amplitudeでは、200 以外のレスポンスをキャプチャするために独自のログを追加することをお勧めします。

200

200 OK:リアルタイムイベントのアップロードに成功しました。200 OKのレスポンスが届かない場合は、リクエストをリトライしてください。

json
{
  "code": 200,
  "events_ingested": 50,
  "payload_size_bytes": 50,
  "server_upload_time": 1396381378123
}

400

400 不正なリクエストです。 400は、無効なアップロード要求を示します。詳細については、応答を確認してください。

無効なリクエストの考えられる理由:

  • リクエスト本文は有効なJSONではありません。「Invalid JSON request body」というerrorが返されます。
  • リクエスト本文に必須フィールドがありません。 「Request missing required field」というerrorが返され、不足しているフィールドが示されます。
  • イベントのオブジェクトに無効なフィールドがあります。events_with_invalid_fieldsは、エラーを返す最初のイベントのインデックスにフィールド名をマップします。
  • 一部のデバイスはサイレント状態です。

プロパティ(JSONが無効であるか、または存在しません)

プロパティ(SilencedDeviceID)

403 (禁止されています)

403 禁止されています。 Amplitudeのウェブアプリケーションファイアウォール(WAF)がリクエストをブロックしました。

この応答の考えられる理由:

  • リクエストのヘッダー、本文、またはURI内にAmplitudeセキュリティフィルターに一致する無効な値が含まれています。
  • リクエストは、Amplitudeがリクエストを受け入れることを許可されていない制裁対象地域から送信されました。
json
{
  "code": 403,
  "error": "Forbidden"
}

プロパティ

413(ペイロードが大きすぎます)

413ペイロードが大きすぎます。ペイロードサイズが大きすぎます(要求サイズが1 MBを超えています)。イベント配列ペイロードを複数のリクエストに分割し、再度お試しください。

json
{
  "code": 413,
  "error": "Payload too large"
}

プロパティ

429(リクエスト数が多すぎます)

429リクエストが多すぎます。ユーザーまたはデバイスに対するリクエストが多すぎます。 Amplitudeは、1秒間に30イベントを超えるユーザーおよびデバイスに対するリクエストを抑制します。これは、最近の時間枠内の平均値として測定されます。 そのユーザーまたはデバイスに対するイベントの送信を30秒間一時停止してから、再試行してください。429応答がなくなるまで再試行を続行してください。

json
{
  "code": 429,
  "error": "Too many requests for some devices and users",
  "eps_threshold": 30,
  "throttled_devices": {
    "C8F9E604-F01A-4BD9-95C6-8E5357DF265D": 31
  },
  "throttled_users": {
    "datamonster@amplitude.com": 32
  },
  "throttled_events": [3, 4, 7]
}

プロパティ

サーバエラー 500、502、504

500、502、および504サーバーエラーです。Amplitudeはリクエストの処理中にエラーが発生しました。Amplitudeでは、このレスポンスを伴うリクエストを受け入れていない可能性があります。 リクエストを再試行した場合、再試行によってイベントが重複する可能性があります。 重複を回避するには、リクエストでinsert_idを送信してください。

503 サービスが利用できません

503 サービスが利用できません。 内部的なAmplitudeの問題が原因でリクエストが失敗しました。 503のレスポンスを伴うリクエストをリトライしても、イベントが重複するリスクはありません。

これは役に立ちましたか?