Sample code for 30+ languages & platforms
Zig

VoiceBase -- Retrieve JSON Transcript

See more VoiceBase Examples

Retrieves a JSON transcript for a media file.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    // This example assumes the Chilkat HTTP API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    // Insert your Bearer token here:
    const access_token = "VOICEBASE_TOKEN";

    const http = try chilkat.Http.init();
    defer http.deinit();

    // Add the access (bearer) token to the request, which is a header
    // having the following format:
    // Authorization: Bearer <userAccessToken>
    const sb_auth = try chilkat.StringBuilder.init();
    defer sb_auth.deinit();
    sb_auth.append("Bearer ") catch {};
    sb_auth.append(access_token) catch {};
    http.setRequestHeader("Authorization", try sb_auth.getAsString(alloc));

    const sb_url = try chilkat.StringBuilder.init();
    defer sb_url.deinit();
    sb_url.append("https://apis.voicebase.com/v2-beta/media/$MEDIA_ID/transcripts/latest") catch {};
    _ = sb_url.replace("$MEDIA_ID", "f9b9bb88-d52c-4960-bcef-d516a9f85594");

    const str_json = http.quickGetStr(alloc, try sb_url.getAsString(alloc)) catch {
        std.debug.print("{s}\n", .{try http.getLastErrorText(alloc)});
        return;
    };

    // The response should be JSON, even if an error.
    const json = try chilkat.JsonObject.init();
    defer json.deinit();
    json.load(str_json) catch {};
    json.setEmitCompact(false);

    std.debug.print("Response status code = {d}\n", .{http.getLastStatus()});

    if (http.getLastStatus() != 200) {
        std.debug.print("{s}\n", .{try json.emit(alloc)});
        std.debug.print("Failed\n", .{});
        return;
    }

    // See the sample JSON response below..

    // Iterate over the words..
    const num_words = json.sizeOfArray("transcripts.latest.words");
    var i: i32 = 0;
    while (i < num_words) {
        json.setI(i);
        std.debug.print("{s}\n", .{try json.stringOf(alloc, "transcripts.latest.words[i].w")});
        i = i + 1;
    }

    std.debug.print("Success.\n", .{});

    // A sample JSON response:

    // {
    //   "_links": {
    //     "self": {
    //       "href": "/v2-beta/media/f9b9bb88-d52c-4960-bcef-d516a9f85594/transcripts/latest"
    //     }
    //   },
    //   "transcripts": {
    //     "latest": {
    //       "revision": "b25e81dc-ae3e-4f9d-8008-1d56a283c17f",
    //       "engine": "standard",
    //       "confidence": 2.196210728898151,
    //       "words": [
    //         {
    //           "p": 0,
    //           "s": 830,
    //           "c": 0.14,
    //           "e": 870,
    //           "w": "You"
    //         },
    //         {
    //           "p": 1,
    //           "s": 1860,
    //           "c": 0.432,
    //           "e": 1920,
    //           "w": "know"
    //         },
    //         {
    //           "p": 2,
    //           "s": 1930,
    //           "c": 0.288,
    //           "e": 2250,
    //           "w": "that's"
    //         },
    //         {
    //           "p": 3,
    //           "s": 2250,
    //           "c": 0.923,
    //           "e": 2300,
    //           "w": "a"
    //         },
    // ...
}