> ## Documentation Index
> Fetch the complete documentation index at: https://docs.visualradioassist.live/llms.txt
> Use this file to discover all available pages before exploring further.

# Generic HTTP Radio Automation Link

> Visual Radio Assist already integrates with a lot of the most used radio automation softwares, but integrating yours is quick and easy with the generic automation link.

Visual Radio Assist already integrates with a lot of the most used radio automation softwares ([Link Radio Automation](/set-up/link-radio-automation) ). But it could happen that we missed yours, luckily integrating is quick and easy with the generic automation link integration. This way you can enable your client to work with Visual Radio after your next update.

<Note>
  Looking for a complete and future-proof integration that works best for your radio automation software? Check out the [Connecting with AutomationLink](/develop-with-vra/connecting-with-automationlink) documentation for all steps to create a **custom integration**.
</Note>

## Generic JSON Request

Make the following request to push your automation data to the VRA Core API (hostname `core.vra.local` or the LAN VRA machine IP). [Network Connectivity](/network-connectivity)

```json theme={null}
POST http://core.vra.local:3002/alink/generic
Content-type: application/json

{
  "id": "{MessageID}",
  "timestamp": "{MessageTimestamp}",
  "current": [
    {
      "id": "{ID}",
      "artist": "{Artist}",
      "title": "{Title}",
      "timestamp": "{Start time}",
      "position": "{Start position / In point}",
      "duration": "{Duration}",
      "type": "{Type}",
      "category": "{Category}",
      "meta_1": "{Meta Field 1}",
      "meta_2": "{Meta Field 2}"
    }
  ],
  "upcoming": [
    {
      "id": "{ID}",
      "artist": "{Artist}",
      "title": "{Title}",
      "timestamp": "{Start time}",
      "position": "{Start position / In point}",
      "duration": "{Duration}",
      "type": "{Type}",
      "category": "{Category}",
      "meta_1": "{Meta Field 1}",
      "meta_2": "{Meta Field 2}"
    },
    {
      "id": "{ID}",
      "artist": "{Artist}",
      "title": "{Title}",
      "timestamp": "{Start time}",
      "position": "{Start position / In point}",
      "duration": "{Duration}",
      "type": "{Type}",
      "category": "{Category}",
      "meta_1": "{Meta Field 1}",
      "meta_2": "{Meta Field 2}"
    }
  ]
}
```

### `{Fields}` description

| Item **Field**    | Description                                                                                                           | Accuracy                | <u>Required in:</u> Current | Upcoming | 🔄 Video sync |
| ----------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------- | --------------------------- | -------- | ------------- |
| Artist            |                                                                                                                       |                         | ✅                           | ✅        | ✅             |
| Title             |                                                                                                                       |                         | ✅                           | ✅        | ✅             |
| ID                | Unique identifier of the item in the radio automation context                                                         | `Preferred UUID / ULID` | ✅                           | ➖        | ✅             |
| Type              | String describing the global type of the item (Music / Jingle / Station ID)                                           |                         | ➖                           | ➖        | ➖             |
| Start time        | Starting timestamp of the item<br />In case of upcoming: projected starttime in the moment of generating the payload. | `\|< ms `               | ➖                           | ➖        | ✅             |
| In point          | Offset from the original beginning of the item                                                                        | `\|< ms `               | ➖                           | ➖        | ✅             |
| Duration          | Total playable duration of the item                                                                                   | `\|< ms`                | ➖                           | ➖        | ➖             |
| Category          | String describing the category of the item. (90s, 2000s, Sweep)                                                       |                         | ➖                           | ➖        | ➖             |
| Extra Fields      | All other fields are made available to the client in the Meta object.                                                 |                         |                             |          |               |
| **General**       | Not required, but can improve processing                                                                              |                         |                             |          |               |
| Message ID        | Unique ID of the message, to prevent double processing                                                                |                         |                             |          |               |
| Message Timestamp | Generation timestamp, in-sync with sending machine' time                                                              | `\|< ms`                |                             |          | ✅             |

### Handling character encoding

The Core API is only able to process correctly encoded and parsable UTF-8 payloads in the provided Content-type. This means that special characters (often used in artist/title strings) MUST be encoded in the way that the content format describes. Otherwise the payload won't be processed in the AutomationLink.
Interesting characters in `JSON` or `XML` payloads for example: `&` `"` `'` `< >` `/` `$` `,` `;`

<Accordion title="More info">
  When working with XML or JSON payloads, it is crucial to properly encode special characters in the property values. This is because some characters, such as `&`, `"`, `'`, `<`, `>`, `/`, `$`, `,`, and `;`, have a special meaning in XML and JSON formats and can cause parsing errors if not encoded properly.

  To encode special characters in XML, you can use character entity references. These are special codes that represent the special characters in a way that can be read by the XML parser. For instance, to encode an ampersand character (`&`) in XML, you can use `&amp;`. Similarly, to encode a single quote (`'`), you can use `&rsquo;`, and to encode a double quote (`"`) you can use `&quot;`.

  To encode special characters in JSON, you can use backslashes to escape the character. For example, to encode a double quote character (`"`) in JSON, you can use `\"`. Similarly, to encode a backslash (`\`), you can use `\\`.

  It is important to properly encode special characters to avoid processing errors in the AutomationLink. If you fail to do so, the XML or JSON parser may interpret a special character as a command or instruction, causing the payload to be parsed incorrectly. This can lead to data loss or other issues that can affect the functionality of your application.

  By following the guidelines described above, you can ensure that your XML or JSON payloads are properly encoded and parsed without any issues, making it easier to work with and integrate your data with other systems.
</Accordion>
