{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/amplitude/refs/heads/main/json-schema/http-v2-api-upload-request-body-schema.json", "title": "UploadRequestBody", "description": "UploadRequestBody schema from Amplitude HTTP V2 API", "type": "object", "properties": { "api_key": { "type": "string", "description": "The API key for the Amplitude project to which events will be sent." }, "events": { "type": "array", "description": "An array of event objects to upload. Maximum of 10 events per batch is recommended.", "maxItems": 2000, "items": { "type": "object", "required": [ "event_type" ], "properties": { "user_id": { "type": "string", "description": "A readable ID specified by you. Must have a minimum length of 5 characters unless overridden. Required unless device_id is present." }, "device_id": { "type": "string", "description": "A device-specific identifier. Required unless user_id is present." }, "event_type": { "type": "string", "description": "The name of the event being tracked." }, "time": { "type": "integer", "format": "int64", "description": "The timestamp of the event in milliseconds since epoch. If not provided, Amplitude uses the upload time." }, "event_properties": { "type": "object", "description": "A dictionary of key-value pairs representing properties of the event.", "additionalProperties": true }, "user_properties": { "type": "object", "description": "A dictionary of key-value pairs representing properties of the user. Supports set, setOnce, add, append, prepend, unset, and remove operations.", "additionalProperties": true }, "groups": { "type": "object", "description": "A dictionary of group type to group name mappings for this event.", "additionalProperties": true }, "group_properties": { "type": "object", "description": "A dictionary of key-value pairs representing properties of the group.", "additionalProperties": true }, "app_version": { "type": "string", "description": "The version of the application sending the event." }, "platform": { "type": "string", "description": "The platform of the device sending the event." }, "os_name": { "type": "string", "description": "The name of the operating system of the device." }, "os_version": { "type": "string", "description": "The version of the operating system of the device." }, "device_brand": { "type": "string", "description": "The brand of the device." }, "device_manufacturer": { "type": "string", "description": "The manufacturer of the device." }, "device_model": { "type": "string", "description": "The model of the device." }, "carrier": { "type": "string", "description": "The carrier of the device." }, "country": { "type": "string", "description": "The country of the user." }, "region": { "type": "string", "description": "The region or state of the user." }, "city": { "type": "string", "description": "The city of the user." }, "dma": { "type": "string", "description": "The designated market area of the user." }, "language": { "type": "string", "description": "The language setting of the user." }, "price": { "type": "number", "description": "The price of the item purchased in a revenue event." }, "quantity": { "type": "integer", "description": "The quantity of the item purchased in a revenue event." }, "revenue": { "type": "number", "description": "The revenue generated by the event. Use negative values for refunds." }, "productId": { "type": "string", "description": "The identifier for the product in a revenue event." }, "revenueType": { "type": "string", "description": "The type of revenue for the event, such as purchase or refund." }, "location_lat": { "type": "number", "format": "double", "description": "The latitude of the user's location." }, "location_lng": { "type": "number", "format": "double", "description": "The longitude of the user's location." }, "ip": { "type": "string", "description": "The IP address of the user. Use $remote to use the IP address from the upload request." }, "idfa": { "type": "string", "description": "The Identifier for Advertiser (iOS)." }, "idfv": { "type": "string", "description": "The Identifier for Vendor (iOS)." }, "adid": { "type": "string", "description": "The Google Play Services advertising ID (Android)." }, "android_id": { "type": "string", "description": "The Android ID (Android)." }, "event_id": { "type": "integer", "description": "An incrementing counter to distinguish events with identical user_id and timestamps." }, "session_id": { "type": "integer", "format": "int64", "description": "The start time of the session in milliseconds since epoch. Use -1 for events outside a session." }, "insert_id": { "type": "string", "description": "A unique identifier for the event used for deduplication. Amplitude deduplicates subsequent events sent with the same insert_id and device_id or user_id within the past 7 days." } } } }, "options": { "type": "object", "properties": { "min_id_length": { "type": "integer", "description": "Minimum length for user_id and device_id fields. Default is 5.", "minimum": 1 } } } }, "required": [ "api_key", "events" ] }