Asynchronous HTTP calls

Function Returns Description
HttpGetRequestAsync(url: string, messageId: string) void Issues a fire-and-forget HTTP GET to the given URL. The eventual response (or failure) is queued onto _scriptAsyncResponses tagged with the given message id, so script code can poll for it asynchronously. On exception, the response is queued with code -100 and the exception message as text.
CallVindralApiAsync(endpointPath: string, messageId: string) void Calls the Vindral Live API with the specified endpoint path. The base URL and API key are retrieved from application settings.
AddApiCommandToQueue(command: string) void Enqueues an HTTP API command string into the project's pending request queue so it is processed on the next API tick.

HttpGetRequestAsync(url, messageId)

Issues a fire-and-forget GET. The eventual response is queued onto the script-async-response channel and delivered to the script as an OnComposerMessage(json) callback on a future render frame:

const REQ_GET_TEMPERATURE = "get-temperature";

function OnRenderFrame() {
    if (frameCount == 60)
        Project.HttpGetRequestAsync("https://api.example.com/temp", REQ_GET_TEMPERATURE);
}

function OnComposerMessage(json) {
    var msg = JSON.parse(json);
    if (msg.MessageId == REQ_GET_TEMPERATURE) {
        Logger.Info("HTTP " + msg.ResponseCode + ": " + msg.ResponseText);
    }
}

OnComposerMessage receives a JSON-stringified HttpResponse:

Field Type Description
MessageId string Echo of the messageId you passed in.
ResponseCode int HTTP status code, or -100 if the request threw.
ResponseText string Response body (or exception message on -100).

CallVindralApiAsync(endpointPath, messageId)

Same response model, but issues an authenticated GET to the configured Vindral Live API. Reads VindralLiveApiBaseUrl and VindralLiveApiKey from settings; logs an error and skips if either is missing. The response arrives via OnComposerMessage.

AddApiCommandToQueue(command)

Enqueues a Composer HTTP API command string into the project's pending request queue, processed on the next API tick. Use this when you want to drive Composer's own API from inside a script without going over the network.

Project.AddApiCommandToQueue("/api/setproperty?targetname=Audio Mixer&property=Mute&value=true");