Sample code for 30+ languages & platforms
Tcl

VoiceBase -- Upload a media file for transcription and analysis

See more VoiceBase Examples

This example demonstrates how to upload a media file for transcription and analysis. It duplicates the following curl command:
curl https://apis.voicebase.com/v2-beta/media \
  --form media=@msg_123_abc.wav \
  --header "Authorization: Bearer ${TOKEN}"

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

# Insert your Bearer token here:
set accessToken "VOICEBASE_TOKEN"

set http [new_CkHttp]

set req [new_CkHttpRequest]

CkHttpRequest_put_HttpVerb $req "POST"
CkHttpRequest_put_Path $req "/v2-beta/media"
CkHttpRequest_put_ContentType $req "multipart/form-data"

# Add the access (bearer) token to the request, which is a header
# having the following format:
# Authorization: Bearer <userAccessToken>
set sbAuth [new_CkStringBuilder]

CkStringBuilder_Append $sbAuth "Bearer "
CkStringBuilder_Append $sbAuth $accessToken
CkHttpRequest_AddHeader $req "Authorization" [CkStringBuilder_getAsString $sbAuth]

set success [CkHttpRequest_AddFileForUpload2 $req "media" "qa_data/wav/msg_123_abc.wav" "audio/x-wav"]
if {$success == 0} then {
    puts [CkHttpRequest_lastErrorText $req]
    delete_CkHttp $http
    delete_CkHttpRequest $req
    delete_CkStringBuilder $sbAuth
    exit
}

set resp [new_CkHttpResponse]

set success [CkHttp_HttpSReq $http "apis.voicebase.com" 443 1 $req $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkHttpRequest $req
    delete_CkStringBuilder $sbAuth
    delete_CkHttpResponse $resp
    exit
}

# Examine the response status code and body.
puts "Response status code = [CkHttpResponse_get_StatusCode $resp]"

# The response should be JSON, even if an error.
set json [new_CkJsonObject]

CkJsonObject_Load $json [CkHttpResponse_bodyStr $resp]
CkJsonObject_put_EmitCompact $json 0

puts [CkJsonObject_emit $json]

# A successful response will have a status code = 200
if {[CkHttpResponse_get_StatusCode $resp] != 200} then {
    puts "Failed."
} else {
    puts "mediaId: [CkJsonObject_stringOf $json mediaId]"
    puts "href: [CkJsonObject_stringOf $json _links.self.href]"
    puts "status: [CkJsonObject_stringOf $json status]"
    puts "Success."
}

# Here is an example of a successful response:

# 	{ 
# 	  "_links": { 
# 	    "self": { 
# 	      "href": "/v2-beta/media/856a1e85-c847-4c3c-b7a4-6cf15cd51db4"
# 	    }
# 	  },
# 	  "mediaId": "856a1e85-c847-4c3c-b7a4-6cf15cd51db4",
# 	  "status": "accepted",
# 	  "metadata": {}
# 	

delete_CkHttp $http
delete_CkHttpRequest $req
delete_CkStringBuilder $sbAuth
delete_CkHttpResponse $resp
delete_CkJsonObject $json