# Fight Actions

This web socket endpoint returns the detailed action data per fight. You will need to make a connection for each fight once. This endpoint is in conjunction with the Live Events REST endpoint – when a fight starts it will be included in the response to the /liveevents endpoint, and at that point you should commence connecting to the web socket for that fight’s action feed

## **Endpoint URL**

| `wss://dde-streams.data.imgarena.com/mma/fights/{id}/actions` |
| ------------------------------------------------------------- |

## **Process for connecting to the web socket endpoints**

* Connect to the SSL websocket address
* Send JSON packet containing API token
* Receive response indicating that connection is authorised (or a response indicating why the connection cannot be made)
* Receive heartbeat packets every 10 seconds to verify the connection is live
* Receive data packets

Once you have sent the API token, any further data that you send over the connection will be ignored.

## Request Parameters

| **Parameter** | **Type** | **Purpose**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| startPosition | integer  | <p>The position in the stream that you want to start from.<br>Each packet in the stream has a sequence number ('seqNum'), where 1 is the first packet in the stream. By default the stream will start from the beginning.</p><p>This is useful if you get disconnected from a stream and need to reconnect. When reconnecting, if you specify the seqNum of the last packet you received + 1, then you can pick up where you left off without need to reprocess all the events already received.</p> |

## Response Model

Each action packet sent over the websocket has the following format:

| **Field Name**   | **Type** | **Description**                                                                                                                                                                                                     |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| fighters         | object   | Name and fighter ID for the red and blue fighters respectively. If not field is not returned then postion is for both fighters                                                                                      |
| timestamp        | string   | ISO 8601 timestamp representing when this action occurred                                                                                                                                                           |
| roundTime        | string   | Time left on the clock when this action occurred                                                                                                                                                                    |
| result           | string   | Optional. Indicates whether or not the attempted action was successful. Possible values are **`successful`** or **`unsuccessful`**                                                                                  |
| eventElementType | string   | The type of event we’re reporting, such as a strike, takedown attempt, or submission attempt. See the **`eventElementType`** table for the possible event types.                                                    |
| id               | integer  | A unique ID associated with the action                                                                                                                                                                              |
| seqNum           | integer  | The sequence number of the packet in the feed                                                                                                                                                                       |
| fighters         | string   | Optional. Which fighter performed the action, if relevant. Possible values are **`Red`** and **`Blue`**.                                                                                                            |
| details          | object   | Optional. Provides detailed information about the nature of the action. See the **`details`** table.                                                                                                                |
| sendType         | string   | <p>Identifies if the packet is either a - "new", "deleted" or "correction".<br></p><p>new = new actionId</p><p>correction = existing actionId which has been amended<br>deleted = actionId has been deleted<br></p> |
| position         | string   | This conveys the position the fighters were in when this action occurred. Possible values include **`backControl, clinch, distance, guard, halfGuard, miscGround, mount, sideControl.`**                            |
| round            | number   | Which round this action occurred in                                                                                                                                                                                 |

## Fighter Object

| **Field Name** | **Type** | **Description**                                          |
| -------------- | -------- | -------------------------------------------------------- |
| red            | object   | colour for fighter (new field, unsure about description) |
| blue           | object   | colour for fighter (new field, unsure about description) |

## Red Object

| **Field Name** | **Type** | **Description** |
| -------------- | -------- | --------------- |
| name           | string   | name of fighter |
| fighterId      | integer  | ID of fighter   |
| ufcFighterId   | string   | will be null    |
| pflFighterId   | string   | PFL fighter ID  |

## Blue Object

| **Field Name** | **Type** | **Description** |
| -------------- | -------- | --------------- |
| name           | string   | name of fighter |
| fighterId      | integer  | ID of fighter   |
| ufcFighterId   | string   | will be null    |
| pflFighterId   | string   | PFL fighter ID  |

## Details format:

| **Field Name** | **Type** | **Description**                                                                                                                                                                                                                      |
| -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| target         | string   | The body part at which the strike was aimed, such as **`head, body, leg`** etc. In the case of submissions or takedowns, this is usually provided as **`submission`** or **`takedown`** respectively.                                |
| strength       | string   | The strength behind the action; possible values are **`Sig`**, representing a significant blow, and **`Other`**, representing a less significant jab, a feint, or something else.                                                    |
| strikeType     | string   | Whether this action involved the arms or legs; possible values are **`arm`** and **`leg`**. This may mean a punch or a kick, but may also refer to an elbow/knee strike, a strangle, or something else depending on the action type. |

## **eventElementType** values:

