Skip to main content
Here you can view information about existing endpoints and how to make requests for them.

API URL

URL for requests: https://tganalytics.xyz/events

POST events

This request is needed to record an event in the database

Body

The request body may contain an array rather than a single event. The main thing is that all events in the array satisfy the scheme below

Required

FieldTypeDescription
user_idnumberUnique identifier for the user.
event_namestringThe name of the event from the supported events.
session_idstringSession identifier for tracking user sessions. Must be UUID.
app_namestringThe name of the application that you specified when creating the token

Optional

FieldTypeDescription
is_premiumbooleanIf the user has a premium account, by default - false
is_successbooleanIndicates whether a wallet is connected or the transaction was successful, by default - false
error_messagestringError message if the wallet connection or transaction is unsuccessful
error_codenumberDescription: error code if the wallet connection or transaction is unsuccessful
wallet_addressstringWallet address involved in the event
wallet_typestringType of the wallet
wallet_versionstringVersion of the wallet software
auth_typeenumType of authorization used. 0 - ton_addr, 1 - ton_proof.
valid_untilstringTimestamp until when a transaction offer is valid
fromstringWallet address initiating the transaction
messages{ address: string; amount: string }List of transactions {to, amount} involved in the event
custom_dataobjectObject to store custom event details as needed
client_timestampstringThe time when the event occurred on the client
platformstringThe platform from which the MiniApp was opened
localestringUser language code
start_paramstringtgWebAppStartParam
url_refererstringThe URL of the web application from which the request was sent
scopestringEvent scope

Request body example:

[
  {
    "event_name": "app-init",
    "session_id": "10c574d9-6d2c-4e6d-a141-ce6da141ce6d",
    "user_id": 111111111,
    "app_name": "docs",
    "is_premium": true,
    "platform": "tdesktop",
    "locale": "en",
    "client_timestamp": "1743503599534"
  }
]
[
  {
    "event_name": "connection-started",
    "custom_data": {
      "ton_connect_sdk_lib": "3.0.3",
      "ton_connect_ui_lib": "2.0.5"
    },
    "session_id": "10c574d9-6d2c-4e6d-a141-ce6da141ce6d",
    "user_id": 111111111,
    "app_name": "docs",
    "is_premium": true,
    "platform": "tdesktop",
    "locale": "en",
    "client_timestamp": "1743503647541"
  }
]
[
  {
    "event_name": "connection-error",
    "is_success": false,
    "error_message": "Connection was cancelled",
    "error_code": null,
    "custom_data": {
      "ton_connect_sdk_lib": "3.0.3",
      "ton_connect_ui_lib": "2.0.5"
    },
    "session_id": "10c574d9-6d2c-4e6d-a141-ce6da141ce6d",
    "user_id": 111111111,
    "app_name": "docs",
    "is_premium": true,
    "platform": "tdesktop",
    "locale": "en",
    "client_timestamp": "1743503683701"
  }
]

Headers

Instead of YOUR_TOKEN, you need to specify the token received using the managing integration. (TO DO link)
{
    "TGA-Auth-Token": "YOUR_TOKEN",
    "Content-Type": "application/json"
}

Responses

HTTP201

  • Description: the event has been successfully recorded
  • Content:
{
    "message": "Success record."
}

HTTP400

  • Description: the event was not recorded due to server issues
  • Content:
{
    "message": "Failed to record"
}

HTTP400

  • Description: the token was entered incorrectly or in the wrong format
  • Content:
{
    "message": "The token is not specified in the headers or is specified incorrectly."
}

HTTP400

  • Description: the entered token is invalid (was not created through a Data Chief bot)
  • Content:
{
    "message": "Token is invalid."
}

HTTP400

  • Description: the request body contains the application name that does not match the token
  • Content:
{
    "message": "Invalid app_name is specified."
}

HTTP400

  • Description: the body specified in the request was not validated (for example, the type of one of the fields does not match)
  • Content:
{
    "status": 400,
    "message": "VALIDATION_MISMATCH_REPORT"
}

HTTP403

  • Description: an attempt to use the API on a domain name that does not match the token
  • Content:
{
    "message": "The domain name does not match."
}

HTTP429

  • Description: too many requests from the client in a certain amount of time
  • Content:
{
    "message": "Too many requests. Try again later."
}
I