On this page

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 residencyBase URL
Defaulthttps://amplitude.com
EUhttps://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 Song as Play%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
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

NameDescription
category_nameRequired. Name of the category.

Response

A successful request returns a 200 OK response with a JSON body:

json
{
  "success": true
}

A failed request sends an error message with more information:

json
{
  "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

bash
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:

json
{
  "success": true,
  "data": [
    {
      "id": 412931,
      "name": "Attribution"
    },
    {
      "id": 412941,
      "name": "Conversion"
    }
  ]
}

A failed request returns a 400 Bad Request response with more information.

json
{
  "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
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/category/:category_name' \
-u '{api_key}:{secret_key}'

Path parameters

NameDescription
category_nameRequired. The name of the category

Response

A successful request returns a 200 OK status and a JSON body with the category's data:

json
{
  "success": true,
  "data": {
    "id": 412941,
    "name": "Conversion"
  }
}

A failed request returns a 400 Bad Request status with more information about the error.

json
{
  "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
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

NameDescription
category_idRequired. The ID of the category

Body parameters

NameDescription
category_nameRequired. The new name of the category

200 ok response

A successful request returns a 200 OK status and a JSON body.

json
{
  "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.

json
{
  "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

bash
curl --location --request DELETE 'https://amplitude.com/api/2/taxonomy/category/:category_id' \
-u '{api_key}:{secret_key}'

Path parameters

NameDescription
category_idRequired. The ID of the category

200 ok response

A successful request returns a 200 OK status and a JSON body.

json
{
  "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.

json
{
  "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.

bash
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

NameDescription
event_typeRequired. String. The event name.
categoryOptional. String. The event type's category.
descriptionOptional. String. Details about the event type.
is_activeOptional. Boolean. Activity of the event type.
is_hidden_from_dropdownsOptional. Boolean. Event type is hidden from dropdowns.
is_hidden_from_persona_resultsOptional. Boolean. Event type is hidden from persona results.
is_hidden_from_pathfinderOptional. Boolean. Event type is hidden from pathfinder.
is_hidden_from_timelineOptional. Boolean. Event type is hidden from timeline.
tagsOptional. String. List of tags, separated by a comma.
ownerOptional. 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:

json
{
  "success": true
}

409 conflict response

A failed request returns a 409 Conflict status with an error message.

json
{
  "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

bash
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:

json
{
  "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

bash
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/event:event_type' \
-u '{api_key}:{secret_key}'

Path parameters

NameDescription
event_typeRequired. 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:

json
{
  "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.

json
{
  "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

bash
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

NameDescription
event_typeRequired. String. The event name.

Body parameters

NameDescription
new_event_typeOptional. String. The event type's new name.
categoryOptional. Current category name of the event type.
descriptionOptional. String. Details to add to the event type.
display_nameOptional. String. Display name of an event type. You can update the display name for an event type after it's ingested into Amplitude.
is_activeOptional. Boolean. Activity of the event type.
is_hidden_from_dropdownsOptional. Boolean. Event type is hidden from dropdowns.
is_hidden_from_persona_resultsOptional. Boolean. Event type is hidden from persona results.
is_hidden_from_pathfinderOptional. Boolean. Event type is hidden from pathfinder.
is_hidden_from_timelineOptional. Boolean. Event type is hidden from timeline.
tagsOptional. String. List of tags, separated by a comma.
ownerOptional. 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.

json
{
  "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.

json
{
  "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

bash
curl --location --request DELETE 'https://amplitude.com/api/2/taxonomy/event/EVENT_TYPE'
-u '{api_key}:{secret_key}'

Path parameters

NameDescription
event_typeRequired. The name of the event type.

Behavior

Event typeBehavior in Amplitude
liveMarks the event as deleted
unexpectedAdds the event to the tracking plan, then marks it as deleted
plannedRemoves the event from the tracking plan
transformedReturns an error because transformed event types aren't deletable
deleted or not foundReturns an error

200 OK response

A successful request returns a 200 OK status and a JSON body.

json
{
  "success": true
}

4XX responses

If there's a problem with the request, Amplitude returns a 4XX status, and a JSON body with more information.

json
{
  "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

bash
curl --location --request POST 'https://amplitude.com/api/2/taxonomy/event/EVENT_TYPE/restore'
-u '{api_key}:{secret_key}'

Path parameters

NameDescription
event_typeRequired. The name of the event type.

Behavior

Event typeBehavior in Amplitude
deletedRestores the event
not deleted or not foundReturns an error

200 OK response

A successful request returns a 200 OK status and a JSON body.

json
{
  "success": true
}

4XX responses

If there's a problem with your request, Amplitude returns a 4XX status, and a JSON body with more information.

json
{
  "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

bash
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

NameDescription
event_propertyRequired. String. Name of the event property.
event_typeOptional. 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.
descriptionOptional. String. The event property's description.
typeOptional. String. The event property's data type. Acceptable values are string, number, boolean, enum, and any
regexOptional. 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_valuesOptional. String. List of allowed values, separated by comma. For example: red, yellow, blue. Only applicable to the enum type.
is_array_typeOptional. Boolean. Use the type parameter to set the type of array elements.
is_requiredOptional. 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_hiddenOptional. Boolean. Hide the property from chart dropdowns.
classificationsOptional. 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.

json
{
  "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.

json
{
  "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

bash

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

NameDescription
event_typeRequired. 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.

json
{
  "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

bash
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

NameDescription
event_propertyRequired. The event property name.

Body parameter

NameDescription
event_typeOptional. 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.

json
{
  "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.

json
{
  "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

bash
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

NameDescription
event-propertyRequired. Name of the event property.

Body parameters

NameDescription
event_typeOptional. 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.
overrideScopeOptional. 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.
descriptionOptional. String. The event property's description.
new_event_property_valueOptional. String. The new name of the event property.
typeOptional. String. The event property's data type. Acceptable values are string, number, boolean, enum, and any
regexOptional. 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_valuesOptional. String. List of allowed values.
is_array_typeOptional. Boolean. Specifies whether the property value is an array.
is_requiredOptional. Boolean. Marks the property as required.
is_hiddenOptional. Boolean. Hide the property from chart dropdowns.
classificationsOptional. 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.

json
{
  "success": true
}

409 conflict response

Some failed requests return a 409 Conflict and an error message with more details.

json
{
  "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

bash
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

NameDescription
event_propertyRequired. The event property name.

Body parameter

NameDescription
event_typeOptional. Name of the event type the event properties belong to.

Behavior

If the event type is available:

Event propertyBehavior in Amplitude
existsRemoves it from the event type
does not existReturns an error

If the event type isn't available, Amplitude operates on the global event property.

Event propertyBehavior in Amplitude
liveMarks the event property as deleted
unexpectedAdds the event property to the tracking plan, and marks it as deleted
plannedRemoves the event property from the tracking plan
transformedReturns an error because transformed event properties aren't deletable
deleted or not foundReturns an error.

200 OK response

A successful request returns a 200 OK status and a JSON body.

json
{
  "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

bash
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

NameDescription
event_propertyRequired. The event property name.

Body parameters

NameDescription
event_typeOptional. 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 propertyBehavior in Amplitude
deletedRestores the event property
not deleted or not foundReturns 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 Conflict errors 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.

json
{
  "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/

bash

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

NameDescription
user_propertyRequired. String. Name of the user property type.
descriptionOptional. String. Details to add to the user property type.
typeOptional. String. The user property's data type. Acceptable values are string, number, boolean, enum, and any.
regexOptional. 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_valuesOptional. String. List of allowed values, separated by comma. For example: red, yellow, blue.
is_array_typeOptional. Boolean. Specifies whether the property value is an array.
is_hiddenOptional. Boolean. Hide the property from chart dropdowns.
classificationsOptional. 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.

json
{
  "success": true
}
json
{
  "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

bash
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.

json
{
  "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

bash
curl --location --request GET 'https://amplitude.com/api/2/taxonomy/user-property/USER_PROPERTY' \
-u '{api_key}:{secret_key}'

Path parameters
NameDescription
user_propertyRequired. 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.

json
{
  "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.

json
{
  "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

bash
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

NameDescription
user_propertyRequired. The user property name. Prefix custom user properties with gp:.

Body parameters

NameDescription
new_user_property_valueOptional. String. New name of the user property type.
descriptionOptional. String. Details to add to the user property type.
typeOptional. String. The user property's data type. Acceptable values are string, number, boolean, enum, and any.
regexOptional. 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_valuesOptional. String. List of allowed values, separated by comma. For example: red, yellow, blue. Only applicable to the enum type.
is_array_typeOptional. Boolean. Specifies whether the property value is an array. Use the type parameter to set the type of array elements.
is_hiddenOptional. Boolean. Hide the property from chart dropdowns.
classificationsOptional. 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.

json
{
  "success": true
}
json
{
  "success": false
}

Delete a user property

Deletes a single user property by name.

DELETE https://amplitude.com/api/2/taxonomy/user-property/USER_PROPERTY

bash
curl --location --request DELETE 'https://amplitude.com/api/2/taxonomy/user-property/USER_PROPERTY' \
-u '{api_key}:{secret_key}'

Path parameters

NameDescription
user_propertyRequired. The user property name. Prefix custom user properties with gp:.

Behavior

User propertyBehavior in Amplitude
liveMarks the user property as deleted
unexpectedAdds the user property to the tracking plan, and marks it as deleted
plannedRemoves the user property from the tracking plan
transformedReturns an error. Transformed user properties aren't deletable
Amplitude User PropertyReturns an error. Amplitude user properties aren't deletable
deleted or not foundReturns an error

200 OK response

A successful request returns a 200 OK response and a JSON message.

json
{
  "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

bash
curl --location --request POST 'https://amplitude.com/api/2/taxonomy/user-property/USER_PROPERTY/restore' \
-u '{api_key}:{secret_key}'

Path parameters

NameDescription
user_propertyRequired. The user property name. Prefix custom user properties with gp:.

Behavior

User propertyBehavior in Amplitude
deletedRestores the user property
not deleted or not foundReturns an error

200 OK response

A successful request returns a 200 OK response and a JSON message.

json
{
  "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

bash
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

NameDescription
group_propertyRequired. String. Name of the group property. Prefix custom group properties with grp:.
group_typeOptional. 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.
descriptionOptional. String. The group property's description.
typeOptional. String. Data type of the group property. It must be one of any (default), string (default if array type is true), number, boolean, enum
regexOptional. 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_valuesOptional. String. List of allowed values, separated by comma. For example: red, yellow, blue. Only applicable to the enum type.
is_array_typeOptional. Boolean. Property is an array type. Use the type parameter to set the type of array elements.
is_hiddenOptional. Boolean. Hide the property from chart dropdowns.
classificationsOptional. 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.

json
{
  "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.

json
{
  "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

bash

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

NameDescription
group_typeOptional. 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.

json
{
  "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

bash
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

NameDescription
group_propertyRequired. The group property name. Prefix custom group properties with grp:.

Query or Body parameter

NameDescription
group_typeOptional. 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.

json
{
  "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.

json
{
  "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

bash
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

NameDescription
group_propertyRequired. 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

NameDescription
group_typeOptional. Name of the group type the group property belongs to. If the group type doesn't exist, Amplitude returns a 404 Not Found error.
overrideScopeOptional. 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.
descriptionOptional. String. Description of the group property.
new_group_property_valueOptional. String. The new name of the group property.
typeOptional. String. Data type of the group property. It must be one of any (default), string (default if array type is true), number, boolean, enum
regexOptional. 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_valuesOptional. String. List of allowed values, separated by comma. For example: red, yellow, blue. Only applicable to the enum type.
is_array_typeOptional. Boolean. Property is an array type. Use the type parameter to set the type of array elements.
is_hiddenOptional. Boolean. Hide the property from chart dropdowns.
classificationsOptional. 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.

json
{
  "success": true
}

409 conflict response

Some failed requests return a 409 Conflict and an error message with more details.

json
{
  "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?