Docs

One key does both jobs: reading warnings and submitting them.

Authentication

Send the key as a bearer token. Create an account to get one.

Authorization: Bearer sk_...

Keys are stored hashed and shown once. Lost one? Rotate it from your dashboard — the old key stops working immediately.

Look up warnings

GET /v1/warnings — 100 requests a minute, per key.

tmdb_idTMDB id. For a series this is the show's id, not the episode's.
titleUse instead of tmdb_id. The closest match wins.
yearOptional. Narrows a title search.
media_typeRequired. movie or tv.
season episodeRequired when media_type is tv.
GET /v1/warnings?tmdb_id=1399&media_type=tv&season=1&episode=3

{
  "tmdb_id": 1399,
  "media_type": "tv",
  "season": 1,
  "episode": 3,
  "title": "Game of Thrones",
  "year": 2011,
  "report_count": 1,
  "warnings": [
    { "category": "romance", "start": 300, "end": 330, "severity": "severe" }
  ]
}

GET /v1/titles?title=&year=&media_type= searches what is already covered, so you can pick the right tmdb_id first.

Submit a report

POST /v1/reports — 30 a minute. It waits for review unless your account is trusted.

{
  "tmdb_id": 603,
  "media_type": "movie",
  "title": "The Matrix",
  "year": 1999,
  "warnings": [
    { "category": "romance", "start": 1245, "end": 1262, "severity": "moderate" }
  ]
}
tmdb_id titleBoth required. Stored as you send them — TMDB is never called.
media_typemovie or tv.
season episodeRequired for tv, rejected for movie.
yearOptional.
categoryromance. The only one so far.
start endWhole seconds from the first frame. end must be larger.
severitymild, moderate or severe.

Up to 200 warnings in one submission. GET /v1/reports/mine lists everything you have sent with its review status.

When something goes wrong

400validation_error, with a details array naming each field that failed.
401The key is missing, wrong, or has been rotated.
404Nothing approved for that title yet.
429Over the quota. RateLimit-Reset says when it clears.