Workflow Sample

The most common use case contains 5 steps:

1. File Upload

You can choose your preferred way to deliver recordings:

I. The preferred method for uploading will require splitting the file into smaller “chunks”. For optimal upload speed, each chunk should be exactly 5MB. Only the last chunk can be less than 5MB. If a total file size is less than 5 MBs, then it can still be uploaded with async approach, since the last chunk (a single chunk in this case) can be less than 5MB. Overall, this process requires 3 different endpoints:

  1. GET{filename.mp3}&isAsync=true
  • No body is required as parameters are passed in the url.
  • Filename is whatever you choose to call the file, but the extension (i.e. mp3 or mp4) should match the file correctly.
  • This will return the URL endpoint (which includes uploadId and recordingId), to be used in steps 2 and 3. We will call it {URL1}.
  1. POST {URL1}?uploadId={UPLOADID}&recordingId={RECORDINGID}&chunkNumber=0
  • Prior to this step, you will split an audio file into parts of equal duration. Each audio chunk should be exactly 5MB, except for the last one.
  • You will use the URL provided in the response from step 1 above as the POST endpoint ({URL1}).
  • chunkNumber in url above should be sequential to that chunk number (i.e. 0,1,2,etc).
  • Body REQUEST includes file of the file “chunk” to upload. This field named should be called file.
  • Repeat this step for each chunk, then move to step 3.
  1. POST{uploadId}&recordingId={recordingId}
  • Once all chunks have been uploaded, this will commit them all and combine them into one recording.
  • There is no body required here, just pass values in the url again.

  • The simple method belows are being deprecated but can be used still:



Cache-Control: no-cache
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary1234567abcdefg
Content-Disposition: form-data; name="name"; filename="FILEPATH/MYFILE.mp3"
Content-Type: audio/mp3

  • By specifying publicly available url:



  "url": ""

If you choose upload via publicly available url, you will need to add additional logic on your side to check the status of recording.

It is not possible to order a recording which is not uploaded to our system.

This will return a recordingId.

2. Create Order

After an audio file has been successfully uploaded you are able to order a transcript. On this step you will send a list of recording id’s that will be in the order.

(Request object as Content-Type application/json) POST



This will return an Order json object.

You may also obtain the Order object using the following method: GET{orderId}

3. Update settings

Update settings within the recording object. It is most common to update type or output here. Use the endpoints below to obtain these expected values:

Type: GET

Speakers: GET

Output: GET

Turnaround: GET

Language: GET

Accent: GET{languageId}

Domain: GET

(Request object as Content-Type application/json) POST{orderId}/recordings/edit


          "id": "{recordingID}",
          "settings": {
               "language": "{languageId}",
               "accent": "{accentID}",
               "type": {type},
               "domain": {domain},
               "output": {output},
               "turnaround": {turnaround},
               "speakers": {speakers},
               "isNoisyAudio": false,
               "isHeavyAccent": false

Also if you have a promo code to use, you may apply it here:

(Request object as Content-Type application/json) POST{orderID}/promocode


     "code": "YOUR_PROMO_CODE"

4. Place Order

*IMPORTANT!!!* If you have been given a promo code to use, you MUST enter it before placing an order. Please see the above step for info about this.

Visit Billing Information to confirm that your billing information is setup correctly. You can also use a promo code created by the TranscribeMe Sales Team to bypass the credit card payment step and instead be billed by invoice.

(Request object as Content-Type application/json) POST{orderID}/place

Note the code for billingType below, as it should be passed as an array. REQUEST:

          "billingType": 0

To query the status of the order, use the following method: GET{recordingId}/status

For list of available status values use: GET

5. Get Results

You will receive transcription results within the agreed TAT. These are available in different formats.

To obtain the results as a json object use: GET{recordingId}/transcription

To download the file: POST


     "recordings": [
               "id": "{recordingId}",
               "ownerId": "{userId}"``
     "output": {output},
     "highlightedOnly": false,
     "removeStrikeout": false