| **Value**               | **Meaning**                                                                                                                                                                                                                                                                                                  |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| position                | Simply indicates the position the fighters are in; a round will open with this event. The **`details, results`**&#x61;nd **`fighter`** fields will not be provided.                                                                                                                                          |
| strike                  | Indicates that the specified fighter attempted to strike their opponent. The **`details`** and **`results`** fields will indicate where the blow was aimed, whether it landed, how much force was behind it, and whether it was a punch / elbow strike or a kick / knee strike. See the **`details`** table. |
| takedown                | Indicates that the specified fighter attempted to take down their opponent.                                                                                                                                                                                                                                  |
| submission              | Indicates that the specified fighter attempted to force a submission from their opponent.                                                                                                                                                                                                                    |
| knockdown               | Indicates that the specified fighter attempted to knock down their opponent.                                                                                                                                                                                                                                 |
| standup                 | Indicates that a fighter attempted to stand up.                                                                                                                                                                                                                                                              |
| reversal                | Indicates that a fighter attempted to execute a reversal.                                                                                                                                                                                                                                                    |
| stop                    | Indicates that the round ended. The **`details, results`** and **`fighter`** fields will not be provided.                                                                                                                                                                                                    |
| pause                   | Indicates that the round was paused. The **`details, results`** and **`fighter`** fields will not be provided.                                                                                                                                                                                               |
| foul\_warning           | Indicates that a fighter was given a warning                                                                                                                                                                                                                                                                 |
| foul\_1point\_deduction | Indicates that a fighter has been deducted 1 point                                                                                                                                                                                                                                                           |
| foul\_2point\_deduction | Indicates that a fighter has been deducted 1 point                                                                                                                                                                                                                                                           |

## Sample Response:

Here’s a sample of the output we have for fight, Murad Ramazanov vs. Josh Silveira; this packet represents a successful, significant strike to the head, where Murad Ramazanov is the attacker. It also indicates that the fighters were standing apart from one another when the blow was dealt.

```
{
  "details": {
    "strength": "Sig",
    "target": "head"
  },
  "eventElementType": "strike",
  "fighter": "Red",
  "fighters": {
    "blue": {
      "fighterId": 6140,
      "name": "Murad Ramazanov",
      "ufcFighterId": null,
      "pflFighterId":"715"
    },
    "red": {
      "fighterId": 6135,
      "name": "Josh Silveira",
      "ufcFighterId": null,
      "pflFighterId":"323"
    }
  },
  "id": 267,
  "position": "distance",
  "result": "successful",
  "round": 3,
  "roundTime": "00:00:06",
  "sendType": "new",
  "seqNum": 273,
  "timestamp": "2025-08-21T22:47:06.0349759Z"
}
```

#### **Fouls**

If a player commits a foul, the infraction may result in one of the following outcomes:

* **Warning** – No point deduction; serves as a caution.
* **1-Point Deduction** – Applied for repeated or moderate fouls.
* **2-Point Deduction** – Applied for severe or intentional fouls.

Foul information is included in the **`/action`** feed and indicates the type of penalty applied.

Foul - warning:

```
{
  "eventElementType": "foul_warning",
  "fighter": "Red",
  "fighters": {
    "blue": {
      "fighterId": 4833,
      "name": "Xavier Alaoui",
      "pflFighterId": "759",
      "ufcFighterId": null
    },
    "red": {
      "fighterId": 4834,
      "name": "Islam Youssef",
      "pflFighterId": "1033",
      "ufcFighterId": null
    }
  },
  "id": 24,
  "position": "mount",
  "round": 1,
  "roundTime": "03:44",
  "sendType": "new",
  "seqNum": 24,
  "timestamp": "2025-11-19T10:25:29.9432159Z"
}
```

Foul - 1 point deduction:

```
{
  "eventElementType": "foul_1point_deduction",
  "fighter": "Blue",
  "fighters": {
    "blue": {
      "fighterId": 4833,
      "name": "Xavier Alaoui",
      "pflFighterId": "759",
      "ufcFighterId": null
    },
    "red": {
      "fighterId": 4834,
      "name": "Islam Youssef",
      "pflFighterId": "1033",
      "ufcFighterId": null
    }
  },
  "id": 36,
  "position": "distance",
  "round": 1,
  "roundTime": "03:06",
  "sendType": "new",
  "seqNum": 36,
  "timestamp": "2025-11-19T10:26:03.3909369Z"
}
```

Foul - 2 point deduction:

```
{
  "eventElementType": "foul_2point_deduction",
  "fighter": "Blue",
  "fighters": {
    "blue": {
      "fighterId": 4833,
      "name": "Xavier Alaoui",
      "pflFighterId": "759",
      "ufcFighterId": null
    },
    "red": {
      "fighterId": 4834,
      "name": "Islam Youssef",
      "pflFighterId": "1033",
      "ufcFighterId": null
    }
  },
  "id": 40,
  "position": "distance",
  "round": 1,
  "roundTime": "02:00",
  "sendType": "new",
  "seqNum": 40,
  "timestamp": "2025-11-19T10:27:10.0927718Z"
}
```
