Contact support

Sync video content metadata (API)

Overview

With Equativ’s video content metadata API, video publishers can synchronize the metadata of their video content catalog with Equativ. Video content metadata describe the content that is being monetized, i. e. the content where an impression appears. The metadata includes attributes such as episode number, title, season, genre, album, producer etc. The API is mainly for publishers of Connected TV applications using Equativ to monetize their inventory. 

Supported industry standards

The API supports the following industry standards for video content metadata:

Authentication

For information about how to authenticate, refer to the API authentication article.

Errors

For all errors, the HTTP error code 403 Forbidden is being returned.

Error name Description
AccessDenied returned in case of unauthorized requests (see section “Authentication” above)
RowsNumberExceeded returned if the global limit of 10000 open RTB or MRSS configuration objects/items is exceeded 
UnableSaveContentMetadataToDb returned if the API is unable to process the objects/items, i. e. the object/item cannot be saved in the database

Limits

The global number of open RTB or MRSS objects/items is limited to 10000 objects/items.

API methods

POST /UploadVideoContentMetadata

At this time, the video content metadata API supports the POST method only. More methods (GET etc.) will follow soon.

When posting an object/item which already exists, all of the previously stored video content metadata of this object/item is wiped and the object/item is replaced by the new video content metadata payload. Partial updating of an existing object/item is not yet supported!

 

Both standards (Media RSS and IAB Open RTB) are supported when synchronizing video content metadata with the POST method: 

POST https://content.smartadserverapis.com/UploadVideoContentMetadata

Request sample – IAB open RTB

This request sample creates two Content objects with the Ids fake-id-1 and fake-id-2. If the objects were created successfully, the status code 201 Created is returned. 

[
    {
        "id": "fake-id-1",
        "episode": 1,
        "title": "fake-title-1",
        "series": "fake-series-1",
        "season": "fake-season-1",
        "artist": "fake-artist-1",
        "genre": "fake-genre-1",
        "album": "fake-album-1",
        ...
    },
    {
        "id": "fake-id-2",
        "episode": 2,
        "title": "fake-title-2",
        "series": "fake-series-2",
        "season": "fake-season-2",
        "artist": "fake-artist-2",
        "genre": "fake-genre-2",
        "album": "fake-album-2",
        ...
    }
]

Request sample – MRSS

This request sample creates two items with the Ids fake-id-1 and fake-id-2. If the items were created successfully, the status code 201 Created is returned.

<?xml version="1.0" encoding="UTF-8" ?>
<rss xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:media="http://search.yahoo.com/mrss/"
  xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
  xmlns:dfpvideo="http://api.google.com/dfpvideo"
  xmlns:tms="http://data.tmsapi.com/v1.1"
  version="2.0">
  <channel>
    <atom:link rel="next" href="https://www.fake.com/?page2" />
    <item>
        <dfpvideo:contentId>fake-id-1</dfpvideo:contentId>
        <dfpvideo:lastModifiedDate>2022-09-21T08:00:00+01:00</dfpvideo:lastModifiedDate>
        <title>Fake 1</title>
        <dfpvideo:cuepoints>12.345,67</dfpvideo:cuepoints>
        <dfpvideo:keyvalues key="episode" value="1" type="string" />
        <dfpvideo:keyvalues key="season" value="1" type="string" />
        <dfpvideo:thirdPartyContentId cms="youtube" id="fake-3rd-party-content-id-1" />
        <media:content url="https://www.fake.com/video?qwerty" duration="1234" />
        <media:status state="active" />
        <media:thumbnail url="https://www.fake.com/thumbnail-1.jpg" width="100" height="50" />
        <pubDate>2020-01-01T00:00:00+01:00</pubDate>
        <tms:tmsId>EP123400000000</tms:tmsId>
        <tms:tmsSeriesId>SH123400000000</tms:tmsSeriesId>
        <dfpvideo:ingestUrl type="application/x-mpegURL" preconditioned="false">https://fake.com/?v=123.m3u8</dfpvideo:ingestUrl>
        <dfpvideo:lastMediaModifiedDate>2021-01-01T00:00:00+01:00</dfpvideo:lastMediaModifiedDate>
        <dfpvideo:closedCaptionUrl language="en" name="English (CC)" characteristics="public.accessibility.describes-music-and-sound" type="text/vtt">https://fake.com/subtitle.vtt</dfpvideo:closedCaptionUrl>
        <dfpvideo:fw_caid>123456789000</dfpvideo:fw_caid>
    </item>
    <item>
        <dfpvideo:contentId>fake-id-2</dfpvideo:contentId>
        <dfpvideo:lastModifiedDate>2022-09-21T08:00:00+01:00</dfpvideo:lastModifiedDate>
        <title>Fake 2</title>
        <dfpvideo:cuepoints>12.345,67</dfpvideo:cuepoints>
        <dfpvideo:keyvalues key="episode" value="2" type="string" />
        <dfpvideo:keyvalues key="season" value="1" type="string" />
        <dfpvideo:thirdPartyContentId cms="youtube" id="fake-3rd-party-content-id-2" />
        <media:content url="https://www.fake.com/video?qwerty" duration="1234">
            <media:status state="deleted" />
            <media:thumbnail url="https://www.fake.com/thumbnail-2.jpg" width="100" height="50" />
        </media:content>
        <pubDate>2020-01-01T00:00:00+01:00</pubDate>
        <tms:tmsId>EP123400000000</tms:tmsId>
        <tms:tmsSeriesId>SH123400000000</tms:tmsSeriesId>
        <dfpvideo:ingestUrl type="application/dash+xml" preconditioned="true">https://fake.com//playlist.mpd</dfpvideo:ingestUrl>
        <dfpvideo:lastMediaModifiedDate>2021-01-01T00:00:00+01:00</dfpvideo:lastMediaModifiedDate>
        <dfpvideo:closedCaptionUrl language="en" name="English (CC)" characteristics="public.accessibility.describes-music-and-sound" type="text/vtt">https://fake.com/subtitle.vtt</dfpvideo:closedCaptionUrl>
        <dfpvideo:fw_caid>123456789000</dfpvideo:fw_caid>
    </item>
    <dfpvideo:version>2</dfpvideo:version>
  </channel>
</rss>