Search API

This API describes data exchange format between the Ace Stream LiveTV app and external services called “channel sources”, which are configured here: Search settings

Currently, to add new source user must enter its URL. It’s then used to exchange data between the Ace Stream LiveTV app and the source.

Interaction schema:

  • when user searches for content an HTTP request is sent to the source’s URL
  • the source generates response in the format described in this doc
  • app parses the response and shows search results to the user


The default protocol for accessing source URL is http. This means that when user adds “” it’s converted to “”.

Services that implement channel sources API must always support http protocol. If the service wants to exchange data over https it must redirect from http to https URL.

Request params

  • api_version (integer, optional) - API version which should be used to generate response (default is 4)
  • query (string, optional) - search query
  • category (string, optional) - filter by category (list of categories)
  • page (integer, optional) - page number (starting from 0, default is 0)
  • page_size (integer, optional) - page size (default is 10)


When query param is empty service must return all available channels (pagination still applies).

Response format

Response must be JSON with such fields:

Top level:

  • result (Root object, required) - root object


  • total (integer, required) - total number of found items
  • time (float, required) - query execution time
  • api_version (integer, optional) - API version used to generate output
  • results (array of Channel objects, required) - list of found channels


  • name (string, required) - channel title
  • items (array of objects, required) - list of streams for this channel (there can be more than one stream for each channel)
  • icons (array of Icon objects, optional) - channel icons
  • epg (array of EPG objects, optional) - channel EPG


  • url (string, optional) - stream URL (for regular streams, without P2P support)
  • infohash (string, optional) - infohash


  • type (integer, required) - type of icon:
    • 0: just logo
    • 1: light logo (for dark themes)
    • 2: dark logo (for light themes)
    • 3: picon (220x132 image)
  • url (string, required) - icon URL


  • start (integer, required) - program start (seconds since epoch)
  • stop (integer, required) - program start (seconds since epoch)
  • name (string, required) - program title
  • description (string, optional) - program description
  • poster_uri (string, optional) - program poster URI

API versioning

Current API version is 4. It’s used as default when no API version is specified in either request of response.


  • informational
  • entertaining
  • educational
  • movies
  • documentaries
  • sport
  • fashion
  • music
  • regional
  • ethnic
  • religion
  • teleshop
  • erotic_18_plus
  • other_18_plus
  • cyber_games
  • amateur
  • webcam
  • kids
  • series


Assume that the source URL is

Empty response

GET /search?query=test HTTP/1.1
Accept: application/json
  "result": {
    "time": 0.34,
    "total": 0,
    "results": []

Response with one channel

GET /search?query=brodilo HTTP/1.1
Accept: application/json
  "result": {
    "time": 0.015,
    "total": 1,
    "results": [
        "name": "Brodilo TV",
        "items": [
          {"url": "http:\/\/\/channel.php"}

Test channel source

You can play live with test channel source: