Netflix Backlot Source Requests & Delivery Management API
This is a working draft of the Netflix Backlot Source Requests & Delivery Management API. Note that the API specifications are subject to change.
Authentication ¶
Partner should obtain the API key (client_id and client_secret) from the Backlot Account Management UI.
The client application should obtain an access_token using the API key and user credentials through the Authentication API and pass it in the Authorization header for all API calls.
Host: https://meechum.netflix.com
Authentication ¶
AuthenticatePOST/as/token.oauth2
Example URI
Authenticate using user/pwd. These are the parameters: grant_type, client_id, client_secret, username, password, validator_id, scope
Headers
Content-Type: application/x-www-form-urlencoded
Body
grant_type=password&client_id=[client]&client_secret=[key]&username=[user]&password=[pwd]&validator_id=PartnerDirectoryProd&scope=sourcedelivery
200
Headers
Content-Type: application/json
Body
{
"access_token": "8qobiJYvkzp…..RIuONxaxblANw2aUE",
"refresh_token": "ruD6CDRbAh6….Lz9tdV1YYBMGQyt0",
"token_type": "Bearer",
"expires_in": 7199
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"access_token": {
"description": "The access token",
"type": "string"
},
"refresh_token": {
"type": "string"
},
"token_type": {
"enum": [
"Bearer"
]
},
"expires_in": {
"description": "The lifetime in seconds of the access token",
"type": "integer"
}
}
}
401
Headers
Content-Type: application/json
Body
{
"status": 401,
"error": "Unauthorized",
"message": "Authentication failed",
"errorCode": ""
}
Authenticate by refreshing an already obtained token (before it expires). Parameters are grant_type, client_id, client_secret and refresh_token
Headers
Content-Type: application/x-www-form-urlencoded
Body
grant_type=refresh_token&client_id=[client]&client_secret=[key]&refresh_token=[token]&validator_id=PartnerDirectoryProd&scope=sourcedelivery
200
Headers
Content-Type: application/json
Body
{
"access_token": "bgBopBYNSnoOvaf1XJw279W83iN9",
"refresh_token": "zej2V35b0Ez66nxO4yVIV02RprT4KMhtsgyLuudjON",
"token_type": "Bearer",
"expires_in": 7199
}
400
Headers
Content-Type: application/json
Body
{
"error": "invalid_grant",
"error_description": "unknown, invalid, or expired refresh token"
}
Requests ¶
Host: https://backlot-api.prod.netflix.net
Request Collection ¶
List requestsGET/v1/requests{?state,country,title,packageId,sourceType,sourceLanguage,requestStatus,contentPartner,subAssignedFulfillmentPartner,since,until,inspectionStatus}
Example URI
- state
string
(optional) Example: openThe pre-defined states to search
Choices:
open
overdue
fp_unassigned
fp_assigned
materials_not_received
materials_received
materials_accepted
redelivery_requested
due_in_a_week
due_in_2_weeks
new
delivered
recently_cancelled
processed
- country
string
(optional) Example: US,CAComma separated list of country codes (ISO 2 country code format) to search
- title
string
(optional) Example: titleTitle to search
- packageId
number
(optional) Example: 12345,22222Comma separated list of Netflix PackageIds to search
- sourceType
string
(optional) Example: subsComma separated list of request asset types to search
Choices:
video
video_av_muxed
audio
secondary_audio
subs
sdh_cc
forced_sub
commentary_audio
commentary_timed_text
descriptive_audio
dub_card_text
dub_card_image
language_template
audio_print_master
audio_m_and_e
locked_proxy
final_script
edit_pro_session
mix_pro_session
premix_wav
near_field_print_master_secondary
near_field_dialogue_audio_stem_secondary
theatrical_print_master_secondary
theatrical_dialogue_audio_stem_secondary
dub_script
as_recorded_dubbing_script
pivot_language_dialogue_list
audio_description_script
near_field_audio_description_audio_stem_secondary
theatrical_audio_description_audio_stem_secondary
audio_description_mix_pro_tool_session
- sourceLanguage
string
(optional) Example: enComma separated list of language codes (BCP47 format).
- requestStatus
string
(optional) Example: redelivery_requestedComma separated list of request status.
Choices:
open
delivered
processed
cancelled
redelivery_requested
upgraded
- contentPartner
string
(optional) Example: 1cf3dfc6-8a88-4efb-bd28-959d19fe074aComma separated list of content partner ids
- subAssignedFulfillmentPartner
string
(optional) Example: 1cf3dfc6-8a88-4efb-bd28-959d19fe0742Comma separated list of sub assigned partner ids
- since
string
(optional) Example: 2016-04-01T00:00:00.000+0000Datetime represented as string in the ISO 8601 format:
yyyy-MM-ddTHH:mm:ss.SSSZZ
. Must be url encoded. If this parameter is specified, only requests with lastUpdated greater than or eqeual to the specified Datetime will be returned- until
string
(optional) Example: 2016-04-15T00:00:00.000+0000Datetime represented as string in the ISO 8601 format:
yyyy-MM-ddnTHH:mm:ss.SSSZZ
. Must be url encoded. If this parameter is specified, only requests with lastUpdated less than or eqeual to the specified Datetime will be returned- inspectionStatus
string
(optional) Example: successComma separated list of inspection status.
Choices:
pending
waiting_for_inspection
inspecting
success
error
Headers
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
200
Headers
Content-Type: application/json
Body
[
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"packageId": 1234,
"contentPartnerId": "7833dfc6-8a88-4efb-bd28-959d19fe0741",
"contentPartner": "Disney",
"fulfillmentPartnerId": "67afdfc6-8a88-4efb-bd28-959d19fe0741",
"fulfillmentPartner": "Visual Data",
"subAssignedFulfillmentPartnerId": "6e0f0e30-86b1-11e2-b563-123139330741",
"subAssignedFulfillmentPartnerName": "Fotokem",
"translatorCreditWaiverPresent": false,
"estimatedDeliveryDate": "2016-01-05",
"estimatedDeliveryDateChangeReason": "EARLY_DELIVERY",
"catalogId": "",
"movieInfo": {
"movieId": 12345,
"movieType": "movie",
"movieTitle": "",
"releaseYear": 2015,
"showName": "",
"seasonName": "",
"episodeName": "",
"original": false,
"originalLanguage": "en"
},
"packageTags": [
"tag1",
"tag2"
],
"countries": [
"JP",
"US"
],
"dueOn": "2016-03-01",
"subAssignedDate": "2016-01-05",
"deliveredOn": "2016-02-28",
"lastUpdated": "2016-03-01",
"proxyState": "ACTIVE",
"dealId": 12345,
"assignedDate": "2016-01-05",
"hasQCBlockers": false,
"priority": "normal",
"sourceType": "video",
"sourceLanguage": "*",
"materialStatus": "received",
"serviceType": "create",
"requestType": "new",
"requestStatus": "delivered",
"sourceElementSubType": "CREDIT",
"inspectionStatus": "success",
"billing": "to_content_partner",
"sourcing": "netflix_external_sourced",
"contractId": 23800,
"bucketData": {
"OVERDUE_UNDELIVERED": [
"OVERDUE_UNDELIVERED"
],
"ON_TRACK": [
"ON_TRACK"
]
},
"issues": [
"error1",
"error2"
],
"dayAfterBroadcast": false,
"dayOfBroadcast": false,
"actionEligibilities": [
{
"action": "REJECT",
"isEligible": false,
"reasonCode": "Partner-initiated redeliveries are only available for Non-Branded Title Source Requests. Reach out to your Netflix partners to request redelivery."
}
]
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"movieInfo": {
"type": "object",
"properties": {
"movieId": {
"type": "integer"
},
"movieType": {
"type": "string",
"enum": [
"movie",
"tv_episode",
"supplemental"
]
},
"movieTitle": {
"type": "string"
},
"releaseYear": {
"type": "integer"
},
"showName": {
"type": "string"
},
"seasonName": {
"type": "string"
},
"episodeName": {
"type": "string"
},
"original": {
"type": "boolean"
},
"originalLanguage": {
"type": "string",
"description": "Original language code in BCP47 format."
}
}
}
},
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "Netflix Request Id (UUID)"
},
"packageId": {
"type": "integer",
"description": "Netflix Package Id"
},
"contentPartnerId": {
"type": "string",
"description": "Content Partner Id"
},
"contentPartner": {
"type": "string",
"description": "Name of the Content Partner"
},
"fulfillmentPartnerId": {
"type": "string",
"description": "Fulfillment Partner Id"
},
"fulfillmentPartner": {
"type": "string",
"description": "Name of the Fulfillment Partner"
},
"subAssignedFulfillmentPartnerId": {
"type": "string",
"description": "Sub Assigned Fulfillment Partner Id"
},
"subAssignedFulfillmentPartnerName": {
"type": "string",
"description": "Name of the sub assigned fulfillment partner"
},
"translatorCreditPresent": {
"type": "boolean",
"description": "Is there a translator credit available"
},
"translatorCreditWaiverPresent": {
"type": "boolean",
"description": "Is a waiver for translator credit present on file"
},
"estimatedDeliveryDate": {
"type": "string",
"format": "date-time"
},
"estimatedDeliveryDateChangeReason": {
"type": "string",
"enum": [
"PRODUCTION_SCHEDULE_CHANGES",
"RECEIVED_WORKABLE_MATERIALS_LATE",
"FULFILLMENT_PARTNER_SCHEDULE_DELAYS",
"EARLY_DELIVERY",
"REDELIVERY_REQUESTED_BY_NETFLIX",
"PENDING_EXTERNAL_ACTION"
]
},
"catalogId": {
"type": "string"
},
"movieInfo": {
"$ref": "#/definitions/movieInfo"
},
"packageTags": {
"type": "array",
"items": {
"type": "string"
}
},
"countries": {
"type": "array",
"items": {
"type": "string"
}
},
"dueOn": {
"type": "string",
"format": "date-time"
},
"subAssignedDate": {
"type": "string",
"format": "date-time"
},
"deliveredOn": {
"type": "string",
"format": "date-time"
},
"lastUpdated": {
"type": "string",
"format": "date-time"
},
"proxyState": {
"type": "string",
"enum": [
"NOT_AVAILABLE",
"ACTIVE",
"UPGRADED"
]
},
"dealId": {
"type": "integer"
},
"assignedDate": {
"type": "string",
"format": "date-time"
},
"hasQCBlockers": {
"type": "boolean",
"description": "Whether there are QC blockers"
},
"priority": {
"type": "string",
"enum": [
"high",
"normal"
]
},
"sourceType": {
"type": "string",
"enum": [
"video",
"video_av_muxed",
"audio",
"secondary_audio",
"subs",
"sdh_cc",
"forced_sub",
"commentary_audio",
"commentary_timed_text",
"descriptive_audio",
"dub_card_text",
"dub_card_image",
"audio_m_and_e",
"audio_print_master",
"dub_dialogue_list",
"language_template",
"locked_proxy",
"final_script",
"edit_pro_session",
"mix_pro_session",
"premix_wav",
"near_field_print_master_secondary",
"near_field_dialogue_audio_stem_secondary",
"theatrical_print_master_secondary",
"theatrical_dialogue_audio_stem_secondary",
"dub_script",
"as_recorded_dubbing_script",
"pivot_language_dialogue_list",
"audio_description_script",
"near_field_audio_description_audio_stem_secondary",
"theatrical_audio_description_audio_stem_secondary",
"audio_description_mix_pro_tool_session"
]
},
"sourceLanguage": {
"type": "string",
"description": "Language code in BCP47 format."
},
"materialStatus": {
"type": "string",
"enum": [
"not_received",
"received",
"rejected",
"accepted",
"cancelled",
"complete"
]
},
"serviceType": {
"type": "string",
"enum": [
"create",
"conform"
]
},
"bucket": {
"type": "string",
"enum": [
"OVERDUE_UNDELIVERED",
"REDELIVERY_REQUESTED",
"CRITICAL",
"AT_RISK",
"DELIVERED_WITH_INSPECTION_ERRORS",
"MATERIALS_AVAILABLE",
"AWAITING_MATERIALS",
"UNASSIGNED"
]
},
"requestType": {
"type": "string",
"enum": [
"new",
"share",
"replacement",
"existing",
"upgrade"
]
},
"requestStatus": {
"type": "string",
"enum": [
"open",
"delivered",
"processed",
"cancelled",
"redelivery_requested",
"upgraded"
]
},
"sourceElementSubType": {
"type": "string",
"enum": [
"UNKNOWN",
"IMAGE",
"CREDIT",
"DUB_LIP_SYNC",
"DUB_VOICE_OVER",
"DUB_LIP_SYNC_VOICE_OVER",
"FULL",
"PARTIAL",
"DIALOGUE_LIST",
"PIVOT_LANGUAGE_DIALOGUE_LIST"
]
},
"billing": {
"type": "string",
"enum": [
"to_content_partner",
"to_netflix"
]
},
"sourcing": {
"type": "string",
"enum": [
"content_partner_sourced",
"netflix_external_sourced"
]
},
"issues": {
"type": "array",
"items": {
"type": "string"
}
},
"dayAfterBroadcast": {
"type": "boolean",
"description": "Whether title is day-after-broadcast"
},
"dayOfBroadcast": {
"type": "boolean",
"description": "Whether title is day-of-broadcast"
},
"actionEligibilities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"action": {
"enum": [
"REJECT"
]
},
"isEligible": {
"type": "boolean",
"description": "Whether the source request is eligible for the given action."
},
"reasonCode": {
"type": "string",
"description": "A message about eligibility reason."
}
}
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"status": 401,
"error": "Unauthorized",
"message": "Authentication failed",
"errorCode": ""
}
404
Headers
Content-Type: application/json
Body
{
"message": "No matching requests were found."
}
Request ¶
View Request DetailsGET/v1/requests/{request_id}
Example URI
- request_id
string
(required)The UUID of the request
Headers
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
200
Headers
Content-Type: application/json
Body
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"packageId": 1234,
"contentPartnerId": "7833dfc6-8a88-4efb-bd28-959d19fe0741",
"contentPartner": "Disney",
"fulfillmentPartnerId": "67afdfc6-8a88-4efb-bd28-959d19fe0741",
"fulfillmentPartner": "Visual Data",
"subAssignedFulfillmentPartnerId": "6e0f0e30-86b1-11e2-b563-123139330741",
"subAssignedFulfillmentPartnerName": "Fotokem",
"translatorCreditPresent": true,
"catalogId": "",
"movieInfo": {
"movieId": 12345,
"movieType": "tv_episode",
"movieTitle": "Lost: Season 3: \"Through the Looking Glass: Part 1\"",
"releaseYear": 2006,
"showName": "Lost",
"seasonName": "Season 3",
"episodeName": "Through the Looking Glass: Part 1",
"original": false,
"originalLanguage": "en"
},
"countries": [
"US"
],
"estimatedDeliveryDate": "2016-01-05",
"estimatedDeliveryDateChangeReason": "EARLY_DELIVERY",
"dueOn": "2016-02-07T07:59:59.999+0000",
"subAssignedDate": "2016-01-05T02:37:35.000+0000",
"deliveredOn": "2016-02-05T02:37:35.000+0000",
"lastUpdated": "2016-03-11T04:18:02.917+0000",
"priority": "normal",
"requestType": "new",
"audioChannels": 6,
"requestStatus": "redelivery_requested",
"sourceElementSubType": "CREDIT",
"inspectionStatus": "error",
"sourceType": "forced_sub",
"materialStatus": "accepted",
"serviceType": "conform",
"sourceLanguage": "en",
"packageTags": [
"tag"
],
"billing": "to_content_partner",
"sourcing": "content_partner_sourced",
"proxyState": "ACTIVE",
"proxyCreatedOn": "2016-02-05T10:43:14.321+0000",
"proxyLanguage": "en",
"dealId": 12345,
"assignedDate": "2016-01-05",
"hasQCBlockers": false,
"deliveries": [
{
"transferId": "fa5b4ecc-1959-36fe-123c-6f7601ea745b",
"fileName": "LOST_forcedsubtitle_en.stl",
"overridingErrorsAllowed": false,
"status": "rejected",
"language": "en",
"deliveredOn": "2016-02-05T03:16:26.000+0000",
"processedOn": "2016-02-05T03:39:54.000+0000",
"manifest": "LOST.xml",
"issues": [
{
"code": "",
"message": ""
}
],
"qcResults": [
{
"assetType": "text",
"assetSubType": "forced_sub",
"comments": "",
"checkedOn": "2016-03-11T04:17:53.000+0000",
"result": "fail",
"severity": "severe",
"issues": [
{
"issueCode": "TEXT_INDICATORS",
"comments": "",
"timeStart": "00:01:04",
"timeStop": null,
"priority": "ISSUE"
}
]
}
]
}
],
"inspectionDeliveries": [
{
"transferId": "0c39c398-fab7-482e-8f01-052337fb4a27",
"fileName": "70308278_Mission_Blue_Portrait-V2.mov",
"virtual": false,
"overridingErrorsAllowed": false,
"status": "rejected",
"language": null,
"method": "API",
"deliveredOn": "2017-04-26T18:09:29.000+0000",
"processedOn": "2017-04-26T18:12:51.000+0000",
"manifest": null,
"issues": [
{
"code": "ANALYZER-TelecineDetected",
"message": "Telecine has been detected",
"description": "Telecine=true NTSC: [Top 0.5854, 0.7769, 0.7535 Bottom 0.5854, 0.7769, 0.7535] PAL: [Top 0.0000, 0.0000, 0.8668 Bottom 0.0000, 0.0000, 0.8677]",
"times": null,
"severity": "ERROR"
}
],
"qcResults": [],
"hasInspectionFailed": true
}
],
"history": [
{
"user": "test@netflix.com",
"action": "created",
"timestamp": "2016-01-21T23:56:02.206+0000"
},
{
"user": "test@netflix.com",
"action": "dueOn updated",
"timestamp": "2016-01-21T23:57:01.820+0000"
},
{
"user": "test@test.com",
"action": "materialStatus updated to not_received",
"timestamp": "2016-01-22T19:21:46.745+0000"
},
{
"user": "abc",
"action": "delivered",
"timestamp": "2016-02-05T03:16:24.412+0000"
},
{
"user": "system",
"action": "processed",
"timestamp": "2016-02-05T03:39:53.732+0000"
}
],
"comments": [
{
"user": "disney_test@test.com",
"comment": "test",
"timestamp": "2016-03-16T00:18:07.262Z[Etc/UTC]"
}
],
"dayAfterBroadcast": false,
"dayOfBroadcast": false,
"actionEligibilities": [
{
"action": "REJECT",
"isEligible": false,
"reasonCode": "Partner-initiated redeliveries are only available for Non-Branded Title Source Requests. Reach out to your Netflix partners to request redelivery."
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"requestId" : {
"type": "string",
"description": "UUID of the request."
},
"packageId": {
"type": "integer",
"description": "Netflix package id."
},
"contentPartnerId": {
"type": "string",
"description": "Content Partner Id"
},
"contentPartner": {
"type": "string",
"description": "Name of the content partner"
},
"fulfillmentPartnerId": {
"type": "string",
"description": "Fulfillment Partner Id"
},
"fulfillmentPartner": {
"type": "string",
"description": "Name of the fulfillment partner"
},
"subAssignedFulfillmentPartnerId": {
"type": "string",
"description": "Sub Assigned Fulfillment Partner Id"
},
"subAssignedFulfillmentPartnerName": {
"type": "string",
"description": "Name of the sub assigned fulfillment partner"
},
"translatorCreditPresent": {
"type": "boolean",
"description": "Is there a translator credit available"
},
"translatorCreditWaiverPresent": {
"type": "boolean",
"description": "Is a waiver for translator credit present on file"
},
"catalogId": {
"type": "string"
},
"movieInfo": {
"type": "object",
"properties": {
"movieId": {
"type": "integer"
}.
"movieType": {
"type": "string",
"enum": ["movie", "tv_episode", "supplemental"]
},
"movieTitle": {
"type": "string"
},
"releaseYear": {
"type": "integer"
},
"showName": {
"type": "string"
},
"seasonName": {
"type": "string"
},
"episodeName": {
"type": "string"
},
"original": {
"type": "boolean"
},
"originalLanguage": {
"type": "string",
"description": "original language code in BCP47 format."
}
}
},
"countries": {
"type": "array",
"items": {
"type": "string"
}
},
"estimatedDeliveryDate": {
"type": "string",
"format": "date-time"
},
"estimatedDeliveryDateChangeReason": {
"type": "string",
"enum": ["PRODUCTION_SCHEDULE_CHANGES", "RECEIVED_WORKABLE_MATERIALS_LATE", "FULFILLMENT_PARTNER_SCHEDULE_DELAYS", "EARLY_DELIVERY", "REDELIVERY_REQUESTED_BY_NETFLIX", "PENDING_EXTERNAL_ACTION"]
},
"dueOn": {
"type": "string",
"format": "date-time"
},
"subAssignedDate": {
"type": "string",
"format": "date-time"
},
"deliveredOn": {
"type": "string",
"format": "date-time"
},
"lastUpdated": {
"type": "string",
"format": "date-time"
},
"priority": {
"type": "string",
"enum": ["high", "normal"]
},
"requestType": {
"type": "string",
"enum": ["new",
"share",
"replacement",
"existing",
"upgrade"]
},
"audioChannels": {
"type": "integer",
"description": "Audio channel count"
},
"requestStatus": {
"type": "string",
"enum": ["open",
"delivered",
"processed",
"cancelled",
"redelivery_requested",
"upgraded"]
},
"sourceElementSubType": {
"type": "string",
"enum": ["UNKNOWN", "IMAGE", "CREDIT", "DUB_LIP_SYNC", "DUB_VOICE_OVER", "DUB_LIP_SYNC_VOICE_OVER", "FULL", "PARTIAL", "DIALOGUE_LIST", "PIVOT_LANGUAGE_DIALOGUE_LIST"]
},
"inspectionStatus": {
"type":"string",
"enum": ["pending",
"waiting_for_inspection",
"inspecting",
"success",
"error"]
}
"sourceType": {
"type": "string",
"enum": ["video",
"video_av_muxed",
"audio",
"secondary_audio",
"subs",
"sdh_cc",
"forced_sub",
"commentary_audio",
"commentary_timed_text",
"descriptive_audio",
"dub_card_text",
"dub_card_image",
"audio_m_and_e",
"audio_print_master",
"dub_dialogue_list",
"language_template",
"locked_proxy",
"final_script",
"edit_pro_session",
"mix_pro_session",
"premix_wav",
"near_field_print_master_secondary",
"near_field_dialogue_audio_stem_secondary",
"theatrical_print_master_secondary",
"theatrical_dialogue_audio_stem_secondary",
"dub_script",
"as_recorded_dubbing_script",
"pivot_language_dialogue_list",
"audio_description_script",
"near_field_audio_description_audio_stem_secondary",
"theatrical_audio_description_audio_stem_secondary",
"audio_description_mix_pro_tool_session"]
},
"materialStatus": {
"type": "string",
"enum": ["not_received", "received", "rejected", "accepted"]
},
"serviceType": {
"type": "string",
"enum": ["create", "conform"]
},
"sourceLanguage": {
"type": "string",
"description": "language code in BCP47 format."
},
"packageTags": {
"type": "array",
"items": {
"type": "string"
}
},
"billing": {
"type": "string",
"enum": ["to_content_partner", "to_netflix"]
},
"sourcing": {
"type": "string",
"enum": ["content_partner_sourced", "netflix_external_sourced"]
},
"proxyState": {
"type": "string",
"enum": ["NOT_AVAILABLE", "ACTIVE", "UPGRADED"]
},
"proxyCreatedOn": {
"type": "string",
"format": "date-time"
},
"proxyLanguage": {
"type": "string",
"description": "language code in BCP47 format."
},
"dealId": {
"type": "integer"
},
"assignedDate": {
"type": "string",
"format": "date-time"
},
"hasQCBlockers": {
"type": "boolean",
"description": "Whether there are QC blockers"
},
"deliveries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"transferId": {
"type": "string",
"description": "UUID of the delivery"
},
"fileName": {
"type": "string"
},
"status": {
"type": "string",
"enum": ["new",
"unmatched",
"matched",
"processing",
"processed",
"waiting",
"error",
"success",
"rejected"]
},
"language": {
"type": "string",
"description": "language code in BCP47 format."
},
"deliveredOn": {
"type": "string",
"format": "date-time"
},
"processedOn": {
"type": "string",
"format": "date-time"
},
"manifest": {
"type": "string"
},
"issues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
},
"inspectionDeliveries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"transferId": {
"type": "string",
"description": "UUID of the delivery"
},
"deliveredOn": {
"type": "string"
},
"fileName": {
"type": "string"
},
"hasInspectionFailed": {
"type": "boolean"
},
"language": {
"type": "string"
},
"manifest": {
"type": "string"
},
"method": {
"type": "string"
},
"overridingErrorsAllowed": {
"type": "boolean"
},
"processedOn": {
"type": "string"
},
"status": {
"type": "string",
"enum": ["matched",
"processing",
"waiting",
"failed",
"success",
"rejected"]
},
"virtual": {
"type": "boolean"
}
"issues": {
"type": "object"
"items": {
"properties": {
"code": {
"type": "string"
},
"description": {
"type": "string"
},
"message": {
"type": "string"
},
"severity": {
"type": "string"
},
}
}
}
}
},
"qcResults": {
"type": "array",
"items": {
"type": "object",
"properties": {
"assetType": {
"type": "string",
"enum": ["video", "audio", "text"]
},
"assetSubType": {
"type": "string",
"enum": ["subs",
"sdh_cc",
"forced_sub",
"descriptive_audio",
"burned_in_subs",
"multichannel_audio",
"commentary_timed_text"]
},
"comments": {
"type": "string"
},
"checkedOn": {
"type": "string",
"format": "date-time"
},
"result": {
"type": "string",
"enum": ["pass", "fail"]
},
"severity": {
"type": "string",
"enum": ["severe", "minor"]
},
"issues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"issueCode": {
"type": "string"
},
"comments": {
"type": "string"
},
"timeStart": {
"type": "string"
},
"timeStop": {
"type": "string"
},
"priority": {
"type": "string",
"enum": ["FYI", "ISSUE", "BLOCKER"]
}
}
}
}
}
}
}
}
}
},
"history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"user": {
"type": "string"
},
"action": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}
},
"comments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"user": {
"type": "string"
},
"comment": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}
},
"dayAfterBroadcast": {
"type": "boolean",
"description": "Whether title is day-after-broadcast"
},
"dayOfBroadcast": {
"type": "boolean",
"description": "Whether title is day-of-broadcast"
},
"actionEligibilities":{
"type": "array",
"items": {
"type": "object",
"properties": {
"action": {
"enum": ["REJECT"]
},
"isEligible": {
"type": "boolean",
"description": "Whether the source request is eligible for the give action."
},
"reasonCode": {
"type": "string",
"description": "A message about eligibility reason."
}
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"message": "Authentication failed"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Access denied."
}
404
Headers
Content-Type: application/json
Body
{
"message": "Request not found."
}
400
Headers
Content-Type: application/json
Body
{
"message": "Invalid request id."
}
Update RequestPUT/v1/requests/{request_id}
Example URI
- request_id
string
(required)The UUID of the request
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
{
"comment": "comments",
"fulfillmentPartnerId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"materialStatus": "accepted",
"serviceType": "create",
"translatorCreditWaiverPresent": true
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"comment": {
"type": "string",
"description": "add comments"
},
"fufillmentPartnerId": {
"type": "string",
"description": "UUID of the fulfillment partner. This is applicable only for content partners."
},
"materialStatus": {
"type": "string",
"enum": [
"received",
"accepted",
"rejected"
],
"description": "This is applicable only for fulfillment partners."
},
"serviceType": {
"type": "string",
"enum": [
"create",
"conform"
],
"description": "This is applicable only for fulfillment partners."
},
"translatorCreditPresent": {
"type": "boolean",
"description": "Is there a translator credit available. Applies when serviceType is conform"
},
"translatorCreditWaiverPresent": {
"type": "boolean",
"description": "Is there a translator credit waiver on file available. Applies when serviceType is create"
},
"estimatedDeliveryDate": {
"type": "string",
"format": "date",
"description": "Estimated delivery date. When updating estimated delivery date, estimatedDeliveryDateChangeReason must be specified."
},
"estimatedDeliveryDateChangeReason": {
"type": "string",
"enum": [
"production_schedule_pushed",
"qc_delay",
"received_workable_materials_late",
"fulfillment_partner_schedule_delays",
"early_delivery",
"redelivery_requested_by_netflix"
],
"description": "Reason for updating the estimatedDeliveryDate."
}
}
}
204
404
Headers
Content-Type: application/json
Body
{
"message": "Request not found."
}
400
Headers
Content-Type: application/json
Body
{
"message": "Invalid state."
}
403
Headers
Content-Type: application/json
Body
{
"message": "Access denied."
}
401
Headers
Content-Type: application/json
Body
{
"message": "Authentication failed"
}
Comments ¶
Add CommentPOST/v1/requests/comments
Example URI
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
{
"requestIds": [
"9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"9dfedfa6-8b88-4efb-bd28-950d19fe0741"
],
"comment": "comment"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"requestIds": {
"type": "array",
"items": {
"type": "string"
}
},
"comment": {
"type": "string"
}
},
"required": [
"requestIds",
"comment"
]
}
200
Headers
Content-Type: application/json
Body
[
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"status": "ok"
},
{
"requestId": "9dfedfa6-8b88-4efb-bd28-950d19fe0741",
"status": "error",
"message": "invalid input"
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "UUID of the request"
},
"status": {
"type": "string",
"enum": [
"ok",
"error"
]
},
"message": {
"type": "string",
"description": "Error message if status is error."
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"message": "Authentication failed"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Empty comment."
}
Content Partner ¶
These API are accesible to content partners.
Host: https://backlot-api.prod.netflix.net
List Fulfillment Partners ¶
List All Fulfillment PartnersGET/v1/fulfillment_partners
Example URI
Headers
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
200
Headers
Content-Type: application/json
Body
[
{
"fulfillmentPartnerId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"fulfillmentPartner": "Visual Data"
},
{
"fulfillmentPartnerId": "9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"fulfillmentPartner": "Partner"
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"fulfillmentPartnerId": {
"type": "string"
},
"fulfillmentPartner": {
"type": "string"
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"message": "Authentication failed"
}
403
Headers
Content-Type: appliation/json
Body
{
"message": "Access denied."
}
404
Headers
Content-Type: application/json
Body
{
"message": "Partners not found."
}
Fulfillment Partner Assignment ¶
Assign Fulfillment PartnerPOST/v1/requests/fp_assignment
Example URI
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
{
"requestIds": [
"9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"3df3dfa6-8b88-4efb-bd28-950d19fe0741"
],
"fulfillmentPartnerId": "7dfedfa6-8b88-4efb-bd28-950d19fe0741",
"comment": "comment"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"requestIds": {
"type": "array",
"items": {
"type": "string"
}
},
"fulfillmentPartnerId": {
"type": "string"
},
"comment": {
"type": "string"
}
},
"required": [
"requestIds",
"fulfillmentPartnerId"
]
}
200
Headers
Content-Type: application/json
Body
[
{
"requestId": "9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"status": "ok"
},
{
"requestId": "3df3dfa6-8b88-4efb-bd28-950d19fe0741",
"status": "error",
"message": "Request not found."
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "UUID of the request"
},
"status": {
"type": "string",
"enum": [
"ok",
"error"
]
},
"message": {
"type": "string",
"description": "Error message if status is error."
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"message": "Authentication failed"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Access denied."
}
400
Headers
Content-Type: application/json
Body
{
"message": "Invalid fulfillment partner."
}
Fulfillment Partner ¶
These API are accessible to fulfillment partners.
Host: https://backlot-api.prod.netflix.net
List Content Partners ¶
List All Content PartnersGET/v1/content_partners
Example URI
Headers
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
200
Headers
Content-Type: application/json
Body
[
{
"contentPartnerId": "9df3dfc6-8a88-4897-bd28-959d19fe0741",
"contentPartner": "Sony"
},
{
"contentPartnerId": "9df3dfa6-8b88-1234-bd28-950d19fe0741",
"contentPartner": "Partner"
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"contentPartnerId": {
"type": "string"
},
"contentPartner": {
"type": "string"
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"message": "Authentication failed"
}
403
Headers
Content-Type: appliation/json
Body
{
"message": "Access denied."
}
404
Headers
Content-Type: application/json
Body
{
"message": "Partners not found."
}
Material Status Update ¶
Update Material StatusPOST/v1/requests/material_status_update
Example URI
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
{
"requestIds": [
"9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"6df3dfa4-8b88-4efb-bd28-950d19fe0741"
],
"materialStatus": "accepted",
"serviceType": "create",
"comment": "comment"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"requestIds": {
"type": "array",
"items": {
"type": "string"
}
},
"materialStatus": {
"type": "string",
"enum": [
"received",
"accepted",
"rejected"
]
},
"serviceType": {
"type": "string",
"enum": [
"create",
"conform"
]
},
"comment": {
"type": "string"
}
},
"required": [
"requestIds"
]
}
200
Headers
Content-Type: application/json
Body
[
{
"requestId": "9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"status": "ok"
},
{
"requestId": "6df3dfa4-8b88-4efb-bd28-950d19fe0741",
"status": "error",
"message": "Request not found."
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "UUID of the request"
},
"status": {
"type": "string",
"enum": [
"ok",
"error"
]
},
"message": {
"type": "string",
"description": "Error message if status is error."
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"message": "Authentication failed"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Access denied."
}
400
Headers
Content-Type: application/json
Body
{
"message": "Invalid material status."
}
Sub Assign Requests ¶
Sub Assign RequestsPOST/v1/requests/subAssign
Example URI
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
{
"requestIds": [
"9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"6df3dfa4-8b88-4efb-bd28-950d19fe0741"
],
"subAssignedFulfillmentPartner": "43add680-acf4-11e2-b4e7-22000a1f9c44"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"requestIds": {
"type": "array",
"items": {
"type": "string"
}
},
"subAssignedFulfillmentPartner": {
"type": "string"
}
},
"required": [
"requestIds",
"subAssignedFulfillmentPartner"
]
}
200
Headers
Content-Type: application/json
Body
[
{
"requestId": "9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"status": "ok"
},
{
"requestId": "6df3dfa4-8b88-4efb-bd28-950d19fe0741",
"status": "error",
"message": "Request not found."
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "UUID of the request"
},
"status": {
"type": "string",
"enum": [
"ok",
"error"
]
},
"message": {
"type": "string",
"description": "Error message if status is error."
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"message": "Authentication failed"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Access is denied."
}
400
Headers
Content-Type: application/json
Body
{
"message": "Invalid Request state or not authorized to modify Request."
}
Netflix Preferred Fulfillment Partners ¶
These API are accesible to Netflix Preferred Fulfillment Partners (NPFPs).
Host: https://backlot-api.prod.netflix.net
Cancel Requests ¶
Cancel RequestsPOST/v1/requests/cancel
Example URI
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
{
"requestIds": [
"9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"9dfedfa6-8b88-4efb-bd28-950d19fe0741"
],
"cancelReason": "WILL_NOT_FULFILL",
"comment": {
"comment": "Forced Subs will not be fulfilled reason."
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"requestIds": {
"type": "array",
"items": {
"type": "string"
}
},
"cancelReason": {
"type": "string",
"enum": [
"source_not_available",
"will_not_fulfill"
]
},
"comment": {
"type": "object",
"properties": {
"comment": {
"type": "string"
}
}
}
},
"required": [
"requestIds",
"cancelReason"
]
}
200
Headers
Content-Type: application/json
Body
[
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"status": "SUCCESS"
},
{
"requestId": "9dfedfa6-8b88-4efb-bd28-950d19fe0741",
"status": "FAILURE",
"message": "invalid input"
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "UUID of the request"
},
"status": {
"type": "string",
"enum": [
"SUCCESS",
"FAILURE"
]
},
"message": {
"type": "string",
"description": "Error message if status is FAILURE."
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"message": "Request not found."
}
400
Headers
Content-Type: application/json
Body
{
"message": "Invalid state."
}
403
Headers
Content-Type: application/json
Body
{
"message": "Access denied."
}
401
Headers
Content-Type: application/json
Body
{
"message": "Authentication failed"
}
Uncancel Requests ¶
Uncancel RequestPOST/v1/requests/uncancel
Example URI
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
{
"requestIds": [
"9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"9dfedfa6-8b88-4efb-bd28-950d19fe0741"
],
"comment": {
"comment": "Uncancel reason."
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties" : {
"requestIds" : {
"type" : "array",
"items" : {
"type" : "string"
}
},
"comment" : {
"type" : "object",
"properties" : {
"comment" : {
"type" : "string"
},
}
}
}
"required": ["requestIds", "comment"]
}
200
Headers
Content-Type: application/json
Body
[
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"status": "SUCCESS"
},
{
"requestId": "9dfedfa6-8b88-4efb-bd28-950d19fe0741",
"status": "FAILURE",
"message": "invalid input"
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "UUID of the request"
},
"status": {
"type": "string",
"enum": [
"SUCCESS",
"FAILURE"
]
},
"message": {
"type": "string",
"description": "Error message if status is FAILURE."
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"message": "Request not found."
}
400
Headers
Content-Type: application/json
Body
{
"message": "Invalid state."
}
403
Headers
Content-Type: application/json
Body
{
"message": "Access denied."
}
401
Headers
Content-Type: application/json
Body
{
"message": "Authentication failed"
}
Source Requests Request Redelivery ¶
Source Requests Request RedeliveryPOST/v1/requests/requestRedelivery
Example URI
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
{
"requestIds": [
"9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"9dfedfa6-8b88-4efb-bd28-950d19fe0742"
],
"deliveryScope": "SOURCE_AND_METADATA",
"requestRedeliveryReason": "CREATIVE_CHANGE_NEEDED",
"comment": "Creative change in final scene."
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"requestIds": {
"type": "array",
"items": {
"type": "string"
}
},
"deliveryScope": {
"type": "string",
"enum": [
"SOURCE_AND_METADATA",
"METADATA_ONLY"
]
},
"requestRedeliveryReason": {
"type": "string",
"enum": [
"CREATIVE_CHANGE_NEEDED",
"CREDIT_FIX_NEEDED",
"PARTNER_ERROR",
"TEXT_NON_NATIVE_TRANSLATION_PRE_QC",
"WRONG_VERSION_PRE_QC"
]
},
"comment": {
"type": "string"
}
},
"required": [
"requestIds",
"deliveryScope",
"requestRedeliveryReason",
"comment"
]
}
200
Headers
Content-Type: application/json
Body
[
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"status": "SUCCESS"
},
{
"requestId": "9dfedfa6-8b88-4efb-bd28-950d19fe0742",
"status": "FAILURE",
"message": "Partner-initiated redeliveries are only available for Non-Branded Title Source Requests. Reach out to your Netflix partners to request redelivery."
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "UUID of the request"
},
"status": {
"type": "string",
"enum": [
"SUCCESS",
"FAILURE"
]
},
"message": {
"type": "string",
"description": "Error message if status is FAILURE."
}
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Unauthorized caller!"
}
401
Headers
Content-Type: application/json
Body
{
"message": "Unauthorized"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Request redelivery must have a reason."
}
Non-IMF Deliveries ¶
Deliveries ¶
Initiate DeliveriesPOST/v1/deliveries
Initiate deliveries for requests by calling this API with the requestId, fileInfo and assetInfo.
The response includes ‘asperaUser’, ‘asperaHost’, ‘fileTransportToken’ and ‘fileContextToken’ values that should be used when uploading the files through Aspera.
To upload a file using the Aspera command-line utility, the command format is:
ascp -i "<ssh_key_path>" -W <fileTransportToken> <full_path_of_file_to_upload> <asperaUser>@<asperaHost>:/<fileContextToken>
where
<ssh_key_path> is path to the ssh keys.
<fileTransportToken> is the fileTransportToken value returned in the response.
<full_path_of_file_to_upload> is the path to the file to be uploaded.
<asperaUser> is the asperaUser value returned in the response.
<asperaHost> is the asperaHost value returned in the response.
<fileContextToken> is the fileContextToken value returned in the response.
Example:
ascp -i "netflix_filetransfer_aspera.key" -W VIRjQxxI_JDanj5BdrFnuZ1jSfs8zjv1xyCsCqjyWwlC /files/1234.av filetransfer@beehive-aspera.test.netflix.net:/c63975e0-0788-11e6-b56d-22000ae825a7
Example URI
for Video, Audio, Text
Headers
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
[
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"fileInfo": {
"fileName": "1234.av",
"fileSize": 200000,
"md5Checksum": ""
},
"assetInfo": {
"video": {},
"audio": {
"languageCode": "en",
"channelMapping": "LT_RT"
}
}
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The Netflix request id"
},
"fileInfo": {
"type": "object",
"properties": {
"fileName": {
"type": "string",
"description": "Name of the file to upload"
},
"fileSize": {
"type": "integer",
"description": "Size of the file in bytes."
},
"md5Checksum": {
"type": "string",
"description": "MD5 hash of the file."
}
},
"required": [
"fileName",
"fileSize"
]
},
"assetInfo": {
"type": "object",
"properties": {
"video": {
"type": "object",
"properties": {
"burnedInDialog": {
"type": "object",
"properties": {
"languageCode": {
"type": "string",
"description": "The language code in BCP47 format."
}
},
"required": [
"languageCode"
]
}
}
},
"audio": {
"type": "object",
"properties": {
"languageCode": {
"type": "string",
"description": "The language code in BCP47 format."
},
"channelMapping": {
"type": "string",
"description": "The channel mapping for channel-based audio, or NOT_APPLICABLE for object-based audio (e.g., Dolby Atmos™).",
"enum": [
"LT_RT",
"C",
"L_R_C_LFE_LS_RS",
"L_R_LS_RS_C_LFE",
"L_C_R_LS_RS_LFE",
"L_C_R_LFE_LS_RS",
"C_LFE_L_R_LS_RS",
"C_L_R_LS_RS_LFE",
"L_R_C_LFE_LS_RS_LT_RT",
"L_R_LS_RS_C_LFE_LT_RT",
"L_C_R_LS_RS_LFE_LT_RT",
"L_C_R_LFE_LS_RS_LT_RT",
"C_LFE_L_R_LS_RS_LT_RT",
"C_L_R_LS_RS_LFE_LT_RT",
"LT_RT_L_R_C_LFE_LS_RS",
"LT_RT_L_R_LS_RS_C_LFE",
"LT_RT_L_C_R_LS_RS_LFE",
"LT_RT_L_C_R_LFE_LS_RS",
"LT_RT_C_LFE_L_R_LS_RS",
"LT_RT_C_L_R_LS_RS_LFE",
"L_R",
"NOT_APPLICABLE"
]
}
},
"required": [
"channelMapping"
]
},
"timedText": {
"type": "object",
"properties": {
"timingReference": {
"type": "string",
"enum": [
"SMPTE",
"MEDIA"
]
}
}
}
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"asperaUser": "filetransfer",
"asperaHost": "beehive-aspera.test.netflix.net",
"deliveries": [
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"fileName": "1234.av",
"status": "ok",
"errorMessage": "",
"transferId": "caff1d64-06ce-25a8-9ffc-d2da30d6d5a2",
"fileTransportToken": "VIRjQxxI_JDanj5BdrFnuZ1jSfs8zjv1xyCsCqjyWwlC",
"fileContextToken": "c63975e0-0788-11e6-b56d-22000ae825a7"
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"asperaUser": {
"type": "string",
"description": "The username to use while accessing the Netflix Aspera server"
},
"asperaHost": {
"type": "string",
"description": "The hostname of the Netflix Aspera server"
},
"deliveries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The Netflix request id"
},
"fileName": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"ok",
"error"
]
},
"errorMessage": {
"type": "string",
"description": "If status is 'error', then details about the error"
},
"transferId": {
"type": "string",
"description": "Unique id to identify the upload"
},
"fileTransportToken": {
"type": "string",
"description": "Transport token to be used while uploading the file through Aspera"
},
"fileContextToken": {
"type": "string",
"description": "Context token to be used while uploading the file through Aspera"
}
}
}
}
}
}
for Audio Print Master
Headers
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
[
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"fileInfo": {
"fileName": "1234.wav",
"fileSize": 200000,
"md5Checksum": ""
},
"assetInfo": {
"mixType": "Near Field",
"format": "2.0"
}
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The Netflix request id"
},
"fileInfo": {
"type": "object",
"properties": {
"fileName": {
"type": "string",
"description": "Name of the file to upload"
},
"fileSize": {
"type": "integer",
"description": "Size of the file in bytes."
},
"md5Checksum": {
"type": "string",
"description": "MD5 hash of the file."
}
},
"required": [
"fileName",
"fileSize"
]
},
"assetInfo": {
"mixType": {
"type": "string",
"enum": [
"Near Field"
]
},
"format": {
"type": "string",
"enum": [
"5.1",
"2.0",
"ATMOS",
"6+2",
"8-Track DMEE",
"Mono"
]
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"asperaUser": "filetransfer",
"asperaHost": "beehive-aspera.test.netflix.net",
"deliveries": [
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"fileName": "1234.wav",
"status": "ok",
"errorMessage": "",
"transferId": "caff1d64-06ce-25a8-9ffc-d2da30d6d5a2",
"fileTransportToken": "VIRjQxxI_JDanj5BdrFnuZ1jSfs8zjv1xyCsCqjyWwlC",
"fileContextToken": "c63975e0-0788-11e6-b56d-22000ae825a7"
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"asperaUser": {
"type": "string",
"description": "The username to use while accessing the Netflix Aspera server"
},
"asperaHost": {
"type": "string",
"description": "The hostname of the Netflix Aspera server"
},
"deliveries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The Netflix request id"
},
"fileName": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"ok",
"error"
]
},
"errorMessage": {
"type": "string",
"description": "If status is 'error', then details about the error"
},
"transferId": {
"type": "string",
"description": "Unique id to identify the upload"
},
"fileTransportToken": {
"type": "string",
"description": "Transport token to be used while uploading the file through Aspera"
},
"fileContextToken": {
"type": "string",
"description": "Context token to be used while uploading the file through Aspera"
}
}
}
}
}
}
for Descriptive Audio
Headers
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
[
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"fileInfo": {
"fileName": "1234.wav",
"fileSize": 200000,
"md5Checksum": ""
},
"assetInfo": {
"audio": {
"channelMapping": "LT_RT"
}
}
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The Netflix request id"
},
"fileInfo": {
"type": "object",
"properties": {
"fileName": {
"type": "string",
"description": "Name of the file to upload"
},
"fileSize": {
"type": "integer",
"description": "Size of the file in bytes."
},
"md5Checksum": {
"type": "string",
"description": "MD5 hash of the file."
}
},
"required": [
"fileName",
"fileSize"
]
},
"assetInfo": {
"type": "object",
"properties": {
"audio": {
"type": "object",
"properties": {
"languageCode": {
"type": "string",
"description": "The language code in BCP47 format."
},
"channelMapping": {
"type": "string",
"description": "The channel mapping for channel-based audio, or NOT_APPLICABLE for object-based audio (e.g., Dolby Atmos™).",
"enum": [
"LT_RT",
"C",
"L_R_C_LFE_LS_RS",
"L_R_LS_RS_C_LFE",
"L_C_R_LS_RS_LFE",
"L_C_R_LFE_LS_RS",
"C_LFE_L_R_LS_RS",
"C_L_R_LS_RS_LFE",
"L_R_C_LFE_LS_RS_LT_RT",
"L_R_LS_RS_C_LFE_LT_RT",
"L_C_R_LS_RS_LFE_LT_RT",
"L_C_R_LFE_LS_RS_LT_RT",
"C_LFE_L_R_LS_RS_LT_RT",
"C_L_R_LS_RS_LFE_LT_RT",
"LT_RT_L_R_C_LFE_LS_RS",
"LT_RT_L_R_LS_RS_C_LFE",
"LT_RT_L_C_R_LS_RS_LFE",
"LT_RT_L_C_R_LFE_LS_RS",
"LT_RT_C_LFE_L_R_LS_RS",
"LT_RT_C_L_R_LS_RS_LFE",
"L_R",
"NOT_APPLICABLE"
]
}
},
"required": [
"channelMapping"
]
}
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"asperaUser": "filetransfer",
"asperaHost": "beehive-aspera.test.netflix.net",
"deliveries": [
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"fileName": "1234.wav",
"status": "ok",
"errorMessage": "",
"transferId": "caff1d64-06ce-25a8-9ffc-d2da30d6d5a2",
"fileTransportToken": "VIRjQxxI_JDanj5BdrFnuZ1jSfs8zjv1xyCsCqjyWwlC",
"fileContextToken": "c63975e0-0788-11e6-b56d-22000ae825a7"
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"asperaUser": {
"type": "string",
"description": "The username to use while accessing the Netflix Aspera server"
},
"asperaHost": {
"type": "string",
"description": "The hostname of the Netflix Aspera server"
},
"deliveries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The Netflix request id"
},
"fileName": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"ok",
"error"
]
},
"errorMessage": {
"type": "string",
"description": "If status is 'error', then details about the error"
},
"transferId": {
"type": "string",
"description": "Unique id to identify the upload"
},
"fileTransportToken": {
"type": "string",
"description": "Transport token to be used while uploading the file through Aspera"
},
"fileContextToken": {
"type": "string",
"description": "Context token to be used while uploading the file through Aspera"
}
}
}
}
}
}
for Final Script
Headers
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
[
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"fileInfo": {
"fileName": "1234.txt",
"fileSize": 200000,
"md5Checksum": ""
},
"assetInfo": {
"type": "DIALOGUE_LIST"
}
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The Netflix request id"
},
"fileInfo": {
"type": "object",
"properties": {
"fileName": {
"type": "string",
"description": "Name of the file to upload"
},
"fileSize": {
"type": "integer",
"description": "Size of the file in bytes."
},
"md5Checksum": {
"type": "string",
"description": "MD5 hash of the file."
}
},
"required": [
"fileName",
"fileSize"
]
},
"assetInfo": {
"type": {
"type": "string",
"enum": [
"DIALOGUE_LIST",
"AS_BROADCAST_SCRIPT",
"COMBINED_CONTINUITY_DIALOG_SPOTTING_LIST"
]
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"asperaUser": "filetransfer",
"asperaHost": "beehive-aspera.test.netflix.net",
"deliveries": [
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"fileName": "1234.txt",
"status": "ok",
"errorMessage": "",
"transferId": "caff1d64-06ce-25a8-9ffc-d2da30d6d5a2",
"fileTransportToken": "VIRjQxxI_JDanj5BdrFnuZ1jSfs8zjv1xyCsCqjyWwlC",
"fileContextToken": "c63975e0-0788-11e6-b56d-22000ae825a7"
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"asperaUser": {
"type": "string",
"description": "The username to use while accessing the Netflix Aspera server"
},
"asperaHost": {
"type": "string",
"description": "The hostname of the Netflix Aspera server"
},
"deliveries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The Netflix request id"
},
"fileName": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"ok",
"error"
]
},
"errorMessage": {
"type": "string",
"description": "If status is 'error', then details about the error"
},
"transferId": {
"type": "string",
"description": "Unique id to identify the upload"
},
"fileTransportToken": {
"type": "string",
"description": "Transport token to be used while uploading the file through Aspera"
},
"fileContextToken": {
"type": "string",
"description": "Context token to be used while uploading the file through Aspera"
}
}
}
}
}
}
Deliveries Metadata ¶
Update MetadataPOST/v1/deliveries/metadata_update
For source requests that have been requested for re-delivery with a delivery scope of ‘metadata_only’, you can update the metadata without uploading the file using this API.
Example URI
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
[
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"assetInfo": {
"audio": {
"channelMapping": "LT_RT"
}
}
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The Netflix request id"
},
"assetInfo": {
"type": "object",
"properties": {
"video": {
"type": "object",
"properties": {
"burnedInDialog": {
"type": "object",
"properties": {
"languageCode": {
"type": "string",
"description": "The language code in BCP47 format."
}
},
"required": [
"languageCode"
]
}
}
},
"audio": {
"type": "object",
"properties": {
"languageCode": {
"type": "string",
"description": "The language code in BCP47 format."
},
"channelMapping": {
"type": "string",
"description": "The channel mapping for channel-based audio, or NOT_APPLICABLE for object-based audio (e.g., Dolby Atmos™).",
"enum": [
"LT_RT",
"C",
"L_R_C_LFE_LS_RS",
"L_R_LS_RS_C_LFE",
"L_C_R_LS_RS_LFE",
"L_C_R_LFE_LS_RS",
"C_LFE_L_R_LS_RS",
"C_L_R_LS_RS_LFE",
"L_R_C_LFE_LS_RS_LT_RT",
"L_R_LS_RS_C_LFE_LT_RT",
"L_C_R_LS_RS_LFE_LT_RT",
"L_C_R_LFE_LS_RS_LT_RT",
"C_LFE_L_R_LS_RS_LT_RT",
"C_L_R_LS_RS_LFE_LT_RT",
"LT_RT_L_R_C_LFE_LS_RS",
"LT_RT_L_R_LS_RS_C_LFE",
"LT_RT_L_C_R_LS_RS_LFE",
"LT_RT_L_C_R_LFE_LS_RS",
"LT_RT_C_LFE_L_R_LS_RS",
"LT_RT_C_L_R_LS_RS_LFE",
"L_R",
"NOT_APPLICABLE"
]
}
},
"required": [
"channelMapping"
]
},
"timedText": {
"type": "object",
"properties": {
"timingReference": {
"type": "string",
"enum": [
"SMPTE",
"MEDIA"
]
}
}
}
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
[
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"status": "ok",
"message": ""
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "UUID of the request"
},
"status": {
"type": "string",
"enum": [
"ok",
"error"
]
},
"message": {
"type": "string",
"description": "Error message if status is error."
}
}
}
}
IMF Deliveries ¶
Use this API to deliver IMF packages against requests.
IMF can be delivered against an open AV (Muxed) request OR any open or rejected source request for any of the tracks. Note that when IMF tracks are delivered against a AV (Muxed) request, the original AV (Muxed) request is split in to separate video and audio requests and the delivered IMF tracks are each delivered against the split requests.
The response will only include upload information (Aspera tokens) for unique track files that have not already been delivered to Netflix. AssetMap, PackingList and CompositionPlaylist files will be auto uploaded using their xml contents specified in the request.
IMF Deliveries ¶
Initiate IMF DeliveriesPOST/v1/deliveries/imf
Example URI
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
{
"requestId": "9df3dfc6-8a88-4efb-bd28-959d19fe0741",
"assetMapXml": "xml contents for asset map",
"packingListXml": "xml contents for packing list",
"compositionPlaylistXml": "xml contents for CPL",
"trackFiles": [
{
"originalFileName": "video.mxf",
"fileSize": 1024
},
{
"originalFileName": "audio_20.mxf",
"fileSize": 1024
}.
{
"originalFileName": "audio_51.mxf",
"fileSize": 1024
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "The Netflix request id."
},
"assetMapXml": {
"type": "string",
"description": "xml contents of asset map file"
},
"compositionPlaylistXml": {
"type": "string",
"description": "xml contents of CPL file"
},
"packingListXml": {
"type": "string",
"description": "xml contents of packing list file"
},
"tracksFiles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"originalFileName": {
"type": "string",
"description": "Original file name for the track file."
},
"fileSize": {
"type": "integer",
"description": "Size of the track file in bytes."
}
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"compositionPlayListId": "1111234-8a88-4efb-bd28-1234fe0741",
"status": "SUCCESS",
"tracks": [
{
"trackId": "86d10356-f32f-4006-8f22-acb380222a25",
"requestId": "00092275-6548-4736-a58a-f60a6be81c0e",
"transferId": "9e185c74-1a49-4f67-b4ef-43dfd8b049cc",
"trackFileIds": [
"418e4d1f-f5c7-4c71-8c62-6f796446de20"
],
"trackStatus": "NEW"
},
{
"trackId": "686dcf4b-645d-4187-8e20-c1306f22d796",
"requestId": "b00f3d1e-3e28-48ee-9e5b-156f12b9b86a",
"transferId": "4c00b749-3fc5-41a5-8f99-9c2371e6cd4d",
"trackFileIds": [
"299b877c-d40b-4f9e-aa22-4fadf7ebf2b9"
],
"trackStatus": "NEW"
},
{
"trackId": "914b49d7-33d5-46fc-827e-9167bfda77a3",
"requestId": "572c5b09-2452-4e32-aece-fa04af84242d",
"transferId": "9f1515e2-dffd-4986-a5ba-883f1d26410e",
"trackFileIds": [
"17c68559-b6de-4525-93f8-17c8ae77f599"
],
"trackStatus": "NEW"
}
]
"asperaUser": "filetransfer",
"asperaHost": "beehive-aspera.test.netflix.net",
"trackFileUploadSetupResults": [
{
"trackFileId": "418e4d1f-f5c7-4c71-8c62-6f796446de20",
"requestId": "00092275-6548-4736-a58a-f60a6be81c0e",
"fileName": "video.mxf",
"fileTransportToken": "VIRjQxxI_JDanj5BdrFnuZ1jSfs8zjv1xyCsCqjyWwlC",
"fileContextToken": "c63975e0-0788-11e6-b56d-22000ae825a7"
"uploadStatus": "SUCCESS"
},
{
"trackFileId": "299b877c-d40b-4f9e-aa22-4fadf7ebf2b9",
"requestId": "b00f3d1e-3e28-48ee-9e5b-156f12b9b86a",
"fileName": "audio_20.mxf",
"fileTransportToken": "VIRjQxxI_JDanj5BdrFnuZ1jSfs8zjv1xyCsCqjyWwlC",
"fileContextToken": "c63975e0-0788-11e6-b56d-22000ae825a7"
"uploadStatus": "SUCCESS"
},
{
"trackFileId": "17c68559-b6de-4525-93f8-17c8ae77f599",
"requestId": "572c5b09-2452-4e32-aece-fa04af84242d",
"fileName": "audio_51.mxf",
"fileTransportToken": "VIRjQxxI_JDanj5BdrFnuZ1jSfs8zjv1xyCsCqjyWwlC",
"fileContextToken": "c63975e0-0788-11e6-b56d-22000ae825a7"
"uploadStatus": "SUCCESS"
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"compositionPlayListId": {
"type": "string",
"description": "CPL UUID"
},
"status" : {
"type": "string",
"enum" : [
"SUCCESS",
"ERROR"
],
"description": "Overall status of validations and upload setup"
},
"message": {
"type": "string",
"description": "If status is 'error', then details about the error"
},
"asperaUser" : {
"type": "string",
"description": "The username to use while accessing the Netflix Aspera server"
},
"asperaHost": {
"type": "string",
"description": "The hostname of the Netflix Aspera server"
},
"tracks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"trackId": {
"type": "string",
"description": "Track UUID"
},
"requestId": {
"type": "string",
"description": "The Netflix request id"
},
"transferId": {
"type": "string",
"description": "UUID of the delivery"
},
"status" : {
"type": "string",
"enum" : [
"NEW",
"MODIFIED",
"UNMODIFIED",
"ERROR"
]
"description": "Status of track validation"
},
"message": {
"type": "string",
"description": "If status is 'ERROR', then details about the error"
},
"trackFileIds": {
"type": "array"
"items" : {
"type": "String"
},
"description": "Track file UUIDs for the track"
}
}
}
},
"trackFiles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"trackFileId": {
"type": "string",
"description": "Track file UUID"
},
"requestId": {
"type": "string",
"description": "The Netflix request id"
},
"fileName": {
"type" : "Track file name"
},
"uploadStatus" : {
"type": "string",
"enum" : [
"SUCCESS",
"ERROR"
]
"description": "Status of upload setup"
},
"message": {
"type": "string",
"description": "If status is 'ERROR', then details about the error"
},
"fileTransportToken": {
"type": "string",
"description": "Transport token to be used while uploading the file through Aspera"
},
"fileContextToken": {
"type": "string",
"description": "Context token to be used while uploading the file through Aspera"
}
}
}
}
}
}
Manage Deliveries ¶
Deliveries ¶
Override Inspection ErrorPOST/v1/transfers/overrideError/{transferId}
For source requests that have failed delivery within our Inspection as a Service (IaaS) feature, you can override certain error codes and process the file through “as-is” using this API. Please note, not all error codes are overridable.
Example URI
- transferId
string
(required)The UUID of the transfer
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
{
"requestId": [
"12c5fa91-93bd-446f-9494-d0e07b6f6326"
],
"comment": "Override the inspection error"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {},
"id": "http://example.com/example.json",
"properties": {
"comment": {
"type": "string"
},
"requestId": {
"additionalItems": false,
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"comment",
"requestId"
],
"type": "object"
}
200
Headers
Content-Type: application/json
Downloads ¶
Search Materials ¶
Search Download MaterialsPOST/v1/downloads/searchDownloadAssets
Get a list of material assets available for download given a list of requestIds.
The response includes data that will provide the current status of the assets.
Example URI
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
[
"9df3dfa6-8b88-4efb-bd28-950d19fe0741"
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "String"
},
"description": "List of Netflix Request ids."
}
200
Headers
Content-Type: application/json
Body
[{
"requestId": "9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"assets": [
{
"status": "ACTIVE",
"qcStatus": null,
"type": "FINAL_PROXY",
"typeDisplayName": "Final Proxy",
"createdTs": 1522097911,
"fileName": "abc",
"language": null,
"length": 12345,
"movieId": 1111,
"title": "Movie Title"
"subType": null,
"packageId": 2222,
},
{
"status": "ACTIVE",
"qcStatus": "PASSED",
"type": "PRINT_MASTER_5_1_CH",
"typeDisplayName": "5.1 Print Master",
"createdTs": 1636042042660,
"fileName": "xzy",
"language": null,
"length": 223576666,
"movieId": 1111,
"title": "Movie Title",
"subType": "51NearFieldPrintMaster",
"packageId": null
},
{
"status": "NOT_AVAILABLE",
"qcStatus": null,
"type": "PREMIX_WAV",
"typeDisplayName": "Premix Dialogue Stem",
"createdTs": null,
"fileName": null,
"language": null,
"length": null,
"movieId": 1111,
"title": "Movie Title",
"subType": null,
"packageId": 2222
}
]
}]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"requestId" : {
"type": "string",
"description": "Netflix requestId for which assets are available for download"
},
"assets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum" : [
"NOT_AVAILABLE",
"ACTIVE"
],
"description": "Status of this asset"
},
"type" : {
"type": "string",
"enum" : [
AS_BROADCAST_SCRIPT("As Broadcast Script", OTHER),
AS_RECORDED_SCRIPT("As Recorded Script", OTHER),
AUDIO_SESSION_PREP("OMF/AAF", AUDIO),
CCSL("CCSL", OTHER),
CLOSED_CAPTIONING("SDH/CC", TEXT),
COMPOSERS_LEAD_SHEETS("Composer's Lead Sheets", OTHER),
DIALOGUE_EDIT_DECISION_LIST("Dialogue EDL", AUDIO),
DIALOGUE_LIST("Dialogue List", OTHER),
DIALOGUE_MUSIC_EFFECTS_STEM("DME", AUDIO),
DIALOG_MUSIC_AND_EFFECTS("DME", AUDIO),
DIALOG_MUSIC_AND_EFFECTS_2_0_CH("2.0 DME", AUDIO),
DIALOG_MUSIC_AND_EFFECTS_5_1_CH("5.1 DME", AUDIO),
DIALOG_MUSIC_AND_EFFECTS_7_1_CH("7.1 DME", AUDIO),
DIALOG_MUSIC_AND_EFFECTS_ATMOS("Atmos DME", AUDIO),
DUB_SCRIPT("Dubbing Script", OTHER),
EDIT_PRO_SESSION("Localized Edit Project Files", AUDIO),
ENGLISH_TEMPLATE("English Template", OTHER),
FINAL_PROXY("Final Proxy", VIDEO),
FORCED_NARRATIVE("Forced Narrative", TEXT),
LOCALIZATION_NOTES("Localization Notes", OTHER),
LOCKED_PROXY("Production Locked Proxy", VIDEO),
MIX_MINUS_NARRATION_2_0_CH("2.0 Mix Minus Narration", AUDIO),
MIX_MINUS_NARRATION_5_1_CH("5.1 Mix Minus Narration", AUDIO),
MIX_MINUS_NARRATION_7_1_CH("7.1 Mix Minus Narration", AUDIO),
MIX_MINUS_NARRATION_ATMOS("Atmos Mix Minus Narration", AUDIO),
MUSIC_AND_EFFECTS_2_0_CH("2.0 M&E", AUDIO),
MUSIC_AND_EFFECTS_5_1_CH("5.1 M&E", AUDIO),
MUSIC_AND_EFFECTS_7_1_CH("7.1 M&E", AUDIO),
MUSIC_AND_EFFECTS_ADDITIONAL_MIXES("M&E [Additional Mix]", AUDIO),
MUSIC_AND_EFFECTS_ATMOS("Atmos M&E", AUDIO),
MUSIC_AND_EFFECTS_NOTES("M&E Notes", OTHER),
PIVOT_LANGUAGE_DIALOGUE_LIST("Pivot Language Dialogue List", OTHER),
PRELIMINARY_DIALOG_MUSIC_AND_EFFECTS("DME [Preliminary]", AUDIO),
PREMIX_WAV("Premix Dialogue Stem", AUDIO),
PRINT_MASTER_2_0_CH("2.0 Print Master", AUDIO),
PRINT_MASTER_5_1_CH("5.1 Print Master", AUDIO),
PRINT_MASTER_7_1_CH("7.1 Print Master", AUDIO),
PRINT_MASTER_ADDITIONAL_MIXES("Print Master [Additional Mix]", AUDIO),
PRINT_MASTER_ATMOS("Atmos Print Master", AUDIO),
SECONDARY_AUDIO_SOURCE("Secondary Audio", AUDIO),
SERVICING_TURNOVER_PROXY("Production Servicing Proxy", VIDEO),
SHOW_GUIDE("Show Guide", OTHER),
SUBTITLE("Subtitle", TEXT),
THEATRICAL_DIALOG_MUSIC_AND_EFFECTS_5_1_CH("5.1 Theatrical DME", AUDIO),
THEATRICAL_DIALOG_MUSIC_AND_EFFECTS_7_1_CH("7.1 Theatrical DME", AUDIO),
THEATRICAL_DIALOG_MUSIC_AND_EFFECTS_ATMOS("Atmos Theatrical DME", AUDIO),
THEATRICAL_MUSIC_AND_EFFECTS_5_1_CH("5.1 Theatrical M&E", AUDIO),
THEATRICAL_MUSIC_AND_EFFECTS_7_1_CH("7.1 Theatrical M&E", AUDIO),
THEATRICAL_MUSIC_AND_EFFECTS_ATMOS("Atmos Theatrical M&E", AUDIO),
THEATRICAL_PRINT_MASTER_5_1_CH("5.1 Theatrical Print Master", AUDIO),
THEATRICAL_PRINT_MASTER_7_1_CH("7.1 Theatrical Print Master", AUDIO),
THEATRICAL_PRINT_MASTER_ATMOS("Atmos Theatrical Print Master", AUDIO),
THEATRICAL_PRINT_MASTER_LOCALIZED("Theatrical Print Master", AUDIO)
],
"description": "Type of this asset"
},
"typeDisplayName": {
"type" : "string",
"description": "Display name of the asset type, refer to type for details"
},
"createdTs": {
"type": "integer",
"description": "Created timestamp of this asset"
},
"fileName": {
"type" : "string",
"description": "File name of the asset"
},
"length": {
"type": "integer",
"description": "Duration of this asset"
},
"qcStatus": {
"type": "string",
"enum" : [
NOT_AVAILABLE,
PASSED,
FAILED
],
"description": "QC status of this asset"
},
"language": {
"type" : "string",
"description": "Language of the asset"
},
"movieId": {
"type": "integer",
"description": "Movie ID of this asset"
}
"packageId": {
"type": "integer",
"description": "Package ID of this asset"
},
"subType": {
"type" : "string",
"description": "SubType of the asset"
},
"title": {
"type": "string",
"description": "Movie title of this asset"
}
}
}
}
}
}
Download Materials ¶
Download MaterialsPOST/v1/downloads/getDownloadAssetsManifests
Initiate download of watermarked proxies and other assets calling this API with a list of Netflix request Ids and Types retrieved from the Search Materials API.
The response includes data that should be used to download the proxies through Aspera.
To download a file using the Aspera command-line utility, the command format is:
ascp -i "<aspera_connect_ssh_key_path>" -W <asperaTransportToken> <asperaUser>@<asperaHost>:<asperaSource> <destinationPath>/<fileName>
where
<aspera_connect_ssh_key_path> is path to the Aspera ssh key (asperaweb_id_dsa.openssh).
Example: If Aspera Connect is installed at /users/
<asperaTransportToken> is the downloadToken value returned in the response.
<asperaUser> is the remote_user value returned in the response.
<asperaHost> is the remote_host value returned in the response.
<asperaSource> is the sourcePath value returned in the response.
<destinationPath> is the destinationPath to the download location.
<fileName> is the fileName value returned in the response.
Example:
ascp -i "/users/<user>/Applications/Aspera Connect.app/Contents/Resources/asperaweb_id_dsa.openssh" -W VIRjQxxI_JDanj5BdrFnuZ1jSfs8zjv1xyCsCqjyWwlC proxy_downloads@beehive-aspera.test.netflix.net:/9987c070-383d-11e6-b1ee-22000bd58a72 ./movie_en_proxy.mp4
Example URI
Headers
Content-Type: application/json
Authorization: Bearer 8qobiJYvkzp…..RIuONxaxblANw2aUE
Body
[
{
"requestId": "9df3dfa6-8b88-4efb-bd28-950d19fe0741",
"downloadAssetType": "FINAL_PROXY"
},
{
"requestId": "6678dfa6-8b88-4efb-bd28-950d19fe0741",
"downloadAssetType": "SUBTITLE"
}
]
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "UUID of the request"
},
"downloadAssetType": {
"enum": [
"AS_BROADCAST_SCRIPT",
"AS_RECORDED_SCRIPT",
"AUDIO_SESSION_PREP",
"CCSL",
"CLOSED_CAPTIONING",
"COMPOSERS_LEAD_SHEETS",
"DIALOGUE_EDIT_DECISION_LIST",
"DIALOGUE_LIST",
"DIALOGUE_MUSIC_EFFECTS_STEM",
"DIALOG_MUSIC_AND_EFFECTS",
"DIALOG_MUSIC_AND_EFFECTS_2_0_CH",
"DIALOG_MUSIC_AND_EFFECTS_5_1_CH",
"DIALOG_MUSIC_AND_EFFECTS_7_1_CH",
"DIALOG_MUSIC_AND_EFFECTS_ATMOS",
"DUB_SCRIPT",
"EDIT_PRO_SESSION",
"ENGLISH_TEMPLATE",
"FINAL_PROXY",
"FORCED_NARRATIVE",
"LOCALIZATION_NOTES",
"LOCKED_PROXY",
"MIX_MINUS_NARRATION_2_0_CH",
"MIX_MINUS_NARRATION_5_1_CH",
"MIX_MINUS_NARRATION_7_1_CH",
"MIX_MINUS_NARRATION_ATMOS",
"MUSIC_AND_EFFECTS_2_0_CH",
"MUSIC_AND_EFFECTS_5_1_CH",
"MUSIC_AND_EFFECTS_7_1_CH",
"MUSIC_AND_EFFECTS_ADDITIONAL_MIXES",
"MUSIC_AND_EFFECTS_ATMOS",
"MUSIC_AND_EFFECTS_NOTES",
"PIVOT_LANGUAGE_DIALOGUE_LIST",
"PRELIMINARY_DIALOG_MUSIC_AND_EFFECTS",
"PREMIX_WAV",
"PRINT_MASTER_2_0_CH",
"PRINT_MASTER_5_1_CH",
"PRINT_MASTER_7_1_CH",
"PRINT_MASTER_ADDITIONAL_MIXES",
"PRINT_MASTER_ATMOS",
"SECONDARY_AUDIO_SOURCE",
"SERVICING_TURNOVER_PROXY",
"SHOW_GUIDE",
"SUBTITLE",
"THEATRICAL_DIALOG_MUSIC_AND_EFFECTS_5_1_CH",
"THEATRICAL_DIALOG_MUSIC_AND_EFFECTS_7_1_CH",
"THEATRICAL_DIALOG_MUSIC_AND_EFFECTS_ATMOS",
"THEATRICAL_MUSIC_AND_EFFECTS_5_1_CH",
"THEATRICAL_MUSIC_AND_EFFECTS_7_1_CH",
"THEATRICAL_MUSIC_AND_EFFECTS_ATMOS",
"THEATRICAL_PRINT_MASTER_5_1_CH",
"THEATRICAL_PRINT_MASTER_7_1_CH",
"THEATRICAL_PRINT_MASTER_ATMOS",
"THEATRICAL_PRINT_MASTER_LOCALIZED"
],
"description": "Type of this asset"
}
}
}
}
200
Headers
Content-Type: application/json
Body
[
{
"downloadAsperaManifest": {
"direction": "receive",
"authentication": "token",
"cipher": "aes-128",
"destination_root": "",
"fasp_port": 33001,
"http_fallback_port": 8443,
"min_rate_kbps": 0,
"rate_policy": "fair",
"remote_host": "pegasusasperaprod.us-east-1.dynprod.netflix.net",
"remote_user": "filetransfer",
"source_root": "",
"ssh_port": 22,
"target_rate_kbps": 250000,
"rate_policy_allowed": "fair",
"min_rate_cap_kbps": 0
},
"downloadToken": "ATM2_xxxxxxxxx",
"assets": [
{
"status": "ACTIVE",
"qcStatus": null,
"type": "FINAL_PROXY",
"createdTs": 1606136980123,
"fileName": "NetflixFinalProxy_xxxxxx.mp4",
"language": null,
"length": null,
"movieId": 1111,
"title": "Movie Title",
"subType": null,
"packageId": 2222,
"sourcePath": "xxxxxxxxxxxxxx",
"destinationPath": "/FINAL_PROXY/NetflixFinalProxy_xxxxxxx.mp4",
"downloadError": null
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"downloadToken" : {
"type": "string",
"description": "Token that should be used to download from aspera"
},
"assets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum" : [
"NOT_AVAILABLE",
"ACTIVE"
],
"description": "Status of this asset"
},
"type" : {
"type": "string",
"enum" : [
AS_BROADCAST_SCRIPT("As Broadcast Script", OTHER),
AS_RECORDED_SCRIPT("As Recorded Script", OTHER),
AUDIO_SESSION_PREP("OMF/AAF", AUDIO),
CCSL("CCSL", OTHER),
CLOSED_CAPTIONING("SDH/CC", TEXT),
COMPOSERS_LEAD_SHEETS("Composer's Lead Sheets", OTHER),
DIALOGUE_EDIT_DECISION_LIST("Dialogue EDL", AUDIO),
DIALOGUE_LIST("Dialogue List", OTHER),
DIALOGUE_MUSIC_EFFECTS_STEM("DME", AUDIO),
DIALOG_MUSIC_AND_EFFECTS("DME", AUDIO),
DIALOG_MUSIC_AND_EFFECTS_2_0_CH("2.0 DME", AUDIO),
DIALOG_MUSIC_AND_EFFECTS_5_1_CH("5.1 DME", AUDIO),
DIALOG_MUSIC_AND_EFFECTS_7_1_CH("7.1 DME", AUDIO),
DIALOG_MUSIC_AND_EFFECTS_ATMOS("Atmos DME", AUDIO),
DUB_SCRIPT("Dubbing Script", OTHER),
EDIT_PRO_SESSION("Localized Edit Project Files", AUDIO),
ENGLISH_TEMPLATE("English Template", OTHER),
FINAL_PROXY("Final Proxy", VIDEO),
FORCED_NARRATIVE("Forced Narrative", TEXT),
LOCALIZATION_NOTES("Localization Notes", OTHER),
LOCKED_PROXY("Production Locked Proxy", VIDEO),
MIX_MINUS_NARRATION_2_0_CH("2.0 Mix Minus Narration", AUDIO),
MIX_MINUS_NARRATION_5_1_CH("5.1 Mix Minus Narration", AUDIO),
MIX_MINUS_NARRATION_7_1_CH("7.1 Mix Minus Narration", AUDIO),
MIX_MINUS_NARRATION_ATMOS("Atmos Mix Minus Narration", AUDIO),
MUSIC_AND_EFFECTS_2_0_CH("2.0 M&E", AUDIO),
MUSIC_AND_EFFECTS_5_1_CH("5.1 M&E", AUDIO),
MUSIC_AND_EFFECTS_7_1_CH("7.1 M&E", AUDIO),
MUSIC_AND_EFFECTS_ADDITIONAL_MIXES("M&E [Additional Mix]", AUDIO),
MUSIC_AND_EFFECTS_ATMOS("Atmos M&E", AUDIO),
MUSIC_AND_EFFECTS_NOTES("M&E Notes", OTHER),
PIVOT_LANGUAGE_DIALOGUE_LIST("Pivot Language Dialogue List", OTHER),
PRELIMINARY_DIALOG_MUSIC_AND_EFFECTS("DME [Preliminary]", AUDIO),
PREMIX_WAV("Premix Dialogue Stem", AUDIO),
PRINT_MASTER_2_0_CH("2.0 Print Master", AUDIO),
PRINT_MASTER_5_1_CH("5.1 Print Master", AUDIO),
PRINT_MASTER_7_1_CH("7.1 Print Master", AUDIO),
PRINT_MASTER_ADDITIONAL_MIXES("Print Master [Additional Mix]", AUDIO),
PRINT_MASTER_ATMOS("Atmos Print Master", AUDIO),
SECONDARY_AUDIO_SOURCE("Secondary Audio", AUDIO),
SERVICING_TURNOVER_PROXY("Production Servicing Proxy", VIDEO),
SHOW_GUIDE("Show Guide", OTHER),
SUBTITLE("Subtitle", TEXT),
THEATRICAL_DIALOG_MUSIC_AND_EFFECTS_5_1_CH("5.1 Theatrical DME", AUDIO),
THEATRICAL_DIALOG_MUSIC_AND_EFFECTS_7_1_CH("7.1 Theatrical DME", AUDIO),
THEATRICAL_DIALOG_MUSIC_AND_EFFECTS_ATMOS("Atmos Theatrical DME", AUDIO),
THEATRICAL_MUSIC_AND_EFFECTS_5_1_CH("5.1 Theatrical M&E", AUDIO),
THEATRICAL_MUSIC_AND_EFFECTS_7_1_CH("7.1 Theatrical M&E", AUDIO),
THEATRICAL_MUSIC_AND_EFFECTS_ATMOS("Atmos Theatrical M&E", AUDIO),
THEATRICAL_PRINT_MASTER_5_1_CH("5.1 Theatrical Print Master", AUDIO),
THEATRICAL_PRINT_MASTER_7_1_CH("7.1 Theatrical Print Master", AUDIO),
THEATRICAL_PRINT_MASTER_ATMOS("Atmos Theatrical Print Master", AUDIO),
THEATRICAL_PRINT_MASTER_LOCALIZED("Theatrical Print Master", AUDIO)
],
"description": "Type of this asset"
},
"typeDisplayName": {
"type" : "string",
"description": "Display name of the asset type, refer to type for details"
},
"createdTs": {
"type": "integer",
"description": "Created timestamp of this asset"
},
"fileName": {
"type" : "string",
"description": "The name of the asset"
},
"length": {
"type": "integer",
"description": "Duration of this asset"
},
"sourcePath": {
"type": "String",
"description": "Source path of the file"
},
"destinationPath": {
"type": "integer",
"description": "Duration of this asset"
},
"qcStatus": {
"type": "string",
"enum" : [
NOT_AVAILABLE,
PASSED,
FAILED
],
"description": "QC status of this asset"
},
"language": {
"type" : "string",
"description": "Language of the asset"
},
"movieId": {
"type": "integer",
"description": "Movie ID of this asset"
}
"packageId": {
"type": "integer",
"description": "Package ID of this asset"
},
"subType": {
"type" : "string",
"description": "SubType of the asset"
},
"title": {
"type": "string",
"description": "Movie title of this asset"
},
"sourcePath": {
"type" : "string",
"description": "Aspera source to download"
},
"destinationPath": {
"type": "string",
"description": "Destination path to the download location."
},
"downloadError": {
"type": "string",
"description": "Error message if the download failed"
}
}
}
},
"downloadAsperaManifest": {
"type": "object",
"properties": {
"remote_host": {
"type": "String",
"description": "Aspera server host"
}
"remote_user": {
"type": "String",
"description": "Aspera server user name"
}
}
}
}
}