Returns the property names of one or more custom events, e.g. to group or filter by them with the `event:prop:<name>` token.
Method
POST
Path
/v1/events/properties
This endpoint lists the property names of one or more custom events, for example the plan property of a signup event, together with how many events and unique users have each property in the given date range. You can pass up to 25 event names at once, and get back one property list per event, sorted by the number of events that have each property. Events without properties in the period come back with an empty list.
Use the returned names to group by an event property with "groupBy": ["event:prop:<name>"] in the query endpoint, or to filter by it with an event filter. Grouping by a property together with an event filter for the event gives you the users and events per property value (see the “Breakdown of an event property” example there). To find the names of your custom events, use the filter values endpoint with the event:name field.
Examples
Below you can see several examples of how to use this endpoint. Further down this page, you can find a detailed reference of all the available options you can pass.
Copy the JSON body of any of these examples, and use it in a POST request to https://api.vemetric.com/v1/events/properties with your API key.
Project or organization API key (starts with vem_), created in the project or organization settings on the API tab. Organization keys name the project of each request in the X-Vemetric-Project header.
Example: Bearer vem_xxxxxxxxxxxx
X-Vemetric-Project
optional
ID of the project the request is about. Required for organization keys; optional for project keys (must be the key's project if sent).
Example: 1234567890123456
Request Body (required)
application/json object
eventNames
* required
Description
Names of the custom events to list the properties of.
Type
array<string>
Example
["signup","purchase"]
dateRange
* required
Description
Can be either one of the preset strings below, or an array with two date strings [start, end]. Date strings can be either in YYYY-MM-DD format or UTC ISO-8601 format with second precision.
Filter based on the page origin (protocol + host). For example, "https://example.com".
Type
object
Show nested properties (2)
value
* required
Description
Value to filter by
Type
string
operator
* required
Description
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Filter based on the page path. For example, "/blog".
Type
object
Show nested properties (2)
value
* required
Description
Value to filter by
Type
string
operator
* required
Description
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Filter based on the page hash. For example, "#section1".
Type
object
Show nested properties (2)
value
* required
Description
Value to filter by
Type
string
operator
* required
Description
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Ability to filter for either anonymous or identified users. This is useful when you want to include only known users (for example, for a retention analysis) or only anonymous users (for example, to analyze new visitor behavior).
Type
object
Default
"user"
Example
{"type":"user","anonymous":true}
Show nested properties (1)
anonymous
* required
Description
Filter for anonymous (true) or identified (false) users.
Filter by one or more country codes (ISO-3166 alpha-2, e.g. "US").
Type
object
Show nested properties (2)
value
* required
Description
List of values to filter by
Type
array<string>
operator
* required
Description
Operator to apply for the list filter. The "any" operator means that any value is accepted and effectively disables the filter. To require a value, use "noneOf" with [""].
Operator to apply for the list filter. The "any" operator means that any value is accepted and effectively disables the filter. To require a value, use "noneOf" with [""].
Referrer value to match, as returned when grouping by referrer (e.g. "Google"). An empty string matches visits without a referrer and visits from the project's own domain (referrer type internal). For visits without a referrer only, filter by the referrer type none.
List of referrer types to match: none (no referrer: typed in, bookmarks, apps), search, social, llm, email, paid, internal (came from a page on the project's own domain, e.g. a link from your app to your website; direct is accepted as an old name) or unknown (a website or source that isn't in Vemetric's list of known sources; visits without a referrer are none).
Type
array<string>
Example
["search","social"]
operator
* required
Description
List matching operator for value. To require a value, use "noneOf" with [""].
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Filter based on the page origin (protocol + host). For example, "https://example.com".
Type
object
Show nested properties (2)
value
Description
Value to filter by
Type
string
operator
Description
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Filter based on the page path. For example, "/blog".
Type
object
Show nested properties (2)
value
Description
Value to filter by
Type
string
operator
Description
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Filter based on the page hash. For example, "#section1".
Type
object
Show nested properties (2)
value
Description
Value to filter by
Type
string
operator
Description
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Ability to filter for either anonymous or identified users. This is useful when you want to include only known users (for example, for a retention analysis) or only anonymous users (for example, to analyze new visitor behavior).
Type
object
Default
"user"
Example
{"type":"user","anonymous":true}
Show nested properties (1)
anonymous
Description
Filter for anonymous (true) or identified (false) users.
Filter by one or more country codes (ISO-3166 alpha-2, e.g. "US").
Type
object
Show nested properties (2)
value
Description
List of values to filter by
Type
array<string>
operator
Description
Operator to apply for the list filter. The "any" operator means that any value is accepted and effectively disables the filter. To require a value, use "noneOf" with [""].
Operator to apply for the list filter. The "any" operator means that any value is accepted and effectively disables the filter. To require a value, use "noneOf" with [""].
Referrer value to match, as returned when grouping by referrer (e.g. "Google"). An empty string matches visits without a referrer and visits from the project's own domain (referrer type internal). For visits without a referrer only, filter by the referrer type none.
List of referrer types to match: none (no referrer: typed in, bookmarks, apps), search, social, llm, email, paid, internal (came from a page on the project's own domain, e.g. a link from your app to your website; direct is accepted as an old name) or unknown (a website or source that isn't in Vemetric's list of known sources; visits without a referrer are none).
Type
array<string>
Example
["search","social"]
operator
Description
List matching operator for value. To require a value, use "noneOf" with [""].
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Operator to apply for the string filter. "eq" means equals, "notEq" means not equals. "any" means no restriction and also matches users without a value; to require a value, use "notEq" with an empty string.
Whether users must have completed or not completed the selected step.
Type
"completed" | "notCompleted"
Example
"completed"
filtersOperator
Description
Echo of the incoming filtersOperator request field.
Type
"and" | "or"
limit
Description
Echo of the incoming limit request field.
Type
integer
offset
Description
Echo of the incoming offset request field.
Type
integer
data
Description
One property list per requested event, in the order of eventNames.
Type
array<object>
eventName
Description
Event name this property list belongs to.
Type
string
Example
"signup"
pagination
Description
Type
object
Show nested properties (3)
limit
Description
Applied page size for this event.
Type
integer
offset
Description
Applied page offset for this event.
Type
integer
returned
Description
Number of properties returned for this event.
Type
integer
properties
Description
Properties of the event, sorted by the number of events that have them (descending). Empty if the event has no properties in the period.
Type
array<object>
Show nested properties (3)
name
Description
Property name. Group or filter by it with the event:prop:<name> token.
Type
string
Example
"plan"
events
Description
Number of events in the period that have this property.
Type
integer
Example
312
users
Description
Number of unique users that sent an event with this property.
Type
integer
Example
280
400 Bad request - invalid request payload or parameters, or an organization key without the X-Vemetric-Project header
application/json
error
Description
Error details.
Type
object
code
Description
Machine-readable error code. HTTP_ERROR is returned for a malformed JSON body, PROJECT_REQUIRED for an organization key without the X-Vemetric-Project header.