TV API
pressassociation · Media
Welcome to the API Reference Docs page for the Press Association TV API (v2).
Authentication
Sample Requests
Return a collection of Assets.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/pressassociation.io/2.0/asset?limit=100&aliases=true&updatedAfter=2015-05-05T00%3A00%3A00.000Z"
import requests
params = {
"limit": "100",
"aliases": "true",
"updatedAfter": "2015-05-05T00:00:00.000Z"
}
response = requests.get(
"https://api.apis.guru/v2/specs/pressassociation.io/2.0/asset",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/pressassociation.io/2.0/asset');
url.searchParams.set('limit', '100');
url.searchParams.set('aliases', 'true');
url.searchParams.set('updatedAfter', '2015-05-05T00:00:00.000Z');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/pressassociation.io/2.0/asset")
q := baseURL.Query()
q.Set("limit", "100")
q.Set("aliases", "true")
q.Set("updatedAfter", "2015-05-05T00:00:00.000Z")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/pressassociation.io/2.0/asset")
uri.query = URI.encode_www_form({
"limit" => "100",
"aliases" => "true",
"updatedAfter" => "2015-05-05T00:00:00.000Z"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/pressassociation.io/2.0/asset?" . http_build_query([
"limit" => "100",
"aliases" => "true",
"updatedAfter" => "2015-05-05T00:00:00.000Z"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));If you are interested in a list of channels that have had there schedule updated you can filter by the following query params. - scheduleStart - scheduleEnd - scheduleUpdatedSince adding these query params will filter the channel collection to only return channels that have been updated within t
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/pressassociation.io/2.0/channel?date=2018-09-15&aliases=true®ionId=afa4f624-da9b-54ce-b514-570345dbbdce&platformId=d3b26caa-8c7d-5f97-9eff-40fcf1a6f8d3&scheduleEnd=2015-05-06T00%3A00%3A00&scheduleStart=2015-05-05T00%3A00%3A00&scheduleUpdatedSince=2015-05-05T00%3A00%3A00"
import requests
params = {
"date": "2018-09-15",
"aliases": "true",
"regionId": "afa4f624-da9b-54ce-b514-570345dbbdce",
"platformId": "d3b26caa-8c7d-5f97-9eff-40fcf1a6f8d3",
"scheduleEnd": "2015-05-06T00:00:00",
"scheduleStart": "2015-05-05T00:00:00",
"scheduleUpdatedSince": "2015-05-05T00:00:00"
}
response = requests.get(
"https://api.apis.guru/v2/specs/pressassociation.io/2.0/channel",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/pressassociation.io/2.0/channel');
url.searchParams.set('date', '2018-09-15');
url.searchParams.set('aliases', 'true');
url.searchParams.set('regionId', 'afa4f624-da9b-54ce-b514-570345dbbdce');
url.searchParams.set('platformId', 'd3b26caa-8c7d-5f97-9eff-40fcf1a6f8d3');
url.searchParams.set('scheduleEnd', '2015-05-06T00:00:00');
url.searchParams.set('scheduleStart', '2015-05-05T00:00:00');
url.searchParams.set('scheduleUpdatedSince', '2015-05-05T00:00:00');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/pressassociation.io/2.0/channel")
q := baseURL.Query()
q.Set("date", "2018-09-15")
q.Set("aliases", "true")
q.Set("regionId", "afa4f624-da9b-54ce-b514-570345dbbdce")
q.Set("platformId", "d3b26caa-8c7d-5f97-9eff-40fcf1a6f8d3")
q.Set("scheduleEnd", "2015-05-06T00:00:00")
q.Set("scheduleStart", "2015-05-05T00:00:00")
q.Set("scheduleUpdatedSince", "2015-05-05T00:00:00")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/pressassociation.io/2.0/channel")
uri.query = URI.encode_www_form({
"date" => "2018-09-15",
"aliases" => "true",
"regionId" => "afa4f624-da9b-54ce-b514-570345dbbdce",
"platformId" => "d3b26caa-8c7d-5f97-9eff-40fcf1a6f8d3",
"scheduleEnd" => "2015-05-06T00:00:00",
"scheduleStart" => "2015-05-05T00:00:00",
"scheduleUpdatedSince" => "2015-05-05T00:00:00"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/pressassociation.io/2.0/channel?" . http_build_query([
"date" => "2018-09-15",
"aliases" => "true",
"regionId" => "afa4f624-da9b-54ce-b514-570345dbbdce",
"platformId" => "d3b26caa-8c7d-5f97-9eff-40fcf1a6f8d3",
"scheduleEnd" => "2015-05-06T00:00:00",
"scheduleStart" => "2015-05-05T00:00:00",
"scheduleUpdatedSince" => "2015-05-05T00:00:00"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Return a collection of Contributors.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/pressassociation.io/2.0/contributor?limit=100&aliases=true&updatedAfter=2015-05-05T00%3A00%3A00.000Z"
import requests
params = {
"limit": "100",
"aliases": "true",
"updatedAfter": "2015-05-05T00:00:00.000Z"
}
response = requests.get(
"https://api.apis.guru/v2/specs/pressassociation.io/2.0/contributor",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/pressassociation.io/2.0/contributor');
url.searchParams.set('limit', '100');
url.searchParams.set('aliases', 'true');
url.searchParams.set('updatedAfter', '2015-05-05T00:00:00.000Z');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/pressassociation.io/2.0/contributor")
q := baseURL.Query()
q.Set("limit", "100")
q.Set("aliases", "true")
q.Set("updatedAfter", "2015-05-05T00:00:00.000Z")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/pressassociation.io/2.0/contributor")
uri.query = URI.encode_www_form({
"limit" => "100",
"aliases" => "true",
"updatedAfter" => "2015-05-05T00:00:00.000Z"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/pressassociation.io/2.0/contributor?" . http_build_query([
"limit" => "100",
"aliases" => "true",
"updatedAfter" => "2015-05-05T00:00:00.000Z"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- See official documentation for authentication and setup.
What can you build with TV API?
TV API is a Media API. Developers commonly use media APIs for:
- storing and delivering images, video, and audio
- building digital asset management and media libraries
- transcoding and optimising media for the web
- adding video streaming and playback to your app
- automating content tagging and metadata extraction
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. TV API is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide