API Documentation

General

Base Url: https://54i2k0z0vf.execute-api.cn-north-1.amazonaws.com.cn/prod/

HeaderRequiredDescription
x-sdk-key1YESYour SDK Key
originYESThe origin 2
Content-TypeYESapplication/json

1. Your SDK Key.

2. The domain name you associated to that specific SDK key. In localhost, you don't need to specify that origin.


  • The request for GET and DELETE endpoints are query-parameter.
  • The request for POST and PUT are json.

The response will always follow this format:

In case of success

{
  data: DATA OBJECT
}

In case of error

{
  error: 'ERROR MESSAGE'
}

Create an Event

  • Create an event associated to your SDK Key.
  • You can see all your events from your dashboard

Request Parameters

  • End Point /events
  • Method POST

Body Parameter:

ParameterTypeRequiredDescriptionExample
nameStringYESEvent NameMy SDK Event
startDateIntegerYESStarting date/time of your event. Time Stamp (ms)1630496799164
endDateIntegerYESEnding date/time of your event. Time Stamp (ms) 11630501799164
streamTypeEnumYESSee the Original Stream sectionvimeo
streamUrlStringYESSee the Original Stream section
hasRelayBooleanNOtrue value will show the relay language button to the interpreters and let them act as relay. By default is falsetrue
floorLanguageStringYESThe main language of your event.2en-US
subtitlesEnumNOSupported Values: '', AISubtitles , AISubtitlesTranslation. '' empty string means you want to receive simultaneous interpretation only, AISubtitles means you want to receive AI recognized subtitles, AISubtitlesTranslation means you want to receive AI Translated subtitles.''

1. The ending date must always be after the starting date.

2. See Akkadu's supported languages.


Original Stream

The interpreter requires to see the original audio/video that he has to translate. When creating/editing an event we have several attributes which allow you to config the event for different types of sources.

streamTypestreamUrlformatcomments
noneempty
youtuberequiredValid youtube URL
vimeorequiredValid vimeo URL
m3u8requiredhttps URL that ends with .m3u8
iframerequiredhttps URL.Your iframe will require import our iframe script in order to make the interpreter volume controls work properly
flvrequiredhttps URL that ends with .flv
akkaduPushRtmpemptyakkaduPushRtmp is a push RTMP URL provided by Akkadu where you will push your original stream. The push RTMP url has this format: rtmp://live.akkadu.com:1935/{Your Room Name}/{Your API key}. If you select akkaduPushRtmp leave the parameter streamUrl empty.

HTTP Request example

POST /events
Accept: application/json
x-sdk-key: {YOUR-KEY}

{
  "name": "My SDK Event",
  "startDate": 1630496799164,
  "endDate": 1630501799164,
  "streamUrl": "https://akkadu.com",
  "streamType": "other",
  "floorLanguage": "en-US",
  "hasRelay": true,
  "subtitles": ""
}

HTTP Response Example

