Playlist imports

Start a playlist import

POST/streams/m3u-imports/{id}/start/

write Change: creates or edits. Scopes

Step two: the groups to import (groups, as named in group_summary; "" for channels without a group) and what to apply to the streams it adds. The import runs in the background; poll it for its progress. GET /streams/m3u-imports/options/ lists the choices and defaults.

Path parameters

  • idstring (uuid)required

    The playlist import's id.

Body

  • groupsstring[]required
  • category_modestring

    auto: a category per group, reusing one of the same name; existing: all in category.

    • auto - auto
    • existing - existing

    Default: "auto"

  • categorystring (uuid)
  • extra_categoriesstring (uuid)[]
  • fallback_categorystring (uuid)

    For channels without a group, with category_mode: auto.

  • conflict_modestring

    When a stream of the same name and category exists.

    • skip - Skip existing
    • update - Update existing
    • suffix - Create with a numbered suffix

    Default: "skip"

  • is_on_demandboolean

    Default: false

  • is_activeboolean

    Default: true

  • allow_passthroughboolean

    Default: true

  • follow_providersboolean

    Streams take the name, logo or guide of a provider channel with the same source.

    Default: true

  • transcoding_profilestring (uuid)
  • streaming_enginestring

    Default: "gstreamer"

  • bouquetsstring (uuid)[]
  • routing_modestring

    Default: "auto"

  • pinned_primarystring (uuid)
  • pinned_backup_1string (uuid)
  • pinned_backup_2string (uuid)
  • auto_eligible_serversstring (uuid)[]
  • sort_order_startinteger

    Numbers from here; blank: after every stream.

Response

202 OK

  • idstring (uuid)requiredread-only
  • filenamestringrequiredread-only
  • statusstringrequiredread-only
  • group_summaryanyrequiredread-only

    [[group-title, channel count], …] as parsed from the upload.

  • selected_groupsanyrequiredread-only
  • optionsanyrequiredread-only

    The settings applied to every stream this import creates.

  • totalintegerrequiredread-only
  • createdintegerrequiredread-only
  • updatedintegerrequiredread-only
  • skippedintegerrequiredread-only
  • failed_countintegerrequiredread-only
  • started_countintegerrequiredread-only
  • total_channelsintegerrequiredread-only

    Channels in the playlist, before any group is left out.

  • processedintegerrequiredread-only

    Channels dealt with so far, whatever was done with them.

  • start_totalintegerrequiredread-only

    Streams waiting to be started a few at a time; started_count of them have started.

  • is_finishedbooleanrequiredread-only
  • messagestringrequiredread-only
  • warningsanyrequiredread-only
  • streams_countintegerrequiredread-only

    Streams that still carry this import's stamp — created or updated by it, and not deleted since.

  • created_by_usernamestringrequiredread-only
  • created_atstring (date-time)requiredread-only
  • updated_atstring (date-time)requiredread-only

Errors

  • 400 Something sent is not valid. Each field that is wrong is named with what is wrong.
  • 401 No credential, or one that is wrong, expired or revoked.
  • 403 The account, or the key's or app's scopes, may not do this.
  • 404 Nothing with this id, or nothing the account can see.
  • 409
  • 429 Slow down: wait the seconds in the Retry-After header, then try again.

What each error means