Skip to content

API

Search API

A public, read-only JSON API for the talk archive. Responses are GET-only, cached for a short time, and open to browser clients (Access-Control-Allow-Origin: *). The same filters drive the search page.

GET /api/v1/search

Returns results, total, paging, and facet counts. Years, conferences, tracks, and difficulties combine with OR. Topics combine with AND. Sort is relevance (default) or newest. Page size defaults to 24 and caps at 50.

curl 'https://cybertalks.org/api/v1/search?q=ransomware&year=2024&conference=defcon&difficulty=advanced&sort=newest&page=1'

curl 'https://cybertalks.org/api/v1/search?q=osint&pageSize=10'

GET /api/v1/talks/{id}

One talk. The id is the id field from a search result, for example defcon-5-hacker-history-ohXjTIAmo1U.

curl 'https://cybertalks.org/api/v1/talks/defcon-5-hacker-history-ohXjTIAmo1U'

GET /api/v1/facets

Unfiltered counts for year, conference, track, and difficulty, plus the most common topics. Topic suggestions on search are capped; any topic slug still works as a filter.

curl 'https://cybertalks.org/api/v1/facets'

Limits

  • Difficulty is beginner, intermediate, advanced, or expert. There is no unknown level.
  • Search covers talks. Clips, interviews, and announcements are left out, matching the site default.
  • Words are matched whole, case-insensitively. Two-letter minimum. Common words such as “the” are ignored.
  • Invalid parameters return 400 with error, field, and message.
  • Each isolate allows 120 requests per minute per IP. A 429 includes Retry-After. That counter is per isolate, not a global quota.
  • Successful responses send Cache-Control: public, max-age=60.