Documentation for the web Kickflip API.
Before you use the Kickflip API, you must first get your access tokens from the Kickflip dashboard.
Kickflip uses OAuth2 as an authentication protocol.
Whatever OAuth2 library that you're using should be smart enough to understand what it needs to do simply by pointing it to
https://kickflip.io/o/
as the appropriate OAuth2 endpoint.
All Kickflip streams must be started by Kickflip users. Users are necessary to make sure that people cannot overwrite each other . Users can be ephemeral, and clients can create new users as much as they like. However, in most situations a single user per client will suffice.
To create a new user, call
https://kickflip.io/api/1.2/user/new/
You can also POST an optional username, email, password, display_name, and extra_info to define a user's account information. If a username is not supplied, one will be randomly generated.
Note that all responses will be in JSON format.
Sample response:
{
"aws_secret_key":"5R/B7GiXXXXXXmR13Tk6HlTz95hQNnuHFd2dP/R",
"aws_access_key":"AKIAJREVXXXEOMGZ3A",
"app":"kickflip-ios-123",
"name":"kickflip-ios-123-w3pi7o",
"uuid":"26ac0eea-14c1-4d29-afd7-5d8576aXc1ea",
"success":true
}
To change any information about a user, call this URL
https://kickflip.io/api/1.2/user/change/
and supply a password. You can then also define email, display_name, extra_info and new_password.
Get the publicly available information about any user, call this URL
https://kickflip.io/api/1.2/user/info/
and supply a 'username'.
If you wish to persist a user's account accross devices, you'll need to supply a correct username and password to this endpoint,
https://kickflip.io/api/1.2/user/uuid/
which will return all of the necessary credentials to use the API and the upload endpoints.
Kickflip clients must call the start stream endpoint in order to get the most recent access tokens and the instructions for the stream parameters.
To start a stream, first call:
https://kickflip.io/api/1.2/stream/start/
supplying the user's uuid, as well as an optional lat, lon, city, state and country for geo-coded streams, and an optional private for private streams.
Sample response:
{
"aws_secret_key":"5R/B7GiAzXXXkGmR13Tk6HlTz95hQNnuHFd2dP/R",
"aws_access_key":"AKIAJREVSXXXXQEOMGZ3A",
"aws_session_token":"STXXXXXXXXXXXXASDFASDF",
"aws_duration":"XXDURATIONVALUE",
"aws_prefix": "appname/username/cd29739a-a9da-4deb-ba9c-e8f9f2a72c85/"
"success":true,
"chat_url":"Not implemented yet",
"stream_type":"HLS",
"kickflip_url":"http://kickflip.io/cd29739a-a9da-4deb-ba9c-e8f9f2a72c85",
"bucket_name":"kickflip-us-east",
"stream_id":"cd29739a-a9da-4deb-ba9c-e8f9f2a72c85",
"stream_url":"https://dasdfasdfasdf1234.cloudfront.net/appname/username/cd29739a-a9da-4deb-ba9c-e8f9f2a72c85/stream.m3u8",
"upload_url":"https://kickflip-us-east.s3.amazonaws.com/appname/username/cd29739a-a9da-4deb-ba9c-e8f9f2a72c85/"
}
Kickflip clients may 'pause' a live stream to indicate that they will resume this same stream later.
To pause a stream, call:
https://kickflip.io/api/1.2/stream/pause/
Clients must include a user's uuid and stream_id, and may include an optional lat and lon to update the location of the stream.
Similarly, clients can 'resume' a live stream.
To resume a stream, call:
https://kickflip.io/api/1.2/stream/resume/
Clients must include a user's uuid and stream_id, and may include an optional lat and lon to update the location of the stream.
Streams which are finished must call:
https://kickflip.io/api/1.2/stream/stop/
Clients must include a user's uuid and stream_id, and may include an optional lat and lon to define the end of a stream location.
Information about a stream can be set via the stream change endpoint:
https://kickflip.io/api/1.2/stream/change/
Which will set a stream's start_lat, start_lon, end_lat, end_lon, city, state*, country, private, title, description, extra_info, thumbnail_url and deleted fields.
Information about a public stream can be retreived via the stream info endpoint:
https://kickflip.io/api/1.2/stream/info/
for any public stream which you send a stream_id for.
Streams which are finished must call:
https://kickflip.io/api/1.2/stream/flag/
If users wish to report inappropriate streams, they may do so by calling the flag endpoint with any valid stream_id to increase the flag count of that object. Users may only flag a Stream once per stream.
Kickflip also provides API end points for searching publicly available streams associated with an App.
To search all streams, simply call:
https://kickflip.io/api/1.2/search/
to receive a paginated list of all streams. Adding a keyword field to the POST request will filter all streams with that value. Adding a results_per_page field will set the pagination number, and page will get the page offset. The resulting streams will be returned as a list under the streams key.
To get all streams associated with a user, simply call:
https://kickflip.io/api/1.2/search/user/
with a valid username.
To get all streams associated with a location, call:
https://kickflip.io/api/1.2/search/location/
with a valid lat, lon and a radius (in degrees).