# RudderStack Event Specification


The **RudderStack Event Spec** outlines how to send event data to RudderStack's APIs and the proper format to capture events using [RudderStack's SDKs]({{< ref "sources/event-streams/sdks/_index.md" >}}).

The RudderStack Event Spec supports multiple API calls that make it easy to identify users and track their specific actions as events. Using the correct format to capture events ensures that RudderStack can automatically forward those events to any of our supported [destinations]({{< ref "destinations/overview.md" >}}).

## Supported API calls

The RudderStack API spec supports the following calls, each gathering important data about the user:

| **API call**          |**Description**             |
| :-------------------- |:-------------------------- |
| [Identify]({{< ref "event-spec/standard-events/identify.md" >}})  | The user's identity  |
| [Page]({{< ref "event-spec/standard-events/page.md" >}})  | Web page details of the user's current page                |
| [Screen]({{< ref "event-spec/standard-events/screen.md" >}})  | App screen details     |
| [Track]({{< ref "event-spec/standard-events/track.md" >}})  | Details of user actions (for example, Clicks, Sign ups, and Purchases)                |
| [Group]({{< ref "event-spec/standard-events/group.md" >}})  | Group or organization details |
| [Alias]({{< ref "event-spec/standard-events/alias.md" >}})  | Merge  identities to a known user                   |
| **Reset**              | Resets the information related to the previously identified user                         |

{{< warning >}}
Refer to the corresponding [SDK documentation]({{< ref "sources/event-streams/sdks/_index.md" >}}) for the implementation specifics of the above calls.
{{< /warning >}}

## Send sample events

Use RudderStack's **Event Playground app** to send sample events to RudderStack and test the data flow without any instrumentation.

Select the relevant **API method** from the dropdown and click **Send** to see the API call in the **Network** tab of your browser's developer tools.

{{< script-app-events >}}

{{< customreadfile "/includes/send-test-events.md" >}}

## How the API calls work

Here's a quick overview of how the API calls work:

1. A customer interacts with your website/app triggering an event.
2. When an API is called, the event data is sent to the RudderStack backend.
3. RudderStack transforms the event data into a destination-specific format.
4. The transformed data is then sent to all requested destinations.

## Event data format

The event data is collected in JSON and includes the [Common Fields]({{< ref "event-spec/standard-events/common-fields.md" >}}) along with API-specific fields.

**It is strongly recommended large integer values be passed as strings**. This ensures that the values are correctly transmitted to all systems (including various downstream destinations) without any issues.

RudderStack follows the <a href="https://www.rfc-editor.org/rfc/rfc7159#section-6">RFC 7159 standard</a> which has an upper limit of 2<sup>53</sup> for integers. If the values passed exceed this number, **you may lose precision**. Furthermore, certain downstream destinations have their own limitations on parsing large integer values.

## Industry Specs

* **Mobile**
  * [Screen]({{< ref "event-spec/standard-events/screen.md" >}})
  * [Application Lifecycle Events]({{< ref "event-spec/standard-events/application-lifecycle-events-spec.md" >}})
* [Ecommerce]({{< ref "event-spec/ecommerce-events-spec/_index.md" >}})
* [Video]({{< ref "event-spec/standard-events/video-events-spec.md" >}})

<br />
