elog | API Documentation
Standard API using REST and JSON

Overview

This API is essentially a suite of methods that can be called over HTTP.
  • The URL is:  https://api.elog.com/MethodNameHere
  • The HTTP header contains the necessary authentication.
  • The HTTP method is POST and the body contains JSON.
  • The HTTP result contains JSON.
  • The HTTP status code is always 200.

Methods

Movies.Titles
**Description**  
For some search text, find movie titles.  
  
**URL**  
https://api.elog.com/Movies.Titles  
  
**Argument**  
text:  
  This is the text to use as the search criteria. It doesn't have to be an  
  exact match and it can be something like a current/main title, original  
  title, or an alternative title.  
top:  
  maximum number of movies to return. Default: 100  
  
**Result**  
movies:  
  An array where each element is a movie that is composed of a dictionary  
  with these properties:  
  id:           unique id of the movie (good for passing to other methods)  
  title:        current/main title of the movie  
  release-date: date of release. Format is: YYYY-MM-DD  
  genres:       array of genres  
  keywords:     array of keywords  
  image-url:    URL of an image that represents the movie.  
                Note: If you are going to host such images yourself, don't  
                use this image URL to download the content to your servers.  
                Instead, use the URL below (notice "http" below).  
                Fill in the "..." withe "id" from above.  
                http://s3.amazonaws.com/s3.elog.com/Poster/id=...  
  id-imdb:      unique id of the movie in IMDb  
  Notes:  
   - To get more properties of a given movie, use method Movies.Meta.  
   - Your organization may have its own library of movies. See method  
     Settings.Save to limit which movies can be in the result.  
  
**Example**  
*REQUEST:*  
{  
  "text": "raiders lost ark"  
}  
  
*RESPONSE:*  
{  
   "success": true,  
   "result": {  
      "movies": [  
         {  
            "id": "85",  
            "title": "Raiders of the Lost Ark",  
            "release-date": "1981-06-12",  
            "genres": [  
               "Adventure",  
               "Action"  
            ],  
            "keywords": [  
               "saving the world",  
               "riddle",  
               "nepal",  
               ...  
            ],  
            "image-url": "...",  
            "id-imdb": "tt0082971"  
         },  
         {  
            "id": "764496",  
            "title": "On Set with 'Raiders of the Lost Ark'",  
            "release-date": "2012-06-05",  
            "genres": [],  
            "keywords": [],  
            "image-url": "...",  
            "id-imdb": null  
         },  
         ...  
      ]  
   }  
}  
Movies.Search
**Description**  
For some search text, search for similar movies.  
  
**URL**  
https://api.elog.com/Movies.Search  
  
**Argument**  
text:  
  This is the text to use as the search criteria. This is not a traditional  
  boolean search of the text; it is a fuzzy/AI search. The text can be of  
  any length.  
top:  
  maximum number of movies to return. Default: 100  
  
**Result**  
movies:  
  An array where each element is a movie that is composed of a dictionary  
  with these properties:  
  id:           unique id of the movie (good for passing to other methods)  
  title:        current/main title of the movie  
  release-date: date of release. Format is: YYYY-MM-DD  
  genres:       array of genres  
  keywords:     array of keywords  
  image-url:    URL of an image that represents the movie.  
                Note: If you are going to host such images yourself, don't  
                use this image URL to download the content to your servers.  
                Instead, use the URL below (notice "http" below).  
                Fill in the "..." withe "id" from above.  
                http://s3.amazonaws.com/s3.elog.com/Poster/id=...  
  id-imdb:      unique id of the movie in IMDb  
  Notes:  
   - To get more properties of a given movie, use method Movies.Meta.  
   - Your organization may have its own library of movies. See method  
     Settings.Save to limit which movies can be in the result.  
  
**Example**  
*REQUEST:*  
{  
  "text": "A lonely writer buys a newly developed artificial intelligence  
           operating system and he is able to have a romantic relationship  
           with it."  
}  
  
*RESPONSE:*  
{  
   "success": true,  
   "result": {  
      "movies": [  
         {  
            "id": "152601",  
            "title": "Her",  
            "release-date": "2013-12-18",  
            "genres": [  
               "Romance",  
               "Science Fiction",  
               "Drama"  
            ],  
            "keywords": [  
               "artificial intelligence",  
               "future",  
               "computer",  
               "love",  
               "loneliness",  
               "transhumanism",  
               "heartbreak",  
               "singularity"  
            ],  
            "image-url": "...",  
            "id-imdb": "tt1798709"  
         },  
         ...  
      ]  
   }  
}  
Movies.MLT
**Description**  
Given a movie id, run MLT (More Like This) on it.  
  
**URL**  
https://api.elog.com/Movies.MLT  
  
**Argument**  
id: (required)  
  unique id of the movie to run MLT on  
top:  
  maximum number of movies to return. Default: 100  
  
**Result**  
movies:  
  An array where each element is a movie that is composed of a dictionary  
  with these properties:  
  id:           unique id of the movie (good for passing to other methods)  
  title:        current/main title of the movie  
  release-date: date of release. Format is: YYYY-MM-DD  
  genres:       array of genres  
  keywords:     array of keywords  
  image-url:    URL of an image that represents the movie.  
                Note: If you are going to host such images yourself, don't  
                use this image URL to download the content to your servers.  
                Instead, use the URL below (notice "http" below).  
                Fill in the "..." withe "id" from above.  
                http://s3.amazonaws.com/s3.elog.com/Poster/id=...  
  id-imdb:      unique id of the movie in IMDb  
  Notes:  
   - To get more properties of a given movie, use method Movies.Meta.  
   - Your organization may have its own library of movies. See method  
     Settings.Save to limit which movies can be in the result.  
  