{
  {
  "data": {
    "event": {
      "roomName": "zved", // Unique room name of your event
      "name": "My SDK Event", //Event readable name
      "streamType": "iframe", // Type of stream
      "streamUrl": "https://my-domain.com",
      "floorLanguage": "en-US", // The main language of your event
      "startDate": 1630496799164, // Starting date/time of your event
      "endDate": 1630501799164 // Ending date/time of your event
      "hasRelay": true, // Whether act as relay language is enabled or not
      "subtitles": "" // Type of subtitles or blank
    }
  },
}

Update an Event

Update an existing event using the roomName of the event.

Request Parameters

  • End Point /events

  • Method PUT

Query parameters:

ParameterTypeRequiredDescriptionExample
roomNameStringYESThe event you want to editzved

Body parameters:

ParameterTypeRequiredDescriptionExample
nameStringNOEvent nameMy SDK Event
startDateIntegerNOStarting date/time of your event. Time Stamp (ms)1630496799164
endDateIntegerNOEnding date/time of your event. Time Stamp (ms) 11630501799164
streamUrlStringNOSee the Original Stream section
streamTypeEnumNOSee the Original Stream sectionvimeo
hasRelayBooleanNOtrue value will show the relay language button to the interpreters and let them act as relay. By default is falsetrue
floorLanguageStringNOThe main language of your event.2. You can not update this value to a language used as interpreted languageen-US
subtitlesEnumNOSupported Values: '', AISubtitles , AISubtitlesTranslation. '' empty string means you want to receive simultaneous interpretation only, AISubtitles means you want to receive AI recognized subtitles, AISubtitlesTranslation means you want to receive AI Translated subtitles.''

1. The ending date must always be after the starting date.

2. See Akkadu's supported languages.

We have extra parameters to config the floor language when we stream the output of it together the interpreted streams. You can read more in Interpreter Stream Types section.

ParameterTypeRequiredDescriptionExample
floorPushUrlTypeEnumNOEmpty string or rtmp. Setting it to rtmp also requires to provide a valid floorRtmpKey and a key as floorPushUrl in the request bodyrtmp
floorPushUrlStringNOMust be a valid url according to the selected type.en-US
floorRtmpKeyStringNOFloor RTMP Url key, when the type rtmp is selected.my-key
floorPushVideoBooleanNOfalse means you only want to receive the interpreted audio, true means you want to receive video + interpreted audio.false

HTTP Request example

PUT /events?roomName={ROOM_NAME}
Accept: application/json
x-sdk-key: {YOUR-KEY}

{
  "name": "My SDK Event",
  "startDate": 1630496799164,
  "endDate": 1630501799164,
  "streamUrl": "https://akkadu.com",
  "streamType": "other",
  "floorLanguage": "en-US",
  "hasRelay": false,
  "subtitles": "" // Type of subtitles or blank
  "floorPushUrlType": "",
  "floorPushUrl": "",
  "floorRtmpKey": "",
  "floorPushVideo": false

}

HTTP Response Example

{
  {
  "data": {
    "event": {
      "roomName": "zved", // Unique room name of your event
      "name": "My SDK Event", //Event readable name
      "streamType": "iframe", // Type of stream
      "streamUrl": "https://my-domain.com",
      "floorLanguage": "en-US",
      "startDate": 1630496799164, // Starting date/time of your event
      "endDate": 1630501799164 // Ending date/time of your event
      "hasRelay": false // Whether act as relay language is enabled or not
      "subtitles": "", // Type of subtitles or blank
      "floorPushUrlType": "", // 'rtmp' or ''
      "floorPushUrl": "", // A valid RTMP URL if the floorPushUrlType is rtmp.
      "floorRtmpKey": "", // A string RTMP key if the floorPushUrlType is rtmp.
      "floorPushVideo": false // Weather you want to receive only audio or audio + video.
    }
  },
}

HTTP Example of Floor with RTMP Options

Only in the case of AISubtitlesTranslation AISubtitlesTranslation subtitles otpion you can config RTMP parameters in this end point.

PUT /events?roomName={ROOM_NAME}
Accept: application/json
x-sdk-key: {YOUR-KEY}

{
  "floorPushUrlType": "rtmp",
  "floorPushUrl": "rtmp://myweb.com/application/path",
  "floorRtmpKey": "my-rtmp-key",
  "floorPushVideo": true
}

Delete an Event

Delete an event by roomName.

Request Parameters

  • End Point /events

  • Method DELETE

Query parameters:

ParameterTypeRequiredDescriptionExample
roomNameStringYESDelete by roomNamezved

HTTP Request example

DELETE /events?roomName={ROOM_NAME}
Accept: application/json
x-sdk-key: {YOUR-KEY}

HTTP Response Example

We return the deleted event:

{
  {
  "data": {
    "event": {
      "roomName": "zved", // Unique room name of your event
      "name": "My SDK Event", //Event readable name
      "streamType": "iframe", // Type of stream
      "streamUrl": "https://my-domain.com",
      "floorLanguage": "en-US",
      "startDate": 1630496799164, // Starting date/time of your event
      "endDate": 1630501799164, // Ending date/time of your event
      "hasRelay": false // Whether act as relay language is enabled or not
    }
  },
}

Get Languages

Get all the languages supported by Akkadu for translation.

Request Parameters

End Point /events/languages
Method: GET

  • No parameters are required.

HTTP Request example

GET /events/languages
Accept: application/json

HTTP Response Example

{
  "data": {
    "languages": [
      {
        "name": "English", //Language Label
        "code": "en-US" // Language Code
      },
      {
        "name": "Chinese",
        "code": "zh-CN"
      },
      {
        "name": "Spanish",
        "code": "es-ES"
      }
  }
}

Get Event List

  • Get the list of all the events associated to a specific SDK KEY.
    • ['abcd','gfht']
  • You can also query by roomName.

Request Parameters

  • End Point /events

  • Method GET

Query parameters:

ParameterTypeRequiredDescriptionExample
roomNameStringNOFilter by room name1zved
  1. If the room name doesn`t exist, it will throw 404 Not found error. Otherwise you will get an array with one item only.

HTTP Request example

GET /events HTTP/1.1
Accept: application/json
x-sdk-key: {YOUR-KEY}

HTTP Response Example

We return the deleted event

{
  "data": {
    "events": [
      {
        "roomName": "zved", // Unique room name of your event
        "name": "My SDK Event", //Event readable name
        "streamType": "iframe", // Type of stream
        "streamUrl": "https://my-domain.com",
        "floorLanguage": "en-US",
        "startDate": 1630496799164, // Starting date/time of your event
        "endDate": 1630501799164 // Ending date/time of your event
        "hasRelay": true, // Whether act as relay language is enabled or not
        "subtitles": "", // Type of subtitles or blank
        "floorPushUrlType": "", // 'rtmp' or ''
        "floorPushUrl": "", // A valid RTMP URL if the floorPushUrlType is rtmp.
        "floorRtmpKey": "", // A string RTMP key if the floorPushUrlType is rtmp.
        "floorPushVideo": false, // Weather you want to receive only audio or audio + video
        "languages": [
            {
              "languages": "es-ES", // Language Code
              "pushUrl": "rtmps://media-service-url/path/key", // RTMP push URL
              "interpreters": ["interpreter1@akkadu.com", "interpreter2@akkadu.com"] // List of intepreters's emails
            },
            {
              "languages": "fr-FR",
              "pushUrl": "rtmps://media-service-url/path/key", // RTMP push URL
              "interpreters": ["interpreter3@akkadu.com", "interpreter4@akkadu.com"]
            }
          ]
        }
    ]

  },
}

Update the interpreters of an event

  • Each language of your event must have at least one interpreter.
    • Usually, the interpretation is performed by a pair of interpreters.
  • The interpreter must have previously registered in Akkadu dashboard
  • The chosen language code cannot be the same as the floor's language code. (The original language of your event)

Request Parameters

  • End Point /events/interpreters

  • Method PUT

Query parameters:

ParameterTypeRequiredDescriptionExample
roomNameStringYESThe event you want to editzved

Body parameters:

ParameterTypeRequiredDescriptionExample
languageCodeStringYESSupported Language Code 1es-ES
pair1StringNOInterpreter's email2 3 or empty string ''interpreter1@akkadu.com
pair2StringNOInterpreter's email2 3 or empty string ''interpreter2@akkadu.com
pushUrlTypeStringNOCheck Interpreter Stream Typesrtmp or ''
pushUrlStringNOCheck Interpreter Stream Typesrtmps://my-media-server/path/key or ''
pushVideoBooleanNOSpecific pushUrlTypes allow to push also the video. Check Interpreter Stream Typesfalse
rtmpKeyStringNOSpecific RTMP pushUrlTypes require to include the rtmpKey123123

1. See Akkadu's supported languages.

2. The interpreter's email has to be registered in Akkadu

3. The error instance failed to match exactly one schema (matched 0 out of 2)] means that the value shall be empty string or a valid email/url according to the parameter requirement.


Interpreter Stream

The interpreters translation (synced with the source video if set) can be pushed to a URL which you can display to your audience.

pushUrlTypepushUrlpushVideocomments
noneempty-
rtmprequiredtrue or falseRequires to be a valid url with rtmp, rtmps protocol or empty string ''. When pushUrl is set we will live stream the interpreted audio to this push RTMP url for this language. pushUrl key must be different for each language code

Error Codes

CodeDescription
400The parameters are wrong, or the required parameters are missing
401Not authorized. Your SDK Key is wrong or missing, or the origin is not matching the SDK key
403Forbidden. The operation is valid but not with the current values
404Not found (Check the message to know what wasn`t found)
409Conflict, some data is duplicated or not allowed.
412Internal Call Error
500Internal Server Error

HTTP Request example

PUT /events/interpreters?roomName={}
Accept: application/json
x-sdk-key: {YOUR-KEY}

{
  "languageCode": "es-ES", # Language code
  "pair1": "interpreter1@akkadu.com", # Interpreter's email *
  "pair2": "interpreter2@akkadu.com", # Interpreter's email
  "pushUrl": "rtmps://my-media-server/path/key" # RTMP Push URL
}

HTTP Response Example

We return the updated language

{
  "data": {
    {
      "languageCode": "es-ES",
      "pair1": "interpreter1@akkadu.com",
      "pair2": "interpreter2@akkadu.com",
      "pushUrl": "rtmps://my-media-server/path/key"
    },
  },
}