How do I create a new recording with the API?

I’m looking through the unofficial Tablo API guide and it says that to schedule a new recording you send a HTTP PATCH to an upcoming item that you get from “/guide/airings”.

But when I do a GET request to “/guide/airings”, it returns an empty list (I don’t currently have anything scheduled).

How do I create a new one so that I can create a manual recording?

I tried the developer window with the official web interface but when I hit “done” the next request is a GET to “http://192.168.89.120:8887/guide/programs?state=scheduled” and the list returned shows the new scheduled recording (“/guide/programs/2902441”).

Does anyone know how it got there? The developer window network activity doesn’t show anything between the last GET request for loading data into the schedule recording interface.

I guess if the unofficial API guide doesn’t work you would have to signup and sign an NDA and get the official API’s and documentation. Of course there might not be one for the gen 4.

Are you sure you read the terms of use

Do you have a guide subscription?
I’ve used the “unofficial Tablo API” with success, but I’ve always had a guide subscription. I just ran my little script and it was successful, so I don’t think anything has changed with the legacy Tablos.

Any chance I could see this little script of yours?

I can modify an existing schedule but I can’t find a way to generate a brand new scheduled recording. How do I get a new object_id?

Sounds like you’re making progress. Here’s a simple version from my Python 3 code with requests and json libraries. Add your Tablo’s IP where I have “192.XXX.XX.XXX”:

import time
import datetime
import requests
import json
USER_AGENT = ‘Tablo-Py/0.1’
head = {‘User-Agent’: USER_AGENT}
airings = requests.get(‘http://192.XXX.XX.XXX:8885/guide/airings’)
airings = airings.json()
airings_count = len(airings)
print(airings_count)
movie_airings = [x for x in airings if “movie” in x]
movies_count = len(movie_airings)
print(movies_count)
print(movie_airings)
k = ‘guide/movies/airings/1578015’
episode_path = ‘http://192.XXX.XX.XXX:8885/’ + k
episode_path_json = requests.get(episode_path)
episode_path_json = episode_path_json.json()
episode_path_json[‘scheduled’] = True
record = requests.patch(episode_path, headers=head, json=episode_path_json)
print(k)

First prints how many items in “airings” then how many are movies. Then you have a print of all the movie airings paths.
Finally, shows a movie path that I randomly selected and hard coded (#1578015). It schedules it to record.
On my system this records “La misma luna” from Telemundo on September 7. If you get errors, try a different movie path (should be able to choose any from the long list printed assuming it doesn’t end before you change the code).

1 Like

Got it. I figured it out. Thanks so much. I can now call the REST API and successfully manually schedule a recording.

MODS: is it okay to share details here?