Amplitude identify needs api_key and identification
Not HTTP V2. Identify updates user properties. api_key is the project key. identification is a JSON object or array. Each object needs user_id or device_id. Group identify is vendor/amplitude-group-identify.
identification is required
Amplitude returns missing_event when identification is missing or empty. The 414 is GET with a URL that is too long. Use POST form in that case; pixellint still reads the same names on the query.
What this pack matches
Rules
Codes are stable. A finding in CI, MCP, or the playground lands on the same id.
| Field | Required | What it checks | Rule ids | Source |
|---|---|---|---|---|
api_key |
required | It is the project API key. Amplitude documents it as required on GET query and POST form. Fix: Send `api_key` with the Amplitude project API key. | vendor.amplitude-identify.param.api_key.missingvendor.amplitude-identify.param.api_key.empty |
docs |
identification |
required | It is a JSON identification object or array. Amplitude documents it as required. Each object needs user_id or device_id. Fix: Send `identification` as JSON with `user_id` or `device_id`. | vendor.amplitude-identify.param.identification.missingvendor.amplitude-identify.param.identification.empty |
docs |
root |
optional | Identification is an object or array of identification objects. Decoded body source: identification. Encoding: json. Native JSON type: object or array. Minimum array items: 1. | vendor.amplitude-identify.body.root.invalid |
docs |
root |
optional | Each identification is an object. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. | vendor.amplitude-identify.body.root.invalid |
docs |
user_id |
optional | The vendor documents `user_id` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.user_id.emptyvendor.amplitude-identify.body.user_id.invalid |
docs |
device_id |
optional | The vendor documents `device_id` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.device_id.emptyvendor.amplitude-identify.body.device_id.invalid |
docs |
user_properties |
optional | The vendor documents `user_properties` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. Maximum container depth: 40. | vendor.amplitude-identify.body.user_properties.invalid |
docs |
groups |
optional | Amplitude accepts at most five group types and ten total scalar or array group memberships. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. Maximum object properties: 5. Maximum member values: 10. | vendor.amplitude-identify.body.groups.invalid |
docs |
app_version |
optional | The vendor documents `app_version` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.app_version.invalid |
docs |
platform |
optional | The vendor documents `platform` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.platform.invalid |
docs |
os_name |
optional | The vendor documents `os_name` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.os_name.invalid |
docs |
os_version |
optional | The vendor documents `os_version` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.os_version.invalid |
docs |
device_brand |
optional | The vendor documents `device_brand` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.device_brand.invalid |
docs |
device_manufacturer |
optional | The vendor documents `device_manufacturer` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.device_manufacturer.invalid |
docs |
device_model |
optional | The vendor documents `device_model` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.device_model.invalid |
docs |
carrier |
optional | The vendor documents `carrier` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.carrier.invalid |
docs |
country |
optional | The vendor documents `country` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.country.invalid |
docs |
region |
optional | The vendor documents `region` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.region.invalid |
docs |
city |
optional | The vendor documents `city` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.city.invalid |
docs |
dma |
optional | The vendor documents `dma` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.dma.invalid |
docs |
language |
optional | The vendor documents `language` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.language.invalid |
docs |
paying |
optional | The vendor documents `paying` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.paying.invalid |
docs |
start_version |
optional | The vendor documents `start_version` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.start_version.invalid |
docs |
user_properties.$set |
optional | The vendor documents `user_properties.$set` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. | vendor.amplitude-identify.body.user_properties.$set.invalid |
docs |
user_properties.$setOnce |
optional | The vendor documents `user_properties.$setOnce` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. | vendor.amplitude-identify.body.user_properties.$setOnce.invalid |
docs |
user_properties.$add |
optional | The vendor documents `user_properties.$add` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. | vendor.amplitude-identify.body.user_properties.$add.invalid |
docs |
user_properties.$append |
optional | The vendor documents `user_properties.$append` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. | vendor.amplitude-identify.body.user_properties.$append.invalid |
docs |
user_properties.$prepend |
optional | The vendor documents `user_properties.$prepend` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. | vendor.amplitude-identify.body.user_properties.$prepend.invalid |
docs |
user_properties.$unset |
optional | The vendor documents `user_properties.$unset` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. | vendor.amplitude-identify.body.user_properties.$unset.invalid |
docs |
user_properties.$preInsert |
optional | The vendor documents `user_properties.$preInsert` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. | vendor.amplitude-identify.body.user_properties.$preInsert.invalid |
docs |
user_properties.$postInsert |
optional | The vendor documents `user_properties.$postInsert` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. | vendor.amplitude-identify.body.user_properties.$postInsert.invalid |
docs |
user_properties.$remove |
optional | The vendor documents `user_properties.$remove` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. | vendor.amplitude-identify.body.user_properties.$remove.invalid |
docs |
user_properties.$add.number… |
optional | The vendor documents `user_properties.$add.number` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: number. | vendor.amplitude-identify.body.user_properties.$add.number.invalid |
docs |
groups.* |
optional | A group name is a string or an array of strings. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string or array. | vendor.amplitude-identify.body.groups.*.invalid |
docs |
groups.*[] |
optional | Every array-valued group name is a string. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. | vendor.amplitude-identify.body.groups.*[].invalid |
docs |
direct_property… |
forbidden | When any operation is used, direct properties must be placed inside $set. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Applies when {"kind":"any","conditions":[{"kind":"present","param":"user_properties.$set"},{"kind":"present","param":"user_properties.$setOnce"},{"kind":"present","param":"user_properties.$add"},{"kind":"present","param":"user_properties.$append"},{"kind":"present","param":"user_properties.$prepend"},{"kind":"present","param":"user_properties.$unset"},{"kind":"present","param":"user_properties.$preInsert"},{"kind":"present","param":"user_properties.$postInsert"},{"kind":"present","param":"user_properties.$remove"}]}. | vendor.amplitude-identify.body.direct_property.forbidden |
docs |
body.user_or_device_required |
required | The request does not satisfy the documented user or device required requirement. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. | vendor.amplitude-identify.body.user_or_device_required |
docs |
method |
required | Use a published Identify transport. Complete HTTP capture contract. Native JSON type: string. | vendor.amplitude-identify.http.method.missingvendor.amplitude-identify.http.method.emptyvendor.amplitude-identify.http.method.invalid |
docs |
content_type |
required | POST Identify uses form fields rather than a native JSON request body. Complete HTTP capture contract. Applies when {"kind":"value_in","param":"method","values":["POST"]}. Native JSON type: string. | vendor.amplitude-identify.http.content_type.missingvendor.amplitude-identify.http.content_type.emptyvendor.amplitude-identify.http.content_type.invalid |
docs |
Validate a payload
pixellint validate url "$ARTIFACT" --rulepack vendor/amplitude-identify
Try this failing payload in the playground. Amplitude identify missing api_key.
https://api2.amplitude.com/identify?identification=%5B%7B%22user_id%22%3A%22user-13793%22%7D%5D
cargo install pixellint
·
npm install pixellint