**Example**  
*REQUEST:*  
{  
  "id": "85"  
}  
  
*RESPONSE:*  
{  
   "success": true,  
   "result": {  
      "movies": [  
         {  
            "id": "89",  
            "title": "Indiana Jones and the Last Crusade",  
            "release-date": "1989-05-24",  
            "genres": [  
               "Adventure",  
               "Action"  
            ],  
            "keywords": [  
               "germany",  
               "saving the world",  
               "venice, italy",  
               "holy grail",  
               ...  
            ],  
            "image-url": "...",  
            "id-imdb": "tt0097576"  
         },  
         ...  
      ]  
   }  
}  
Movies.Meta
**Description**  
Given a movie id, return meta data for it.  
  
**URL**  
https://api.elog.com/Movies.Meta  
  
**Argument**  
id: unique id of the movie to get information for  
  
**Result**  
movies:  
  An array where each element is a movie that is composed of a dictionary  
  with several properties. This has ongoing additions. See an example below  
  and run it yourself to get the idea. Let us know if you need more.  
  id:           unique id of the movie (good for passing to other methods)  
  title:        current/main title of the movie  
  release-date: date of release. Format is: YYYY-MM-DD  
  genres:       array of genres  
  keywords:     array of keywords  
  image-url:    URL of an image that represents the movie.  
                Note: If you are going to host such images yourself, don't  
                use this image URL to download the content to your servers.  
                Instead, use the URL below (notice "http" below).  
                Fill in the "..." withe "id" from above.  
                http://s3.amazonaws.com/s3.elog.com/Poster/id=...  
  id-imdb:      unique id of the movie in IMDb  
  ... (more here)  
  
**Example**  
*REQUEST:*  
{  
  "id": "85"  
}  
  
*RESPONSE:*  
{  
   "success": true,  
   "result": {  
      "movie": {  
         "id": "85",  
         "title": "Raiders of the Lost Ark",  
         "release-date": "1981-06-12",  
         "genres": [  
            "Adventure",  
            "Action"  
         ],  
         "keywords": [  
            "saving the world",  
            "riddle",  
            "nepal",  
            ...  
         ],  
         "image-url": "...",  
         "id-imdb": "tt0082971",  
         "original-language": "en",  
         "spoken-languages": [  
            "en", "es", "de", "he", "ar", "ne"  
         ],  
         "original-title": "Raiders of the Lost Ark",  
         "alternative-titles": [  
            "Indiana Jones - Les aventuriers de l'arche perdue",  
            "Poszukiwacze zaginionej Arki",  
            ...  
         ],  
         "overview": "When Dr. Indiana Jones the tweed-suited professor who  
                      just happens to be a celebrated archaeologist..."  
      }  
   }  
}  
Movies.Keywords
**Description**  
For some text, generate keywords that are relevant to movie content and themes.  
The keywords aren't necessarily even found in the text.  
  
**URL**  
https://api.elog.com/Movies.Keywords  
  
**Argument**  
text: text, of any length, to find keywords for  
top: maximum number of keywords to return. Default: 100  
  
**Result**  
keywords: array of keywords  
  
**Example**  
*REQUEST:*  
{  
  "text": "A rat named Remy dreams of becoming a great French chef despite his  
           family's wishes and the obvious problem of being a rat in a  
           decidedly rodent-phobic profession. When fate places Remy in the  
           sewers of Paris, he finds himself ideally situated beneath a  
           restaurant made famous by his culinary hero, Auguste Gusteau.  
           Despite the apparent dangers of being an unlikely - and certainly  
           unwanted - visitor in the kitchen of a fine French restaurant,  
           Remy's passion for cooking soon sets into motion a hilarious and  
           exciting rat race that turns the culinary world of Paris upside down.",  
  "top": 10  
}  
  
*RESPONSE:*  
{  
  "success": true,  
  "result":  
  {  
    "keywords":  
    [  
      "mouse","evacuation","leaving one's family","work","restaurant critic",  
      "spice","cookbook","sewer","chef","rat"  
    ]  
  }  
}  

Asynchronous Calls

Any method above can be called with "asynchronous_mode" set to true to mean that the result should contain a unique token that looks something like this:   {"asynchronous_token": "aZ..."}

The result above can then later be passed as the argument to method Asynchronous.GetResultForToken to get the final/real result. If the result is not ready yet, an appropriate error result is returned.

Also, when "asynchronous_mode" is set to true, the property "asynchronous_callback" can be set to a URL to callback when the result is ready (so that you don't have to perform any polling). The call to the URL is an HTTP POST and the body is just the same JSON that is returned in the initial call (the JSON shown above that includes the token).

Authentication

"Basic Access Authentication" is used for all API calls. You will be issued a user name and a password, which should be used when forming the required HTTP header.
So, for example, if your user name is "UserA" and your password is "ZbJ058gm", the appropriate HTTP header for authorization is the following:
  Authorization: Basic VXNlckE6WmJKMDU4Z20=

Error Handling

When some type of error occurs with your call, an error result is returned.
In each call that you make, the first thing you should do is check the success bit and behave accordingly.
HTTP status codes are not mixed in at all with the API itself.
You will generally just receive a status code of 200. It is always possible that the communication over HTTP could fail or some very unexpected result could occur, but all of that is outside the scope of the API.
A successful result looks something like this:
{
   "success": true,
   "result": {...}
}
An error result has the same structure and looks something like this:
{
   "success": false,
   "result":
   {
      "code": "property.missing",
      "message": "A required property is missing.",
      "detail": "dataset"
   }
}