Taxonomy API
Regions
The base URL depends on your project's data residency. In all examples on this page, use the default base URL unless your project uses Amplitude's EU data center—in that case use the EU base URL in this table.
Requests go to https://amplitude.com (default) or https://analytics.eu.amplitude.com (EU). The https://analytics.amplitude.com hostname is the Analytics web app (browser UI); use the hosts in this table for REST requests, not analytics.amplitude.com.
| Data residency | Base URL |
|---|---|
| Default | https://amplitude.com |
| EU | https://analytics.eu.amplitude.com |
Considerations
- You may have to URL encode special characters in the names of event types, event properties, and user properties. For example, encode
Play SongasPlay%20Song. Refer to the W3Schools encoding reference. - In responses, custom user properties have a
gp:prefix. For example,gp:my_custom_property. - You must plan events or properties in the schema before you can delete them through this API.
Limits
Each endpoint has a concurrent limit and a rate limit. The concurrent limit restricts how many requests you can run at the same time. The rate limit restricts the total number of queries per hour.
Limits are per project. Exceeding any limit returns a 429 error.
The endpoints use a cost per query model. Max costs per API key:
- Concurrent Cost Limit: Run queries that collectively add up to 4 cost at the same time.
- Period Cost Limit: Run up to 7200 cost per hour.
Cost structure of each endpoint:
- GET: 1 cost
- PUT: 2 cost
- POST: 2 cost
- DELETE: 2 cost
Event category
Event categories are a way to organize your event types into broad groups.
To track how users register for your app, checkout, and interact with the onboarding experience, group your events using these event categories:
- Registration
- Checkout
- Onboarding
Create event category
Create an event category in your project.
POST /api/2/taxonomy/category
curl --location --request POST 'https://amplitude.com/api/2/taxonomy/category' \
--header 'Authorization: Basic {api-key}:{secret-key}' \ #credentials must be base64 encoded
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'category_name=CATEGORY_NAME'
Body parameters
| Name | Description |
|---|---|
category_name | Required. Name of the category. |
Response
A successful request returns a 200 OK response with a JSON body:
{
"success": true
}
A failed request sends an error message with more information:
{
"success": false,
"errors": [
{
"message": "error info"
}
]
}
Get all event categories
Get all event categories in your project.
GET https://amplitude.com/api/2/taxonomy/category
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/category' \
-u '{api_key}:{secret_key}'
Response
A successful request returns a 200 OK status with a JSON body:
{
"success": true,
"data": [
{
"id": 412931,
"name": "Attribution"
},
{
"id": 412941,
"name": "Conversion"
}
]
}
A failed request returns a 400 Bad Request response with more information.
{
"success": false,
"errors": [
{
"message": "Not found"
}
]
}
Get an event category
Get the ID of an event category in your project by sending a GET request with the category name.
GET https://amplitude.com/api/2/taxonomy/category/:category_name
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/category/:category_name' \
-u '{api_key}:{secret_key}'
Path parameters
| Name | Description |
|---|---|
category_name | Required. The name of the category |
Response
A successful request returns a 200 OK status and a JSON body with the category's data:
{
"success": true,
"data": {
"id": 412941,
"name": "Conversion"
}
}
A failed request returns a 400 Bad Request status with more information about the error.
{
"success": false,
"errors": [
{
"message": "Not found"
}
]
}
Update an event category
Update the name of an event category by sending a PUT request with the category ID and a new name in the body.
PUT https://amplitude.com/api/2/taxonomy/category/:category_id
curl --location --request PUT 'https://amplitude.com/api/2/taxonomy/category/CATEGORY_ID' \
-u '{api_key}:{secret_key}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'category_name=NEW_NAME'
Path parameters
| Name | Description |
|---|---|
category_id | Required. The ID of the category |
Body parameters
| Name | Description |
|---|---|
category_name | Required. The new name of the category |
200 ok response
A successful request returns a 200 OK status and a JSON body.
{
"success": true
}
409 conflict response
If there is a problem with your request, the request returns a 409 Conflict status, and a JSON body with more information.
{
"success": false,
"errors": [
{
"message": "Attempted to operate on entity event_category, id \"4129\", that does not exist."
}
]
}
Delete an event category
Delete an event category by sending a DELETE request with the category ID.
DELETE https://amplitude.com/api/2/taxonomy/category/:category_id
curl --location --request DELETE 'https://amplitude.com/api/2/taxonomy/category/:category_id' \
-u '{api_key}:{secret_key}'
Path parameters
| Name | Description |
|---|---|
category_id | Required. The ID of the category |
200 ok response
A successful request returns a 200 OK status and a JSON body.
{
"success": true
}
409 conflict response
If there is a problem with your request, the request returns a 409 Conflict status, and a JSON body with more information.
{
"success": false,
"errors": [
{
"message": "Attempted to operate on entity event_category, id \"412941\", that does not exist."
}
]
}
Event type
An event is any action a user can take, like start game or add to cart, or any activity associated with a user, like in-app notifications or push notifications.
Use the Taxonomy API to create, get, update, delete, and restore event types.
Create an event type
Create an event type by sending a POST request to https://amplitude.com/api/2/taxonomy/event with parameters in the body.
Initialize the schema before you add event types through the API.
curl --location --request POST 'https://amplitude.com/api/2/taxonomy/event' \
-u '{api_key}:{secret_key}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'event_type=EVENT_TYPE' \
--data-urlencode 'category=CATEGORY_NAME' \
--data-urlencode 'description=DESCRIPTION'
Body parameters
| Name | Description |
|---|---|
event_type | Required. String. The event name. |
category | Optional. String. The event type's category. |
description | Optional. String. Details about the event type. |
is_active | Optional. Boolean. Activity of the event type. |
is_hidden_from_dropdowns | Optional. Boolean. Event type is hidden from dropdowns. |
is_hidden_from_persona_results | Optional. Boolean. Event type is hidden from persona results. |
is_hidden_from_pathfinder | Optional. Boolean. Event type is hidden from pathfinder. |
is_hidden_from_timeline | Optional. Boolean. Event type is hidden from timeline. |
tags | Optional. String. List of tags, separated by a comma. |
owner | Optional. String. Owner of the event type. |
is_hidden_from_dropdowns, is_hidden_from_persona_results, is_hidden_from_pathfinder and is_hidden_from_timeline properties can only be set on ingested event types.
200 ok response
A successful request returns a 200 OK response with a JSON body:
{
"success": true
}
409 conflict response
A failed request returns a 409 Conflict status with an error message.
{
"success": false,
"errors": [
{
"message": "error info"
}
]
}
Get all event types
Retrieves all event types in a project. This request has no required parameters.
GET https://amplitude.com/api/2/taxonomy/event
Hidden events (those with a visibility other than "Visible") don't appear in the response.
By default, the response excludes deleted events. To include them, add the showDeleted query parameter:
GET https://amplitude.com/api/2/taxonomy/event?showDeleted=true
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/event' \
-u '{api_key}:{secret_key}'
200 OK response
A successful request returns a 200 OK status with a JSON body:
{
"success": true,
"data": [
{
"event_type": "Attribution",
"category": {
"name": "Attribution Events"
},
"description": null,
"display_name": null,
"is_active": false,
"is_hidden_from_dropdowns": false,
"is_hidden_from_persona_results": false,
"is_hidden_from_pathfinder": false,
"is_hidden_from_timeline": false,
"tags": [],
"owner": null
},
{
"event_type": "Conversation",
"category": {
"name": "Conversion Events"
},
"description": "This event is fired when a user converts.",
"display_name": "User Conversion",
"is_active": false,
"is_hidden_from_dropdowns": false,
"is_hidden_from_persona_results": false,
"is_hidden_from_pathfinder": false,
"is_hidden_from_timeline": false,
"tags": [],
"owner": null
}
]
}
Get an event type
Get a single event type by name. Send a GET request with the event name.
GET https://amplitude.com/api/2/taxonomy/event/:event_type
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/event:event_type' \
-u '{api_key}:{secret_key}'
Path parameters
| Name | Description |
|---|---|
event_type | Required. String. The event name. |
200 OK response
A successful request returns a 200 OK status and a JSON body with the event type's data:
{
"success": true,
"data": {
"event_type": "Event 2",
"category": {
"name": "Conversion Events"
},
"description": null,
"display_name": null,
"is_active": false,
"is_hidden_from_dropdowns": false,
"is_hidden_from_persona_results": false,
"is_hidden_from_pathfinder": false,
"is_hidden_from_timeline": false,
"tags": [],
"owner": null
}
}
400 Bad Request response
A failed request returns a 400 Bad Request status with more information about the error.
{
"success": false,
"errors": [
{
"message": "Not found"
}
]
}
Update an event type
Update an event type by sending a PUT request with the event type name.
PUT https://amplitude.com/api/2/taxonomy/event/:event_type
curl --location --request PUT 'https://amplitude.com/api/2/taxonomy/event/EVENT_TYPE_NAME' \
-u '{api_key}:{secret_key}'
--data-urlencode 'category=NEW_CATEGORY_NAME' \
--data-urlencode 'display_name=NEW_EVENT_TYPE_DISPLAY_NAME'
Path parameters
| Name | Description |
|---|---|
event_type | Required. String. The event name. |
Body parameters
| Name | Description |
|---|---|
new_event_type | Optional. String. The event type's new name. |
category | Optional. Current category name of the event type. |
description | Optional. String. Details to add to the event type. |
display_name | Optional. String. Display name of an event type. You can update the display name for an event type after it's ingested into Amplitude. |
is_active | Optional. Boolean. Activity of the event type. |
is_hidden_from_dropdowns | Optional. Boolean. Event type is hidden from dropdowns. |
is_hidden_from_persona_results | Optional. Boolean. Event type is hidden from persona results. |
is_hidden_from_pathfinder | Optional. Boolean. Event type is hidden from pathfinder. |
is_hidden_from_timeline | Optional. Boolean. Event type is hidden from timeline. |
tags | Optional. String. List of tags, separated by a comma. |
owner | Optional. String. Owner of the event type. |
is_hidden_from_dropdowns, is_hidden_from_persona_results, is_hidden_from_pathfinder and is_hidden_from_timeline properties can only be set on ingested event types.
200 OK response
A successful request returns a 200 OK status and a JSON body.
{
"success": true
}
409 conflict response
If there is a problem with your request, the request returns a 409 Conflict status, and a JSON body with more information.
{
"success": false,
"errors": [
{
"message": "Attempted to change the event display name for event \"Event\", but the event is not in schema."
}
]
}
Delete an event type
Delete an event type by sending a DELETE request with the event type name as a path parameter.
DELETE https://amplitude.com/api/2/taxonomy/event/:event_type
curl --location --request DELETE 'https://amplitude.com/api/2/taxonomy/event/EVENT_TYPE'
-u '{api_key}:{secret_key}'
Path parameters
| Name | Description |
|---|---|
event_type | Required. The name of the event type. |
Behavior
| Event type | Behavior in Amplitude |
|---|---|
live | Marks the event as deleted |
unexpected | Adds the event to the tracking plan, then marks it as deleted |
planned | Removes the event from the tracking plan |
transformed | Returns an error because transformed event types aren't deletable |
deleted or not found | Returns an error |
200 OK response
A successful request returns a 200 OK status and a JSON body.
{
"success": true
}
4XX responses
If there's a problem with the request, Amplitude returns a 4XX status, and a JSON body with more information.
{
"success": false,
"errors": [
{
"message": "Not found"
}
]
}
Restore an event type
Restore an event type by sending a POST request with the event type name as a path parameter.
POST https://amplitude.com/api/2/taxonomy/event/:event_type/restore
curl --location --request POST 'https://amplitude.com/api/2/taxonomy/event/EVENT_TYPE/restore'
-u '{api_key}:{secret_key}'
Path parameters
| Name | Description |
|---|---|
event_type | Required. The name of the event type. |
Behavior
| Event type | Behavior in Amplitude |
|---|---|
deleted | Restores the event |
not deleted or not found | Returns an error |
200 OK response
A successful request returns a 200 OK status and a JSON body.
{
"success": true
}
4XX responses
If there's a problem with your request, Amplitude returns a 4XX status, and a JSON body with more information.
{
"success": false,
"errors": [
{
"message": "Not found"
}
]
}
Event property
Event properties describe the attributes of an event. For example, if Swipe is an event that you track, the event property Direction could have the values Left or Right.
Create an event property
Create an event property by sending a POST request with the required information in the body.
POST https://amplitude.com/api/2/taxonomy/event-property
curl --location --request POST 'https://amplitude.com/api/2/taxonomy/event-property' \
-u '{api_key}:{secret_key}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'event_type=EVENT_TYPE' \
--data-urlencode 'event_property=EVENT_PROPERTY' \
Body parameters
| Name | Description |
|---|---|
event_property | Required. String. Name of the event property. |
event_type | Optional. String. Name of the event type the event property belongs to. If the event property already exists on this event type, Amplitude returns a 409 Conflict error. If the event property exists but not on this event type, Amplitude creates an override for the property. If the event property doesn't exist anywhere, Amplitude doesn't create an override. |
description | Optional. String. The event property's description. |
type | Optional. String. The event property's data type. Acceptable values are string, number, boolean, enum, and any |
regex | Optional. String. Regular expression, custom regex used for pattern matching or more complex values. For example, property zip code must have pattern [0-9]{5} Applies only to the string type. |
enum_values | Optional. String. List of allowed values, separated by comma. For example: red, yellow, blue. Only applicable to the enum type. |
is_array_type | Optional. Boolean. Use the type parameter to set the type of array elements. |
is_required | Optional. Boolean. Marks the property as required. When true, Amplitude flags events that are missing this property on the Taxonomy page in the web app. |
is_hidden | Optional. Boolean. Hide the property from chart dropdowns. |
classifications | Optional. String. List of classifications applicable to this event property. Valid classifications are PII, SENSITIVE and REVENUE. You can only apply classifications on shared properties. Trying to set classifications on an overridden property results in an error. |
is_hidden property can only be set on ingested properties.
200 OK response
A successful request returns a 200 OK status and a JSON body.
{
"success": true
}
409 conflict response
If there is a problem with your request, the request returns a 409 Conflict status, and a JSON body with more information.
{
"success": false,
"errors": [
{
"message": "Attempted to add an event property, \"Completed Task\" for event \"Onboard Start\", that already exists."
}
]
}
Get event properties
Get shared or event-specific event properties.
GET https://amplitude.com/api/2/taxonomy/event-property
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/event-property' \
-u '{api_key}:{secret_key}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'event_type=EVENT_NAME'
Body parameters
| Name | Description |
|---|---|
event_type | Required. Name of the event type the event properties belong to. If event_type is present, Amplitude returns all event properties associated with this event type. If event_type isn't present, Amplitude returns all shared event properties in your tracking plan. |
200 OK response
A successful request returns a 200 OK status and a JSON body with a list of event properties and their data.
{
"success": true,
"data": [
{
"event_property": "Completed Task",
"event_type": "Onboard Start",
"description": "User completed a task during onboarding.",
"type": "boolean",
"regex": null,
"enum_values": null,
"is_array_type": false,
"is_required": false,
"is_hidden": false,
"classifications": ["PII"]
},
{
"event_property": "Completed Tutorial",
"event_type": "Onboard Start",
"description": "",
"type": "any",
"regex": null,
"enum_values": null,
"is_array_type": false,
"is_required": false,
"is_hidden": false,
"classifications": []
}
]
}
Get a single event property
Get a single event property. Send a GET request with the event property name as a path parameter and, optionally, the event name in the body.
GET https://amplitude.com/api/2/taxonomy/event-property
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/event-property?event_property=EVENT_PROPERTY' \
-u '{api_key}:{secret_key}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'event_type=EVENT_NAME'
Path parameters
| Name | Description |
|---|---|
event_property | Required. The event property name. |
Body parameter
| Name | Description |
|---|---|
event_type | Optional. Name of the event type the event properties belong to. If event_type is present, Amplitude returns all event properties associated with this event type. If event_type isn't present, Amplitude returns all shared properties in your tracking plan. |
200 OK response
A successful request returns a 200 OK status and a JSON body containing information about the event property.
{
"success": true,
"data": {
"event_property": "Shared",
"event_type": "Onboard Finish",
"description": "Whether user shared content.",
"type": "boolean",
"regex": null,
"enum_values": null,
"is_array_type": false,
"is_required": false,
"is_hidden": false,
"classifications": ["PII"]
}
}
400 Bad Request response
If Amplitude can't find the event property, or you configure the request incorrectly, it returns a 400 Bad Request response and an error message.
{
"success": false,
"errors": [
{
"message": "Not found"
}
]
}
Update event property
Update an event property by sending a PUT request with the event property name as a path parameter.
PUT https://amplitude.com/api/2/taxonomy/event-property/:event-property
curl --location --request PUT 'https://amplitude.com/api/2/taxonomy/event-property/EVENT_PROPERTY' \
-u '{api_key}:{secret_key}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'event_type=EVENT_NAME' \
Path parameters
| Name | Description |
|---|---|
event-property | Required. Name of the event property. |
Body parameters
| Name | Description |
|---|---|
event_type | Optional. Name of the event type the event properties belong to. If the event property already exists on this event type, Amplitude returns a 409 Conflict error. If the event property exists but not on this event type, Amplitude creates an override for the property. If the event property doesn't exist anywhere, Amplitude doesn't create an override. |
overrideScope | Optional. Determines how Amplitude acts on this event property. Only applicable when event_type is present. If overrideScope isn't present, Amplitude updates the property override on the event if one exists, or the shared property if no override exists. With overrideScope: "override", Amplitude creates an override if none exists on the event, then updates that override, or updates the existing override if one already exists. With overrideScope: "shared", Amplitude removes the property override on the event if one exists, then updates the shared property, or updates the shared property if no override exists. |
description | Optional. String. The event property's description. |
new_event_property_value | Optional. String. The new name of the event property. |
type | Optional. String. The event property's data type. Acceptable values are string, number, boolean, enum, and any |
regex | Optional. String. Regular expression, custom regex used for pattern matching or more complex values. For example, property zip code must have pattern [0-9]{5} |
enum_values | Optional. String. List of allowed values. |
is_array_type | Optional. Boolean. Specifies whether the property value is an array. |
is_required | Optional. Boolean. Marks the property as required. |
is_hidden | Optional. Boolean. Hide the property from chart dropdowns. |
classifications | Optional. String. Only available if Data Access Controls is enabled at the account level. List of classifications applicable to this event property. Valid classifications are PII, SENSITIVE, and REVENUE. You can only apply classifications on shared properties. Setting classifications on an overridden property returns an error. Setting overrideScope: "override" also returns an error for the same reason. |
is_hidden property can only be set on ingested properties.
200 OK response
A successful request returns a 200 OK status and a JSON body.
{
"success": true
}
409 conflict response
Some failed requests return a 409 Conflict and an error message with more details.
{
"success": false,
"errors": [
{
"message": "Attempted to change the event property description for property \"Completed Task\" for event \"\", but the property is not in schema."
}
]
}
Delete an event property
Delete an event property by sending a DELETE request with the event property as a path parameter. Optionally include the event type in the request body.
DELETE https://amplitude.com/api/2/taxonomy/event-property/:event-property
curl --location --request DELETE 'https://amplitude.com/api/2/taxonomy/event-property/EVENT_PROPERTY' \
--header 'Authorization: Basic {api-key}:{secret-key}' # credentials must be base64 encoded \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'event_type=EVENT_NAME'
Path parameters
| Name | Description |
|---|---|
event_property | Required. The event property name. |
Body parameter
| Name | Description |
|---|---|
event_type | Optional. Name of the event type the event properties belong to. |
Behavior
If the event type is available:
| Event property | Behavior in Amplitude |
|---|---|
exists | Removes it from the event type |
does not exist | Returns an error |
If the event type isn't available, Amplitude operates on the global event property.
| Event property | Behavior in Amplitude |
|---|---|
live | Marks the event property as deleted |
unexpected | Adds the event property to the tracking plan, and marks it as deleted |
planned | Removes the event property from the tracking plan |
transformed | Returns an error because transformed event properties aren't deletable |
deleted or not found | Returns an error. |
200 OK response
A successful request returns a 200 OK status and a JSON body.
{
"success": true
}
Restore an event property
Restore an event property by sending a POST request with the event property as a path parameter.
POST https://amplitude.com/api/2/taxonomy/event-property/:event-property/restore
curl --location --request POST 'https://amplitude.com/api/2/taxonomy/event-property/EVENT_PROPERTY/restore' \
--header 'Authorization: Basic {api-key}:{secret-key}' # credentials must be base64 encoded
Path parameters
| Name | Description |
|---|---|
event_property | Required. The event property name. |
Body parameters
| Name | Description |
|---|---|
event_type | Optional. String. The name of the event type. When included, restores the event property for the specified event type. When omitted, restores the shared event property. |
Behavior
| Event property | Behavior in Amplitude |
|---|---|
deleted | Restores the event property |
not deleted or not found | Returns an error |
Deleted properties and the GET endpoint
The Get event properties endpoint doesn't return deleted properties. If you try to create an event property that exists but is deleted, the Create event property endpoint returns a 409 Conflict error indicating the property already exists. To work with deleted properties:
- Use the restore endpoint to restore a deleted property.
- Check for
409 Conflicterrors when creating properties. The error may indicate the property exists but is deleted.
201 OK response
A successful request returns a 201 OK status and a JSON body.
{
"success": true
}
User property
User properties reflect traits about the individuals using your product.
Create a user property
Create a user property by sending a POST request with the user property name in the body.
POST https://amplitude.com/api/2/taxonomy/user-property/
curl --location --request POST 'https://amplitude.com/api/2/taxonomy/user-property' \
--header 'Authorization: Basic {api-key}:{secret-key}' # credentials must be base64 encoded \
--data-urlencode 'user_property=USER_PROPERTY' \
Body parameter
| Name | Description |
|---|---|
user_property | Required. String. Name of the user property type. |
description | Optional. String. Details to add to the user property type. |
type | Optional. String. The user property's data type. Acceptable values are string, number, boolean, enum, and any. |
regex | Optional. String. Regular expression or custom regex used for pattern matching and more complex values. For example, 'zip code' property must have pattern [0-9]{5}. |
enum_values | Optional. String. List of allowed values, separated by comma. For example: red, yellow, blue. |
is_array_type | Optional. Boolean. Specifies whether the property value is an array. |
is_hidden | Optional. Boolean. Hide the property from chart dropdowns. |
classifications | Optional. String. Only available if Data Access Controls is enabled at the account level. List of classifications applicable to this user property. Valid classifications are PII, SENSITIVE and REVENUE. |
is_hidden property can only be set on ingested properties.
Response
This request returns either a true or false response.
{
"success": true
}
{
"success": false
}
Get all user properties
Retrieves all user properties in your account. The request has no required parameters.
GET https://amplitude.com/api/2/taxonomy/user-property
Hidden user properties (those with a visibility other than "Visible") don't appear in the response.
By default, this endpoint excludes deleted user properties. To include them, add the showDeleted query parameter:
GET https://amplitude.com/api/2/taxonomy/user-property?showDeleted=true
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/user-property' \
-u '{api_key}:{secret_key}''
Response
A successful request returns a 200 OK response and a JSON body with user property details.
{
"success": true,
"data": [
{
"user_property": "device_id",
"description": null,
"type": null,
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": ["PII"],
"deleted": false
},
{
"user_property": "event_id",
"description": null,
"type": null,
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": [],
"deleted": false
},
{
"user_property": "amplitude_id",
"description": null,
"type": null,
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": [],
"deleted": false
},
{
"user_property": "location_lat",
"description": null,
"type": null,
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": [],
"deleted": false
},
{
"user_property": "location_lng",
"description": null,
"type": null,
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": [],
"deleted": false
},
{
"user_property": "server_upload_time",
"description": null,
"type": null,
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": [],
"deleted": false
},
{
"user_property": "session_id",
"description": null,
"type": null,
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": [],
"deleted": false
},
{
"user_property": "user_id",
"description": null,
"type": null,
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": [],
"deleted": false
}
]
}
Get a user property
Retrieves a single user property by name.
GET https://amplitude.com/api/2/taxonomy/user-property/:user_property
By default, this endpoint excludes deleted user properties. To include them, add the showDeleted query parameter:
GET https://amplitude.com/api/2/taxonomy/user-property/:user_property?showDeleted=true
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/user-property/USER_PROPERTY' \
-u '{api_key}:{secret_key}'
Path parameters
| Name | Description |
|---|---|
user_property | Required. The user property name. Prefix custom user properties with gp:. |
200 OK response
A successful request returns a 200 OK response and a JSON body with user property details.
{
"success": true,
"data": {
"user_property": "device_id",
"description": null,
"type": null,
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": ["PII"],
"deleted": false
}
}
404 Bad Request response
A failed request returns a 404 Bad Request status and an error message.
{
"success": false,
"errors": [
{
"message": "Not found"
}
]
}
The Taxonomy API requires an Enterprise plan account. If your subscription doesn't qualify, the call results in a 404 Bad Request response.
Update a user property
Update a user property by sending a PUT request with the user property name as a path parameter.
PUT https://amplitude.com/api/2/taxonomy/user-property/:user_property
curl --location --request PUT 'https://amplitude.com/api/2/taxonomy/user-property/USER_PROPERTY' \
-u '{api_key}:{secret_key}'
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'new_user_property_value=VALUE' \
--data-urlencode 'description=DESCRIPTION'
Path parameters
| Name | Description |
|---|---|
user_property | Required. The user property name. Prefix custom user properties with gp:. |
Body parameters
| Name | Description |
|---|---|
new_user_property_value | Optional. String. New name of the user property type. |
description | Optional. String. Details to add to the user property type. |
type | Optional. String. The user property's data type. Acceptable values are string, number, boolean, enum, and any. |
regex | Optional. String. Regular expression or custom regex used for pattern matching and more complex values. For example, 'zip code' property must have pattern [0-9]{5}. Only applicable to the string type. |
enum_values | Optional. String. List of allowed values, separated by comma. For example: red, yellow, blue. Only applicable to the enum type. |
is_array_type | Optional. Boolean. Specifies whether the property value is an array. Use the type parameter to set the type of array elements. |
is_hidden | Optional. Boolean. Hide the property from chart dropdowns. |
classifications | Optional. String. Only available if Data Access Controls is enabled at the account level. List of classifications applicable to this user property. Valid classifications are PII, SENSITIVE and REVENUE. |
is_hidden property can only be set on ingested properties.
Response
This request returns either a true or false response.
{
"success": true
}
{
"success": false
}
Delete a user property
Deletes a single user property by name.
DELETE https://amplitude.com/api/2/taxonomy/user-property/USER_PROPERTY
curl --location --request DELETE 'https://amplitude.com/api/2/taxonomy/user-property/USER_PROPERTY' \
-u '{api_key}:{secret_key}'
Path parameters
| Name | Description |
|---|---|
user_property | Required. The user property name. Prefix custom user properties with gp:. |
Behavior
| User property | Behavior in Amplitude |
|---|---|
live | Marks the user property as deleted |
unexpected | Adds the user property to the tracking plan, and marks it as deleted |
planned | Removes the user property from the tracking plan |
transformed | Returns an error. Transformed user properties aren't deletable |
Amplitude User Property | Returns an error. Amplitude user properties aren't deletable |
deleted or not found | Returns an error |
200 OK response
A successful request returns a 200 OK response and a JSON message.
{
"success": true
}
Restore a user property
Restore a single user property by name.
POST https://amplitude.com/api/2/taxonomy/user-property/USER_PROPERTY/restore
curl --location --request POST 'https://amplitude.com/api/2/taxonomy/user-property/USER_PROPERTY/restore' \
-u '{api_key}:{secret_key}'
Path parameters
| Name | Description |
|---|---|
user_property | Required. The user property name. Prefix custom user properties with gp:. |
Behavior
| User property | Behavior in Amplitude |
|---|---|
deleted | Restores the user property |
not deleted or not found | Returns an error |
200 OK response
A successful request returns a 200 OK response and a JSON message.
{
"success": true
}
Group property
Group properties are properties at the account level. Group properties apply to all users who belong to that account.
Create a group property
Create a group property by sending a POST request with the required information in the body.
POST https://amplitude.com/api/2/taxonomy/group-property
curl --location --request POST 'https://amplitude.com/api/2/taxonomy/group-property' \
-u '{api_key}:{secret_key}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'group_type=GROUP_TYPE' \
--data-urlencode 'group_property=GROUP_PROPERTY' \
Body parameters
| Name | Description |
|---|---|
group_property | Required. String. Name of the group property. Prefix custom group properties with grp:. |
group_type | Optional. String. Name of the group type the group property belongs to. If the group type doesn't exist, Amplitude returns a 404 Not Found error. If the group property already exists on this group type, Amplitude returns a 409 Conflict error. If the group property exists but not on this group type, Amplitude creates an override for the property. If the group property doesn't exist anywhere, Amplitude doesn't create an override. If the group property exists and is Amplitude-sourced, providing any extra arguments other than group_property and group_type returns an error because Amplitude-sourced group properties aren't editable. |
description | Optional. String. The group property's description. |
type | Optional. String. Data type of the group property. It must be one of any (default), string (default if array type is true), number, boolean, enum |
regex | Optional. String. Regular expression, custom regex used for pattern matching or more complex values. For example, property zip code must have pattern [0-9]{5} Applies only to the string type. |
enum_values | Optional. String. List of allowed values, separated by comma. For example: red, yellow, blue. Only applicable to the enum type. |
is_array_type | Optional. Boolean. Property is an array type. Use the type parameter to set the type of array elements. |
is_hidden | Optional. Boolean. Hide the property from chart dropdowns. |
classifications | Optional. String. Only available if Data Access Controls is enabled at the account level. List of classifications applicable to this group property. Valid classifications are PII, SENSITIVE and REVENUE. You can only apply classifications on shared properties, and trying to set classifications on an overridden property results in an error. |
is_hidden property can only be set on ingested properties.
200 OK response
A successful request returns a 200 OK status and a JSON body.
{
"success": true
}
409 conflict response
If there's a problem with your request, the request returns a 409 Conflict status and a JSON body with more information.
{
"success": false,
"errors": [
{
"message": "Attempted to add a group property, \"Group Property 1\", that already exists."
}
]
}
Get group properties
Get shared or group-specific group properties.
GET https://amplitude.com/api/2/taxonomy/group-property
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/group-property' \
-u '{api_key}:{secret_key}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'group_type=GROUP_TYPE'
Body parameters
| Name | Description |
|---|---|
group_type | Optional. Name of the group type. If group_type is present, Amplitude returns all group properties associated with this group type. If group_type isn't present, Amplitude returns all shared group properties in your tracking plan. |
200 OK response
A successful request returns a 200 OK status and a JSON body with a list of group properties and their data.
{
"success": true,
"data": [
{
"group_type": "Group 1",
"group_property": "grp:Group Property 1",
"description": "First Group Property",
"type": "string",
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": ["PII"]
},
{
"group_type": "Group 1",
"group_property": "grp:Group Property 2",
"description": "Second Group Property",
"type": "string",
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": []
}
]
}
Get a single group property
Get a single group property by sending a GET request with the group property name as a path parameter. Optionally include the group type in the body.
GET https://amplitude.com/api/2/taxonomy/group-property/:group_property
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/group-property/GROUP_PROPERTY' \
-u '{api_key}:{secret_key}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'group_type=GROUP_TYPE'
Path parameters
| Name | Description |
|---|---|
group_property | Required. The group property name. Prefix custom group properties with grp:. |
Query or Body parameter
| Name | Description |
|---|---|
group_type | Optional. Name of the group type. If group_type is provided, Amplitude returns all group properties associated with this group type. If group_type isn't provided, Amplitude returns all shared group properties in your tracking plan. |
200 OK response
A successful request returns a 200 OK status and a JSON body containing information about the group property.
{
"success": true,
"data": {
"group_type": "Group 1",
"group_property": "grp:Group Property 1",
"description": "First Group Property",
"type": "string",
"enum_values": null,
"regex": null,
"is_array_type": false,
"is_hidden": false,
"classifications": ["PII"]
}
}
400 Bad Request response
If Amplitude can't find the group property, or you configure the request incorrectly, it returns a 400 Bad Request response and an error message.
{
"success": false,
"errors": [
{
"message": "Not found"
}
]
}
Update group property
Update a group property by sending a PUT request with the group property name as a path parameter.
PUT https://amplitude.com/api/2/taxonomy/group-property/:group_property
curl --location --request PUT 'https://amplitude.com/api/2/taxonomy/group-property/GROUP_PROPERTY' \
-u '{api_key}:{secret_key}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'group_type=GROUP_TYPE' \
Path parameters
| Name | Description |
|---|---|
group_property | Required. Name of the group property. Prefix custom group properties with grp:. Amplitude-sourced group properties (names without the grp: prefix) aren't editable. |
Body parameters
| Name | Description |
|---|---|
group_type | Optional. Name of the group type the group property belongs to. If the group type doesn't exist, Amplitude returns a 404 Not Found error. |
overrideScope | Optional. Determines how Amplitude acts on this group property. Only applicable when group_type is present. If overrideScope isn't present, Amplitude updates the property override on the group type if one exists, or the shared property if no override exists. With overrideScope: "override", Amplitude creates an override if none exists on the group type, then updates that override, or updates the existing override if one already exists. With overrideScope: "shared", Amplitude removes the property override on the group type if one exists, then updates the shared property, or updates the shared property if no override exists. |
description | Optional. String. Description of the group property. |
new_group_property_value | Optional. String. The new name of the group property. |
type | Optional. String. Data type of the group property. It must be one of any (default), string (default if array type is true), number, boolean, enum |
regex | Optional. String. Regular expression, custom regex used for pattern matching or more complex values. For example, property zip code must have pattern [0-9]{5} Applies only to the string type. |
enum_values | Optional. String. List of allowed values, separated by comma. For example: red, yellow, blue. Only applicable to the enum type. |
is_array_type | Optional. Boolean. Property is an array type. Use the type parameter to set the type of array elements. |
is_hidden | Optional. Boolean. Hide the property from chart dropdowns. |
classifications | Optional. String. Only available if Data Access Controls is enabled at the account level. List of classifications applicable to this group property. Valid classifications are PII, SENSITIVE and REVENUE. You can only apply classifications on shared properties. Trying to set classifications on an overridden property results in an error. |
is_hidden property can only be set on ingested properties.
200 OK response
A successful request returns a 200 OK status and a JSON body.
{
"success": true
}
409 conflict response
Some failed requests return a 409 Conflict and an error message with more details.
{
"success": false,
"errors": [
{
"message": "Attempted to update classifications for an overridden group property, \"grp:Group Property 1\" on group type \"Group 1\". Call the Update API without the \"group_type\" parameter to update classifications of the shared property."
}
]
}
Was this helpful?