> For the complete documentation index, see [llms.txt](https://docs.reo.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.reo.dev/integrations/input-sources/api-based-integration/custom-product-events-api/single-events.md).

# Single Events

From the product’s cloud instance, we get the following data

* Unique User ID (email, Social, LinkedIn, GitHub, Username)
* IP Address
* Activity Details
* Login Timestamp

We will be able to enrich the users using

* email ID, GitHub, LinkedIn
* IP Address

and find out the company to which the user belongs to. With the unique user ID, we will aggregate the product usage at a developer level and ultimately map it to the company to which the user(s) are associated.&#x20;

{% hint style="info" %}
**Important Note:** The Product API integration is fully dependent on the configuration of custom metrics in the **Product Usage Settings**.\
Without these metrics, data sent via the API will not be received or processed in the Reo.Dev platform. Please refer to [How to Configure Product Usage Metrics in Settings](/configurations/product-usage.md) to ensure your metrics are correctly set up before implementing the Product API.
{% endhint %}

### **API Structure**

| **Header**   | **Description**                                         | **Data type** |
| ------------ | ------------------------------------------------------- | ------------- |
| X-API-KEY    | Generated Reo.Dev \<API\_KEY> for authorization.        | string        |
| Content-Type | Request content-type is always set to application/json. | string        |

```
curl --location 'https://ingest.reo.dev/api/product/usage' \
--header 'X-API-KEY: <API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "payload": {
	"activity_type": "LOGIN_ACTIVITY",
	"source": "PRODUCT_CLOUD",        
	"environment": "PRODUCTION",
        "user_id": "https://www.linkedin.com/in/userid",
        "user_id_type":"LINKEDIN",
        "ip_addr": "156.59.87.83",
        "event_id": 1231231232,  
        "event_at": 639303296,  
        "product_id": "reoWebApp",
        "user_agent": "Mozilla/5.0 (Macintosh, Intel Mac OS X 10_15_7) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "meta": {"property1":"value1","property2":"value2"}
    }
}'
```

### **Tenant API Key**

To access your API key, navigate to:

**Settings → Configurations → API Keys → Product Usage API**

{% hint style="info" %}
Note: Only users with Admin Role in Reo.Dev can access the API Keys
{% endhint %}

<figure><img src="/files/RoRmPhZH60qtiWvzGly0" alt=""><figcaption></figcaption></figure>

| Parameter                      | Description                                                                                                                                                                                               | Datatype | Allowed Values                                      | Example                                                             |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------- | ------------------------------------------------------------------- |
| **source (Required)**          | Source of the activity.                                                                                                                                                                                   | enum     | `PRODUCT_CLOUD`                                     | `"PRODUCT_CLOUD"`                                                   |
| **activity\_type (Required)**  | Usage Metrics of the product. The definition of primary, secondary1 and secondary2 should match with metrics defined in the Reo.Dev settings. If no data is available, activity type can be `"CALL HOME"` | string   | Keys defined in metrics                             | `"API KEY GENERATED"`                                               |
| **environment (optional)**     | Environment where product has been deployed.                                                                                                                                                              | string   | ​                                                   | `"production"`                                                      |
| **user\_id\_type (mandatory)** | Type of user ID such as email, Social, LinkedIn, GitHub, Username.                                                                                                                                        | enum     | `EMAIL`, `SOCIAL`, `LINKEDIN`, `GITHUB`, `USERNAME` | `"EMAIL"`                                                           |
| **user\_id (mandatory)**       | Unique user ID captured for a customer.                                                                                                                                                                   | string   | ​                                                   | `"michaelbevan"`                                                    |
| **ip\_addr (optional)**        | IP address of the system from where the user has logged in.                                                                                                                                               | string   | ​                                                   | `"192.127.0.0"`                                                     |
| **event\_id (optional)**       | A unique identifier for the event for Tenant for filter.                                                                                                                                                  | string   | ​                                                   | `193ef456430`                                                       |
| **event\_at (mandatory)**      | The time at which the event occurred (Formatted as a UNIX epoch in seconds).                                                                                                                              | integer  | ​                                                   | `639303296`                                                         |
| **product\_id (Required)**     | Unique identifier of your product.                                                                                                                                                                        | string   | ​                                                   | `"reoWebApp"`                                                       |
| **user\_agent (optional)**     | Additional browser properties.                                                                                                                                                                            | string   | ​                                                   | `"Mozilla/5.0 (Macintosh, Intel Mac OS X 10_15_7)...Safari/537.36"` |
| **meta (optional)**            | Any other parameter that needs to be sent.                                                                                                                                                                | object   | ​                                                   | ​                                                                   |

### **Sample JSON Request**

```
"payload": {
	"activity_type": "LOGIN_ACTIVITY",
	"source": "PRODUCT_CLOUD",        
	"environment": "PRODUCTION",
        "user_id": "https://www.linkedin.com/in/userid",
        "user_id_type":"LINKEDIN",
        "ip_addr": "156.59.87.83",
        "event_id": 1231231232,  
        "event_at": 639303296,  
        "product_id": "reoWebApp",
        "user_agent": "Mozilla/5.0 (Macintosh, Intel Mac OS X 10_15_7) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "meta": {"property1":"value1","property2":"value2"}
    }
```

### **Sample JSON Response \[Success]**

```json
{
    "response_code": "200",
    "response": "Data Uploaded",
    "status": "success"
}
```

### **Sample JSON Response \[Wrong API Key]**

```json
{
    "response_code": 400,
    "response": "Authentication Failure",
    "status": "failure"
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.reo.dev/integrations/input-sources/api-based-integration/custom-product-events-api/single-events.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
