# Comprehend Media
Comprehend audio or video with Backtracks Media Intelligence to get powerful contextual understanding of what that media is actually about. Backtracks will kick off a comprehension job
to understand what the media is about in detail including transcripts with timings of what is actually said, advertising categories that the media maps to, keywords, topics, brand safety scoring and more.
# Comprehend
Comprehend audio and video with media_id
. The /comprehend
API endpoint is the core endpoint for media intelligence
calls.
TIP
Backtracks supports automatic language detection and transcription in 80+ languages.
# Comprehend Request
Initiate a comprehend
request to kick-off a job to understand and comprehend the meaning of the media. After submitting the request, the processing and completion status of the job may be verified, and when the job is complete then the results will contain data like a full transcript with timings and the data related to the specified options (i.e. advertising categories).
POST https://api.backtracks.fm/v1/media-intelligence/comprehend HTTP/1.1
Accept: application/json
Authorization: JWT <your backtracks access token>...
Content-Type: application/json
{
"media_id":"<media_id>",
"options":{
"iab_categories":true,
"keywords":true,
"entities":true
},
"webhook":{
"url":"https://example.com/abc-123",
"headers":{
"Authorization":"Bearer abc123",
"X-Custom-Header":"456"
}
}
}
TIP
Backtracks will automatically isolate speech and remove background sounds when understanding media, but in general better input quality will result in better comprehension.
# Parameters
Property | Type | Required | Description |
---|---|---|---|
media_id | string | y | universal media id |
language_code | string | n | This is an optional hint. If it is not specified then the language will be automatically detected. |
options | object | n | These are the options for which types of data to generate or return |
webhook | object | n | These are the settings for webhook or callback on request success or error |
# Options
The options
object represents the types of data requested for the media intelligence comprehend response
. If the options
object is not specified or any of the options does not receive an explict value then the default
value will apply. The transcript
flag/option
is the only option
that has a default
value of true
if a value for the property is omitted.
Property | Type | Required | Default | Description |
---|---|---|---|---|
transcript | boolean | n | true | Transcribe media that is audio or video content |
iab_categories | boolean | n | false | Detect IAB taxonomy categories for ads and content |
keywords | boolean | n | false | Detect keywords |
entities | boolean | n | false | Detect people , products , organizations , etc. |
TIP
If processing is required to fulfill the request, then this will be completed implicitly if needed (i.e. keywords
are requested a transcript
needs to be generated even if the transcript
is not requested in the response).
# Webhook
The webhook
object represents the optional settings for a webhook
or callback
that is called via HTTP POST
on success
or error
of the request.
# Parameters
Property | Type | Required | Description |
---|---|---|---|
url | string | y | URL to POST to on success or error |
headers | object | n | Key/value pairs of HTTP headers to echo in the webhook POST |
# Webhook Payload
Webhooks are sent via HTTP POST
to the URL
specified in the request. The job_id
/id
of the comprehend
request and the success
or error
status of the request is sent in the payload. The receiver of the webhook would then call into the API to retreive the data for the request by the job_id
/id
of the request. Receiving endpoints that error or timeout without returning an HTTP 200 series
status code (i.e. 200, 201, 202, etc.) in less than 30 seconds are retried for up to 24 hours.
HTTP/1.1 200 OK
User-Agent: Backtracks/1.0 (+https://backtracks.fm)
Content-Type: application/hal+json; charset=utf-8
Header-Abc: <Header value>
{
"id": "<id>",
"status": "success|error"
}
# Comprehend Response
The comprehend
job id
is returned with the current status of the job
. To check on the status of the job and return the result of the job, the API caller would call the self
link
returned in the response to get the comprehend job status or get the comprehend job result.
HTTP/1.1 202 Accepted
Location: https://api.backtracks.fm/v1/media-intelligence/comprehend
Content-Type: application/hal+json; charset=utf-8
{
"id": "<id>",
"status": "processing",
"_links": {
"self": {
"href": "https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>"
}
}
}
# Comprehend Status
When a comprehend
job is initiated the system returns the jobs status in the response immediately. The API caller may check on the status of the job and when the job is complete the result will also be returned when the job is complete.
# Get Comprehend Status Request
You may retrieve the status of the comprehend
process for a particular comprehend job id
with the following API call.
# Parameters
Property | Type | Description |
---|---|---|
id | string | Comprehend job id |
GET https://api.backtracks.fm/v1/media-intelligence/comprehensions/dde0d890-9c13-40de-be68-01c7b1fa9246
Accept: application/json
Authorization: JWT <your backtracks access token>...
# Get Comprehend Status Response
HTTP/1.1 200 OK
Location: https://api.backtracks.fm/v1/media-intelligence/comprehensions/dde0d890-9c13-40de-be68-01c7b1fa9246
Content-Type: application/hal+json; charset=utf-8
{
"id": "dde0d890-9c13-40de-be68-01c7b1fa9246",
"status": "processing",
"_links": {
"self": {
"href": "https://api.backtracks.fm/v1/media-intelligence/comprehensions/dde0d890-9c13-40de-be68-01c7b1fa9246"
}
}
}
The primary comprehend
job statuses are below. When a comprehend
job is complete and successful the status will be success
. A comprehend
job is called a comprehension
.
# Statuses
Name | Description |
---|---|
queued | Request is queued and waiting to start |
processing | Request is processing |
success | Request was successful |
error | Request errored |
If the comprehend
request by media_id
has not started, needs processing, or errored then a response like the following will be returned by the API. The caller may then check on the status of processing by calling the comprehension status
endpoints using the id
(i.e. job id
) returned from the processing response to determine when the data is available.
HTTP/1.1 200 OK
Location: https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>
Content-Type: application/hal+json; charset=utf-8
{
"id": "<id>",
"status": "<queued|processing|success|error>",
"_links": {
"self": {
"href": "https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>"
}
}
}
# Success
When a comprehend
is complete and successful then a success
response is returned with an HTTP 200
status code in the the response. The results of the comprehend
job are returned in the response when the job is complete.
HTTP/1.1 200 OK
Location: https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>
Content-Type: application/hal+json; charset=utf-8
{
"id":"<id>",
"media_id":"<media_id>",
"language_code":"en_us",
"status":"complete",
"results":[
{
"final":true,
"transcript":{
"status":"complete",
"items":[
{
"id":"c0",
"start":0.0,
"end":11.953,
"body":"This is the text of a segment of the transcript. There will be N segments."
}
],
"_links":{
"self":{
"href":"https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>/transcript"
},
"srt":{
"href":"https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>/transcript/srt"
},
"vtt":{
"href":"https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>/transcript/vtt"
}
}
},
"iab_categories":{
"status":"complete",
"items":[
{
"label":"Media Industry",
"score":0.3827972114086151,
"text":"Backtracks Media Intelligence enables contextual understanding of audio and video at scale. Get automatic transcripts, topic identification, and contextual understanding of media from what is actually said in ads and content.",
"tier_1":"Business and Finance",
"tier_2":"Industries",
"tier_3":"Media Industry",
"iab_id":"106"
},
{
"label":"Advertising Industry",
"score":0.3541545867919922,
"text":"Backtracks detects the keywords, people, products, dates, companies, organizations, and more, like brand safety categorizations and scoring. It even automatically maps media to advertising categories supported by programmatic ad platforms to enable monetization opportunities. Unlock value through understanding, and learn more at backtracks.fm.",
"tier_1":"Business and Finance",
"tier_2":"Industries",
"tier_3":"Advertising Industry",
"iab_id":"91"
}
],
"summary":{
"Media Industry":1.907792329788208,
"Advertising Industry":1.6625179946422577
}
},
"keywords":{
"status":"complete",
"items":[
{
"label":"backtracks media",
"score":0.26368705417506344
},
{
"label":"contextual understanding",
"score":0.239762634514837
},
{
"label":"safety categorizations",
"score":0.1666656878643069
}
]
},
"entities":{
"status":"complete",
"items":[
{
"label":"Backtracks Media Intelligence",
"type":"PRODUCT"
},
{
"label":"Backtracks",
"type":"ORG"
},
{
"label":"backtracks.fm",
"type":"ORG"
}
]
}
}
],
"_links":{
"self":{
"href":"https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>"
}
}
}
# Advertising Categories & Topics
Enable contextual and programmatic advertising in audio and video by mapping what is actually said in media to advertising categories and topics
. This granular level of advertising category and topic
mapping allows for surfacing contextual data for advertising use cases. For example, in media or media segments about automobiles the most appropriate ads may be automotive
ads, ads and content that are both about autombiles may be an appropriate match, etc.
TIP
Backtracks will automatically map which of 698 IAB ad and content taxonomy categories are applicable to the media.
# Advertising Categories Response
In the response from a comprehend
request, aka a comprehension
, the IAB advertising and content categories are returned if iab_categories
is set to true
in the options
of the comprehend
request.
{
"iab_categories":{
"status":"complete",
"items":[
{
"label":"Media Industry",
"score":0.3827972114086151,
"text":"Get automatic transcripts, topic identification, and contextual understanding of media from what is actually said in ads and content.",
"tier_1":"Business and Finance",
"tier_2":"Industries",
"tier_3":"Media Industry",
"iab_id":"106"
}
],
"summary":{
"Media Industry":1.907792329788208,
"Advertising Industry":1.6625179946422577
}
}
}
# Advertising Categories by Overall Media
Determine the overall advertising categories
for a piece of media. For example, the categories for ad creative/media or episode content may be automotive
and auto repair
. This is represented by the summary
property/object of the of the iab_categories
.
{
"iab_categories":{
"status":"complete",
"summary":{
"Automotive":5.570719301700592,
"Auto Repair":1.907792329788208
}
}
}
# Advertising Categories by Segment
In a piece of audio or video media, the topics discussed may change over the duration of the media. For example, the advertising categories
associated with one segment of the media are different than the advertising categories
associated with another segment where different topics are discussed in the media. This is represented by the items
property/object of the of the iab_categories
.
{
"iab_categories":{
"status":"complete",
"items":[
{
"label":"Media Industry",
"score":0.3827972114086151,
"text":"Get automatic transcripts, topic identification, and contextual understanding of media from what is actually said in ads and content.",
"tier_1":"Business and Finance",
"tier_2":"Industries",
"tier_3":"Media Industry",
"iab_id":"106"
}
]
}
}
# Brand Safety & Sensitive Content
Automatically determine if media (i.e. ads or content) contains sensitive topics. This is useful for automated ad and content categorization as well as brand safety. Sensitive topics are represented by the summary
property/object of the of the iab_categories
response data.
{
"iab_categories":{
"status":"complete",
"summary":{
"Illegal Drugs, Tobacco, eCigarettes, Vaping, Alcohol":1.6625179946422577,
"Obscenity and Profanity":1.4562954008579254,
"Online Piracy":1.3775753378868103
}
}
}
# Sensitive Topics
Topic |
---|
Adult & Explicit Sexual Content |
Arms & Ammunition |
Crime & Harmful Acts to Individuals, Society & Human Right Violations |
Death, Injury, or Military Conflict |
Debated Sensitive Social Issues |
Hate Speech and Acts of Aggression |
Illegal Drugs, Tobacco, eCigarettes, Vaping, Alcohol |
Obscenity and Profanity |
Online Piracy |
Spam or Harmful Content |
Terrorism |
# Keywords
Determine exactly what the keywords (or keyphrases) are in the media. This is useful for contextual targeting, search, tagging, and more. When keywords
is set to true
in the options
of the comprehend
request, the detected keywords are returned in the success
job results response.
# Keywords Response
{
"keywords":{
"status":"complete",
"items":[
{
"label":"backtracks media",
"score":0.26368705417506344
},
{
"label":"contextual understanding",
"score":0.239762634514837
},
{
"label":"safety categorizations",
"score":0.1666656878643069
}
]
}
}
# Topics and Entities
Determine exactly what topics, people, places, etc. are discussed in media. When entities
is set to true
in the options
of the comprehend
request, the detected topic and entity types are returned in the success
job results response.
{
"entities":{
"status":"complete",
"items":[
{
"label":"Backtracks Media Intelligence",
"type":"PRODUCT"
},
{
"label":"Backtracks",
"type":"ORG"
},
{
"label":"backtracks.fm",
"type":"ORG"
}
]
}
}
# Topic Types
Type | Description |
---|---|
PERSON | People |
NORP | Nationalities or groups |
FAC | Facilities, buildings, airports, highways, bridges, etc. |
ORG | Organizations, companies, agencies, institutions, etc. |
GPE | Geopolitical entities, Countries, cities, states, etc |
LOC | Locations, mountain ranges, bodies of water, etc. |
PRODUCT | Products, objects, vehicles, foods, etc |
EVENT | Named events, sporting events, etc. |
WORK_OF_ART | Titles of paintings, books, songs, etc. |
LAW | Laws |
LANGUAGE | Language |
DATE | Abolute dates, relative dates, or time periods |
TIME | Times smaller than a day |
PERCENT | Percentage |
MONEY | Monetary values, including units |
QUANTITY | Measurements such as weight or distance |
ORDINAL | First, second, third, etc. |
CARDINAL | Numerals that do not fall under any other type |
# Accessibility and Captions
Backtracks Media Intelligence creates caption and subtitle formats from generated transcripts. These caption and subtitle formats may be used for accessibility, loading into media players, etc.
# Caption Formats
The Backtracks Media Intelligence API supports converting transcripts to the most utilized caption and subtitle formats with support for srt
and vtt
.
Type |
---|
SRT |
VTT |
To convert the transcript to a caption or subtitle format, utilize the _links
object and navigate to the key or node for the file format. For exmaple, to access the transcript in the vtt
file format find the link in the _links
section with the key of vtt
.
TIP
Backtracks Media Intelligence APIs are HAL+JSON
, meaning that the content type for API responses is application/hal+json
and that links to resources follow a self-describing pattern in the responses returned. For more information on HAL+JSON
click here.
{
"transcript":{
"_links":{
"self":{
"href":"https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>/transcript"
},
"srt":{
"href":"https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>/transcript/srt"
},
"vtt":{
"href":"https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>/transcript/vtt"
}
}
}
}
For example, the video file below has captions provided in the srt
file format.
TIP
To force a download of the caption or subtitle file add the querystring parameter of download=true
to the file format URL. This will return the bytes of the file instead of returning the contents as a string, json
, etc. Example: https://api.backtracks.fm/v1/media-intelligence/comprehensions/<id>/transcript/vtt?download=true
.
# Supported Languages
The following 80+ languages are supported for Media Intelligence (in transcription).
Language Code (language_code) | Native Language Name | English Display Name |
---|---|---|
af | Afrikaans | Afrikaans |
am | አማርኛ | Amharic |
ar | العربية | Arabic |
as | অসমীয়া | Assamese |
az | azərbaycan | Azerbaijani |
ba | Bashkir | Bashkir |
bg | български | Bulgarian |
bn | বাংলা | Bangla |
bo | བོད་སྐད་ | Tibetan |
br | brezhoneg | Breton |
bs | bosanski | Bosnian |
ca | català | Catalan |
cs | čeština | Czech |
cy | Cymraeg | Welsh |
da | dansk | Danish |
de | Deutsch | German |
el | Ελληνικά | Greek |
en | English | English |
es | español | Spanish |
et | eesti | Estonian |
eu | euskara | Basque |
fa | فارسی | Persian |
fi | suomi | Finnish |
fo | føroyskt | Faroese |
fr | français | French |
gl | galego | Galician |
gu | ગુજરાતી | Gujarati |
ha | Hausa | Hausa |
hi | हिन्दी | Hindi |
hr | hrvatski | Croatian |
ht | Haitian Creole | Haitian Creole |
hu | magyar | Hungarian |
id | bahasa Indonesia | Indonesian |
is | íslenska | Icelandic |
it | italiano | Italian |
iw | עברית | Hebrew |
ja | 日本語 | Japanese |
jw | Jawa | Javanese |
ka | ქართული | Georgian |
kk | қазақ тілі | Kazakh |
km | ខ្មែរ | Khmer |
kn | ಕನ್ನಡ | Kannada |
ko | 한국어 | Korean |
la | Lingua latina | Latin |
lb | Lëtzebuergesch | Luxembourgish |
ln | lingála | Lingala |
lo | ລາວ | Lao |
lt | lietuvių | Lithuanian |
lv | latviešu | Latvian |
mg | Malagasy | Malagasy |
mk | македонски | Macedonian |
ml | മലയാളം | Malayalam |
mn | монгол | Mongolian |
mr | मराठी | Marathi |
ms | bahasa Malaysia | Malay |
mt | Malti | Maltese |
my | မြန်မာ | Burmese |
nl | Nederlands | Dutch |
nn | norsk nynorsk | Norwegian Nynorsk |
no | norsk | Norwegian |
oc | Occitan | Occitan |
pa | ਪੰਜਾਬੀ | Punjabi |
pl | polski | Polish |
ps | پښتو | Pashto |
pt | português | Portuguese |
ro | română | Romanian |
ru | русский | Russian |
sa | संस्कृत भाषा | Sanskrit |
sd | سنڌي | Sindhi |
si | සිංහල | Sinhala |
sk | slovenčina | Slovak |
sl | slovenščina | Slovenian |
sn | chiShona | Shona |
so | Soomaali | Somali |
sq | shqip | Albanian |
sr | српски | Serbian |
su | Basa Sunda | Sundanese |
sv | svenska | Swedish |
ta | தமிழ் | Tamil |
te | తెలుగు | Telugu |
tg | тоҷикӣ | Tajik |
th | ไทย | Thai |
tk | türkmen dili | Turkmen |
tl | Filipino | Filipino |
tr | Türkçe | Turkish |
tt | татар | Tatar |
uk | українська | Ukrainian |
ur | اردو | Urdu |
uz | o‘zbek | Uzbek |
vi | Tiếng Việt | Vietnamese |
yi | ייִדיש | Yiddish |
yo | Èdè Yorùbá | Yoruba |
zh | 中文 | Chinese |