Sample code for 30+ languages & platforms
PureBasic

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 PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkHttpRequest.pb"

Procedure ChilkatExample()

    success.i = 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:
    accessToken.s = "VOICEBASE_TOKEN"

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    req.i = CkHttpRequest::ckCreate()
    If req.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttpRequest::setCkHttpVerb(req, "POST")
    CkHttpRequest::setCkPath(req, "/v2-beta/media")
    CkHttpRequest::setCkContentType(req, "multipart/form-data")

    ; Add the access (bearer) token to the request, which is a header
    ; having the following format:
    ; Authorization: Bearer <userAccessToken>
    sbAuth.i = CkStringBuilder::ckCreate()
    If sbAuth.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkStringBuilder::ckAppend(sbAuth,"Bearer ")
    CkStringBuilder::ckAppend(sbAuth,accessToken)
    CkHttpRequest::ckAddHeader(req,"Authorization",CkStringBuilder::ckGetAsString(sbAuth))

    success = CkHttpRequest::ckAddFileForUpload2(req,"media","qa_data/wav/msg_123_abc.wav","audio/x-wav")
    If success = 0
        Debug CkHttpRequest::ckLastErrorText(req)
        CkHttp::ckDispose(http)
        CkHttpRequest::ckDispose(req)
        CkStringBuilder::ckDispose(sbAuth)
        ProcedureReturn
    EndIf

    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpSReq(http,"apis.voicebase.com",443,1,req,resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkHttpRequest::ckDispose(req)
        CkStringBuilder::ckDispose(sbAuth)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ; Examine the response status code and body.
    Debug "Response status code = " + Str(CkHttpResponse::ckStatusCode(resp))

    ; The response should be JSON, even if an error.
    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoad(json,CkHttpResponse::ckBodyStr(resp))
    CkJsonObject::setCkEmitCompact(json, 0)

    Debug CkJsonObject::ckEmit(json)

    ; A successful response will have a status code = 200
    If CkHttpResponse::ckStatusCode(resp) <> 200
        Debug "Failed."
    Else
        Debug "mediaId: " + CkJsonObject::ckStringOf(json,"mediaId")
        Debug "href: " + CkJsonObject::ckStringOf(json,"_links.self.href")
        Debug "status: " + CkJsonObject::ckStringOf(json,"status")
        Debug "Success."
    EndIf

    ; 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": {}
    ; 	


    CkHttp::ckDispose(http)
    CkHttpRequest::ckDispose(req)
    CkStringBuilder::ckDispose(sbAuth)
    CkHttpResponse::ckDispose(resp)
    CkJsonObject::ckDispose(json)


    ProcedureReturn
EndProcedure