Server API

appMixable Server API

Here's a look at what's available via our server API, and the various ways you can integrate it with your app and associated processes.


In-House Remix Authoring

Create your own private tools for remix creation, using whatever data or media sources you choose.

End User Remix Authoring

Create custom authoring UX for end users of your app, and proxy that input to our server API.

Analytics Integration

Get up-to-date metrics about your app's remixes and incorporate them into your own visualization / reporting solution.


Sign up for API Access

If you've used other 3rd-party API services before, then this process should sound familiar:

  • Sign up on the site
  • Create a new appMixable app in the dashboard
  • Note the keys associated with your appMixable app
  • Note the keys associated with your appMixable developer account
  • Use your favorite REST client to communicate with our endpoint, sending the appropriate HTTP header information as function of your developer keys and any appMixable app of interest
  • Tune your favorite REST client to handle the JSON responses from the API and act accordingly

appMixable uses the same premise, with the primary use cases consisting of:

  • creating new remixes for your app
  • obtaining data and metrics about your remixes for reporting or analysis purposes

Note: since the appMixable service is in closed beta, access to the Server API is currently by invite only.

Request an Invite

Establishing Communication

appMixable's Server API endpoint is located at:

https://api.appmixable.com

In order to communicate with the endpoint, you should always include two pieces of information in the HTTP header of your request:

  • the appMixable app ID related to your request
  • the signed authorization string related to your request
    Note: details for how to sign API requests are available upon sign up

For ex, a call to get info for the app ID: 49ee45650d564937a56f40ee16db4ec3 would have the following header info:

X-Appmixable-App-Id: 49ee45650d564937a56f40ee16db4ec3
X-Appmixable-App-Auth: <authorization code>

Casting a New Remix

The API route to cast a new remix is:

POST /1/mix/cast/u/<mixURL>

for ex.

POST /1/mix/cast/u/4c7W

where <mixURL> is the unique token assigned to the remix from which you want to cast (e.g. the original)

Thus, to cast a new remix using the REST API, you need to provide two things:

  • the remix token from which to cast — this goes in the actual route, as outlined above
  • text or file-based inputs to replace their counterparts in the new remix — these are submitted the same way as any other HTTP POST request

After you submit a valid remix cast request to the API, you will receive a JSON response like the following:

{
  "requestId": "8ca7570e516d4fa899e7701a86b22d60"
}

Since the building of a new remix could potentially take anywhere from a couple seconds to a minute based upon the complexity of the remix, the REST API returns the ID of the request, which can be used to poll for when the remix is ready to be loaded.

Note that the request ID is a generic construct and is used whenever the fulfillment of any API request is performed asynchronously . Most requests to the API will be synchronous, and return the actual results in the response to the request, but there are a few exceptions, and casting a mix is one of them.

So then, the API route to check on that mix casting request is:

GET /1/req/progress/i/<requestId>

for ex.

GET /1/req/progress/i/8ca7570e516d4fa899e7701a86b22d60

where <requestId> is the unique ID you received in response when casting a new remix.

If the request is still in progress, the JSON response would be:

{
  "requestId": <requestId>,
  "variantType": "mix",
  "variantId": <mixId>,
  "progress": <percentageCompletedAsInt>
}

for ex. a remix that is 75% completed:

{
  "requestId": "8ca7570e516d4fa899e7701a86b22d60",
  "variantType": "mix",
  "variantId":"29771b6b633347d3a9a22148c98bc963",
  "progress": 75;
}

If the request resulted in an error, the JSON response would be:

{
  "requestId": <requestId>,
  "variantType": "mix",
  "variantId": <mixId>,
  "error": <errorMessage>
}

for ex. a remix for which an invalid image file was submitted:

{
  "requestId": "8ca7570e516d4fa899e7701a86b22d60",
  "variantType": "mix",
  "variantId":"29771b6b633347d3a9a22148c98bc963",
  "error": "Submitted image file was not in a valid image format";
}

and if the request completed successfully, the JSON response would contain the new remix token:

{
  "requestId": <requestId>,
  "variantType": "mix",
  "variantId": <mixId>,
  "token": <mixURL>,
  "progress": 100
}

for ex.

{
  "requestId": "8ca7570e516d4fa899e7701a86b22d60",
  "variantType": "mix",
  "variantId":"29771b6b633347d3a9a22148c98bc963",
  "token": "4Ds8",
  "progress": 100;
}

The remix token can then be distributed as a unique pointer for loading this specific remix in this specific app.

Getting Metrics for a Remix

The API route to get statistics associated with a remix is:

GET /1/mix/stats/u/<mixURL>

for ex.

GET /1/mix/stats/u/4Ds8

where <mixURL> is the unique token assigned to the remix of interest

To which, you would receive a JSON response like the following:

{
  "mixToken": "4Ds8",
  "stats": {
    "20141201": {
      "mixsource": 9,
      "mixinstall": 13,
      "mixload": 11,
      "mixuser": 23
    },
    "20141202": {
      "mixsource": 2,
      "mixinstall": 2,
      "mixload": 11,
      "mixuser": 10
    }
  }
}

containing a hash of the number of app installs, remix installs, remix loads, and number of users as a function of date.


Need Help?

We're always happy to help out with code or any other questions you might have.

Contact Us