elixtagram v0.7.0 Elixtagram

Provides access to the Instagram API.

Link to this section Summary

Functions

Returns the url you will need to redirect a user to for them to authorise your app with their Instagram account. When they log in there, you will need to implement a way to catch the code in the request url (they will be redirected back to your INSTAGRAM_REDIRECT_URI)

Returns the url to redirect a user to when authorising your app to use their account. Takes a list of permissions scopes as atom to request from Instagram

Returns the url to redirect a user to when authorising your app to use their account. Takes a list of permissions scopes as atom to request from Instagram, as well as a ‘state’, this is an optional query param that will be passed back to your application’s callback url

Initialises Elixtagram with system environment variables. For this to work, set INSTAGRAM_CLIENT_ID, INSTAGRAM_CLIENT_SECRET and INSTAGRAM_REDIRECT_URI

Sets a global user authentication token, this is useful for scenarios where your app will only ever make requests on behalf of one user at a time

Initialises and configures Elixtagram with a client_id, client_secret and redirect_uri. If you’re not doing anything particularly interesting here, it’s better to set them as environment variables and use Elixtagram.configure/0

Takes a keyword list containing the code returned from Instagram in the redirect after login and returns a {:ok, access_token} for making authenticated requests. If you pass an incorrect code, it will return you an {:error, reason}

Takes a location id and returns a %Elixtagram.Model.Location

Takes a location id and an access token. Returns a %Elixtagram.Model.Location

Takes a location id and a Map of params. Returns a List of recent media (as %Elixtagram.Model.Media)

Takes a location id a Map of params and an access token. Returns a List of recent media (as %Elixtagram.Model.Media)

Takes a Map of search params. Returns a List of locations (as %Elixtagram.Model.Location)

Takes a Map of search params and an access token. Returns a List of locations (as %Elixtagram.Model.Location)

Takes a media id and returns a %Elixtagram.Model.Media

Takes a media id and an access token, returns a %Elixtagram.Model.Media

Note: To use this you must have access to the comments scope, which is not by accessable without special permission [(more info)][request_scope].

Note: To use this you must have access to the comments scope, which is not by accessable without special permission [(more info)][request_scope].

Takes a media id and returns a List of comments as %Elixtagram.Model.Comment

Takes a media id and a token (or :global if it’s been configured). Returns a List of comments as %Elixtagram.Model.Comment

Note: To use this you must have access to the likes scope, which is not by accessable without special permission [(more info)][request_like_scope].

Takes a media id and returns a List of users who liked the media as %Elixtagram.Model.UserSearchResult

Takes a media id and an access token (or :global, if configured). Returns a List of users who liked the media as %Elixtagram.Model.UserSearchResult

Takes a number of items to get, returns a List of n popular media items (as %Elixtagram.Model.Media)

Takes a number of items to get and an access token. Returns a List of n popular media items (as %Elixtagram.Model.Media)

Searches for media based on the location params Map provided, returns a list of media (as %Elixtagram.Model.Media)

Searches for media based on the location params Map provided, returns a list of media (as %Elixtagram.Model.Media). Takes a Map of location params and an access token

Takes a media shortcode and returns a %Elixtagram.Model.Media

Takes a media shortcode and an access token, returns a %Elixtagram.Model.Media

Note: To use this you must have access to the likes scope, which is not by accessable without special permission [(more info)][request_like_scope].

Takes a tag name and an optional access token, returns a %Elixtagram.Model.Tag

Same as Elixtagram.tag/1, except takes an explicit access token

Takes a tag name, and a Map of params Returns the n latest items in that tag

Takes a tag name, a Map of params and an access token Returns the n latest items in that tag

Takes a tag name, a Map of params Returns the n latest items in that tag among with pagination data

Takes a tag name, a Map of params and an access token Returns the n latest items in that tag among with pagination data

Takes a query string and returns a list of tags as %Elixtagram.Model.Tag

Takes a query string and an access token, returns a list of tags

Takes a user id and returns a %Elixtagram.Model.User

Takes a user id or :self and an access token (or :global, if a global access token has been set with Elixtagram.configure(:global, token)) and returns a %Elixtagram.Model.User

Takes a Map of params and a token (or :global if a global token has been configured). Returns a List of media as %Elixtagram.Model.Media

Takes a user id, returns a List of the user’s followers as %Elixtagram.Model.UserSearchResult

Takes a user id and an access token (or :global, if configured). Returns a List of the user’s followers as %Elixtagram.Model.UserSearchResult

Takes a user id, count and returns a List of users they follow as %Elixtagram.Model.UserSearchResult

Takes a user id, count and an access token (or :global, if configured). Returns a List of users they follow as %Elixtagram.Model.UserSearchResult

Takes a Map of params and a token (or ‘:global’ if a global token has been configured). Returns a List of media as %Elixtagram.Model.Media

Takes a user id and a params Map, returns a List of media as %Elixtagram.Model.Media

Takes a user id (or :self, to get media for the user associated with the token) a params Map and access token (or :global if a global token has been configured). Returns a List of media as %Elixtagram.Model.Media

Takes a user id ( or :self, to get media for the user associated with the token) a params Map Returns a Map with :data that contains a List of %Elixtagram.Model.Media and :pagination' Map with the following keys::next_url- A url to retrieve the next page of results:nex_max_id- the:max_id` to be used to retrieve the next page of results

Takes a user id ( or :self, to get media for the user associated with the token) a params Map and access token ( or :global if a global token has been configured). Returns a Map with :data that contains a List of %Elixtagram.Model.Media and :pagination' Map with the following keys::next_url- A url to retrieve the next page of results:next_max_id- the:max_id` to be used to retrieve the next page of results

Takes a user id and an access token, returns the relationship of that user in relation to the current user as a %Elixtagram.Model.Relationship

Note: To use this you must have access to the relationships scope, which is not by accessable without special permission [(more info)][request_scope].

Takes an access token and returns a List of users who have requested to follow the user (but haven’t yet been accepted) as %Elixtagram.Model.UserSearchResult

Search for users by username. Takes a Map of search params: q (query) and optionally, count. Returns a List of users as %Elixtagram.Model.UserSearchResult

Search for users by username. Takes a Map of search params (q (query) and optionally, count) and an access token (or :global if set)

Link to this section Functions

Link to this function authorize_url!()

Returns the url you will need to redirect a user to for them to authorise your app with their Instagram account. When they log in there, you will need to implement a way to catch the code in the request url (they will be redirected back to your INSTAGRAM_REDIRECT_URI).

Note: This method authorises only ‘basic’ scoped permissions (more on this).

Example

iex(8)> Elixtagram.authorize_url!
"https://api.instagram.com/oauth/authorize/?client_id=XXX&redirect_uri=localhost%3A4000&response_type=code"
Link to this function authorize_url!(scope)

Returns the url to redirect a user to when authorising your app to use their account. Takes a list of permissions scopes as atom to request from Instagram.

Available options: :comments, :relationships and :likes

Example

iex(1)> Elixtagram.authorize_url!([:comments, :relationships])
"https://api.instagram.com/oauth/authorize/?client_id=XXX&redirect_uri=localhost%3A4000&response_type=code&scope=comments+relationships"
Link to this function authorize_url!(scope, state)

Returns the url to redirect a user to when authorising your app to use their account. Takes a list of permissions scopes as atom to request from Instagram, as well as a ‘state’, this is an optional query param that will be passed back to your application’s callback url.

Available scopes: :comments, :relationships and :likes

Example

iex(1)> Elixtagram.authorize_url!([:comments, :relationships], "somevalue")
"https://api.instagram.com/oauth/authorize/?client_id=XXX&redirect_uri=localhost%3A4000&response_type=code&scope=comments+relationships&state=somevalue"

Initialises Elixtagram with system environment variables. For this to work, set INSTAGRAM_CLIENT_ID, INSTAGRAM_CLIENT_SECRET and INSTAGRAM_REDIRECT_URI.

Example

INSTAGRAM_CLIENT_ID=XXXX INSTAGRAM_CLIENT_SECRET=XXXX INSTAGRAM_REDIRECT_URI=localhost iex
iex(1)> Elixtagram.configure
{:ok, []}
Link to this function configure(scope, token)

Sets a global user authentication token, this is useful for scenarios where your app will only ever make requests on behalf of one user at a time.

Example

iex(1)> Elixtagram.configure(:global, "MY-TOKEN")
:ok
Link to this function configure(client_id, client_secret, redirect_uri)

Initialises and configures Elixtagram with a client_id, client_secret and redirect_uri. If you’re not doing anything particularly interesting here, it’s better to set them as environment variables and use Elixtagram.configure/0

Example

iex(1)> Elixtagram.configure("XXXX", "XXXX", "localhost:4000")
{:ok, []}
Link to this function get_token!(code)

Takes a keyword list containing the code returned from Instagram in the redirect after login and returns a {:ok, access_token} for making authenticated requests. If you pass an incorrect code, it will return you an {:error, reason}

Example

iex(1)> Elixtagram.get_token!(code: code)
{:ok, "XXXXXXXXXXXXXXXXXXXX"}
Link to this function location(location_id)

Takes a location id and returns a %Elixtagram.Model.Location

Example

iex(1)> Elixtagram.location(1)
%Elixtagram.Model.Location{id: "1", latitude: 37.782492553,
longitude: -122.387785235, name: "Dog Patch Labs"}
Link to this function location(location_id, token)

Takes a location id and an access token. Returns a %Elixtagram.Model.Location

Example

iex(1)> Elixtagram.location(1, token)
%Elixtagram.Model.Location{id: "1", latitude: 37.782492553,
longitude: -122.387785235, name: "Dog Patch Labs"}
Link to this function location_recent_media(location_id, params)

Takes a location id and a Map of params. Returns a List of recent media (as %Elixtagram.Model.Media)

Search params:

  • count
  • min_timestamp
  • max_timestamp
  • min_id
  • max_id

Example

iex(1)> Elixtagram.location_recent_media(1, %{count: 1})
[%Elixtagram.Model.Media{..}]
Link to this function location_recent_media(location_id, params, token)

Takes a location id a Map of params and an access token. Returns a List of recent media (as %Elixtagram.Model.Media)

Search params:

  • count
  • min_timestamp
  • max_timestamp
  • min_id
  • max_id

Example

iex(1)> Elixtagram.location_recent_media(1, %{count: 1})
[%Elixtagram.Model.Media{..}]
Link to this function location_search(params)

Takes a Map of search params. Returns a List of locations (as %Elixtagram.Model.Location)

Search params:

  • distance (in meters, defaults to 1000)
  • count
  • lat and lng (must be used together)
  • facebook_places_id
  • foursquare_v2_id
  • foursquare_id (For IDs from Foursquare’s (deprecated) v1 API)

Examples

iex(1)> Elixtagram.location_search(%{lat: "52.5167", lng: "13.3833", count: 3})
[%Elixtagram.Model.Location{id: "1014581914", latitude: 52.516667,
longitude: 13.383333, name: "Alemanha"},
%Elixtagram.Model.Location{id: "1003437077", latitude: 52.516667,
longitude: 13.383333, name: "Njemačka"},
%Elixtagram.Model.Location{id: "1014197989", latitude: 52.516667,
longitude: 13.383333, name: "Γερμανία"}]

iex(2)> Elixtagram.location_search(%{facebook_places_id: 1})
[%Elixtagram.Model.Location{id: "343525978", latitude: 57.9913,
longitude: 56.1355, name: "my home"}]

iex(3)> Elixtagram.location_search(%{foursquare_v2_id: "4c941c0f03413704fb386fef"})
[%Elixtagram.Model.Location{id: "14095316", latitude: 52.5110893,
longitude: 13.4413996, name: "lab.oratory"}]
Link to this function location_search(params, token)

Takes a Map of search params and an access token. Returns a List of locations (as %Elixtagram.Model.Location)

Search params:

  • distance (in meters, defaults to 1000)
  • count
  • lat and lng (must be used together)
  • facebook_places_id
  • foursquare_v2_id
  • foursquare_id (For IDs from Foursquare’s (deprecated) v1 API)

Examples

iex(1)> Elixtagram.location_search(%{lat: "52.5167", lng: "13.3833", count: 3}, token)
[%Elixtagram.Model.Location{id: "1014581914", latitude: 52.516667,
longitude: 13.383333, name: "Alemanha"},
%Elixtagram.Model.Location{id: "1003437077", latitude: 52.516667,
longitude: 13.383333, name: "Njemačka"},
%Elixtagram.Model.Location{id: "1014197989", latitude: 52.516667,
longitude: 13.383333, name: "Γερμανία"}]

iex(2)> Elixtagram.location_search(%{facebook_places_id: 1}, token)
[%Elixtagram.Model.Location{id: "343525978", latitude: 57.9913,
longitude: 56.1355, name: "my home"}]

iex(3)> Elixtagram.location_search(%{foursquare_v2_id: "4c941c0f03413704fb386fef"}, token)
[%Elixtagram.Model.Location{id: "14095316", latitude: 52.5110893,
longitude: 13.4413996, name: "lab.oratory"}]
Link to this function media(media_id)

Takes a media id and returns a %Elixtagram.Model.Media

Example

iex(1)> Elixtagram.media("XXXXXXXXXXXXXXXXXXXX")
%Elixtagram.Model.Media{...}
Link to this function media(media_id, token)

Takes a media id and an access token, returns a %Elixtagram.Model.Media

Example

iex(1)> Elixtagram.media("XXXXXXXXXXXXXXXXXXXX", token)
%Elixtagram.Model.Media{...}
Link to this function media_comment(media_id, comment_string, token)

Note: To use this you must have access to the comments scope, which is not by accessable without special permission (more info).

Takes a media id, a comment string and an access token (or :global, if configured). Returns :ok if everything went as expected, throws an error if you don’t have the right scope

Example

iex(1)> Elixtagram.media_comment("XXXXXXXX", "Nice pic m8", :global)
:ok

iex(1)> Elixtagram.media_comment("XXXXXXXX", "Nice pic m8", :global)
** (Elixtagram.Error) OAuthPermissionsException: This request requires scope=comments, but this access token is not authorized with this scope. The user must re-authorize your application with scope=comments to be granted write permissions.
Link to this function media_comment_delete(media_id, comment_id, token)

Note: To use this you must have access to the comments scope, which is not by accessable without special permission (more info).

Takes a media id, comment id and an access token (or :global, if configured). Returns :ok if everything went as expected, throws an error if you don’t have the right scope

Example

iex(1)> Elixtagram.media_comment_delete("XXXXXXXX", "XXXXXXXXXX", :global)
:ok

iex(1)> Elixtagram.media_comment_delete("XXXXXXXX", "XXXXXXXXXX", :global)
** (Elixtagram.Error) OAuthPermissionsException: This request requires scope=comments, but this access token is not authorized with this scope. The user must re-authorize your application with scope=comments to be granted write permissions.
Link to this function media_comments(media_id)

Takes a media id and returns a List of comments as %Elixtagram.Model.Comment

Example

iex(1)> Elixtagram.media_comments("XXXXXXXXXXXXXXXXX")
[%Elixtagram.Model.Comment{created_time: "1442120355",
from: %{full_name: "- D J  M Λ K K -", id: "904376079",
  profile_picture: "https://scontent.cdninstagram.com/hphotos-xpf1/t51.2885-19/s150x150/10549742_1640334582890085_1510069009_a.jpg",
  username: "anthonymarcarella"}, id: "1072905761030153596",
text: "Wow!  Like  your  image!"},

%Elixtagram.Model.Comment{created_time: “1442133337”,

from: %{full_name: "Richard Stow", id: "20859481",
  profile_picture: "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/11899636_1614219182185630_61225165_a.jpg",
  username: "richardstow"}, id: "1073014667609908273", text: "📷"},

%Elixtagram.Model.Comment{created_time: “1442164089”,

from: %{full_name: "", id: "2032306568",
  profile_picture: "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-19/s150x150/11356724_884715214954714_781335523_a.jpg",
  username: "chloeg_creation_de_gateau"}, id: "1073272627716170835",
text: "Follow me please ☺️"},

%Elixtagram.Model.Comment{created_time: “1442404459”,

from: %{full_name: "Carolyn", id: "230289717",
  profile_picture: "https://igcdn-photos-b-a.akamaihd.net/hphotos-ak-xpa1/t51.2885-19/10691678_628145513973889_94786555_a.jpg",
  username: "ilivegreen"}, id: "1075289004710831627",
text: "@stephanie_hair this reminded me of Forrest 😘"},

%Elixtagram.Model.Comment{created_time: “1442462968”,

from: %{full_name: "Rafael A. Nieves 🌉🌌", id: "479491821",
  profile_picture: "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/s150x150/11910388_129390307408288_53320144_a.jpg",
  username: "rafael_nieves"}, id: "1075779805656130920", text: "😆"}]
Link to this function media_comments(media_id, token)

Takes a media id and a token (or :global if it’s been configured). Returns a List of comments as %Elixtagram.Model.Comment

Example

iex(1)> Elixtagram.media_comments("XXXXXXXXXXXXXXXXX", :global)
[%Elixtagram.Model.Comment{created_time: "1442120355",
from: %{full_name: "- D J  M Λ K K -", id: "904376079",
  profile_picture: "https://scontent.cdninstagram.com/hphotos-xpf1/t51.2885-19/s150x150/10549742_1640334582890085_1510069009_a.jpg",
  username: "anthonymarcarella"}, id: "1072905761030153596",
text: "Wow!  Like  your  image!"},

%Elixtagram.Model.Comment{created_time: “1442133337”,

from: %{full_name: "Richard Stow", id: "20859481",
  profile_picture: "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/11899636_1614219182185630_61225165_a.jpg",
  username: "richardstow"}, id: "1073014667609908273", text: "📷"},

%Elixtagram.Model.Comment{created_time: “1442164089”,

from: %{full_name: "", id: "2032306568",
  profile_picture: "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-19/s150x150/11356724_884715214954714_781335523_a.jpg",
  username: "chloeg_creation_de_gateau"}, id: "1073272627716170835",
text: "Follow me please ☺️"},

%Elixtagram.Model.Comment{created_time: “1442404459”,

from: %{full_name: "Carolyn", id: "230289717",
  profile_picture: "https://igcdn-photos-b-a.akamaihd.net/hphotos-ak-xpa1/t51.2885-19/10691678_628145513973889_94786555_a.jpg",
  username: "ilivegreen"}, id: "1075289004710831627",
text: "@stephanie_hair this reminded me of Forrest 😘"},

%Elixtagram.Model.Comment{created_time: “1442462968”,

from: %{full_name: "Rafael A. Nieves 🌉🌌", id: "479491821",
  profile_picture: "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/s150x150/11910388_129390307408288_53320144_a.jpg",
  username: "rafael_nieves"}, id: "1075779805656130920", text: "😆"}]
Link to this function media_like(media_id, token)

Note: To use this you must have access to the likes scope, which is not by accessable without special permission (more info).

Takes a media id and an access token (or :global, if configured). Returns :ok if everything went as expected, throws an error if you don’t have the right scope

Example

iex(1)> Elixtagram.media_like("XXXXXXXX", :global)
:ok

iex(1)> Elixtagram.media_like("XXXXXXXX", :global)
** (Elixtagram.Error) OAuthPermissionsException: This request requires scope=likes, but this access token is not authorized with this scope. The user must re-authorize your application with scope=likes to be granted write permissions.
Link to this function media_likes(media_id)

Takes a media id and returns a List of users who liked the media as %Elixtagram.Model.UserSearchResult

Example

iex(1)> Elixtagram.media_likes("1075894327634310197_2183820012")
Link to this function media_likes(media_id, token)

Takes a media id and an access token (or :global, if configured). Returns a List of users who liked the media as %Elixtagram.Model.UserSearchResult

Example

iex(1)> Elixtagram.media_likes("1075894327634310197_2183820012", token)
Link to this function media_popular(count)

Takes a number of items to get, returns a List of n popular media items (as %Elixtagram.Model.Media).

Example

iex(1)> Elixtagram.media_popular(1)
[%Elixtagram.Model.Media{...}]
Link to this function media_popular(count, token)

Takes a number of items to get and an access token. Returns a List of n popular media items (as %Elixtagram.Model.Media).

Example

iex(1)> Elixtagram.media_popular(1, token)
[%Elixtagram.Model.Media{...}]
Link to this function media_search(params)

Searches for media based on the location params Map provided, returns a list of media (as %Elixtagram.Model.Media)

Search params:

  • count
  • lat and lng (must be supplied)
  • distance (in meters, defaults to 1000)
  • min_timestamp
  • max_timestamp

Examples

iex(1)> Elixtagram.media_search(%{lat: 1, lng: 2, count: 1})
[%Elixtagram.Model.Media{...}]
Link to this function media_search(params, token)

Searches for media based on the location params Map provided, returns a list of media (as %Elixtagram.Model.Media). Takes a Map of location params and an access token.

Search params:

  • count
  • lat and lng (must be supplied)
  • distance (in meters, defaults to 1000)
  • min_timestamp
  • max_timestamp

Examples

iex(1)> Elixtagram.media_search(%{lat: 1, lng: 2, count: 1}, token)
[%Elixtagram.Model.Media{...}]
Link to this function media_shortcode(shortcode)

Takes a media shortcode and returns a %Elixtagram.Model.Media

Example

iex(1)> Elixtagram.media("D")
%Elixtagram.Model.Media{...}
Link to this function media_shortcode(shortcode, token)

Takes a media shortcode and an access token, returns a %Elixtagram.Model.Media

Example

iex(1)> Elixtagram.media("D", token)
%Elixtagram.Model.Media{...}
Link to this function media_unlike(media_id, token)

Note: To use this you must have access to the likes scope, which is not by accessable without special permission (more info).

Takes a media id and an access token (or :global, if configured). Returns :ok if everything went as expected, throws an error if you don’t have the right scope

Example

iex(1)> Elixtagram.media_unlike("XXXXXXXX", :global)
:ok

iex(1)> Elixtagram.media_unlike("XXXXXXXX", :global)
** (Elixtagram.Error) OAuthPermissionsException: This request requires scope=likes, but this access token is not authorized with this scope. The user must re-authorize your application with scope=likes to be granted write permissions.

Takes a tag name and an optional access token, returns a %Elixtagram.Model.Tag.

If a global access token was set with Elixtagram.configure(:global, token), this will be defaulted to, otherwise the client ID is used.

Example

iex(1)> Elixtagram.tag("lifeisaboutdrugs")
%Elixtagram.Model.Tag{media_count: 27, name: "lifeisaboutdrugs"}
Link to this function tag(name, token)

Same as Elixtagram.tag/1, except takes an explicit access token.

The only real benefit to using an access token over a client id here is less rate limiting (in general and per token).

Example

iex(1)> Elixtagram.tag("lifeisaboutdrugs", "XXXXXXXXXXXXXXXXX")
%Elixtagram.Model.Tag{media_count: 27, name: "lifeisaboutdrugs"}
Link to this function tag_recent_media(tag_name, params)

Takes a tag name, and a Map of params Returns the n latest items in that tag

Search params:

  • count
  • min_tag_id
  • max_tag_id

If a global access token was set with Elixtagram.configure(:global, token), this will be defaulted to, otherwise the client ID is used.

Example

iex(1)> Elixtagram.tag_recent_media("ts", %{count: 1})
[%Elixtagram.Model.Media{...}]
Link to this function tag_recent_media(tag_name, params, token)

Takes a tag name, a Map of params and an access token Returns the n latest items in that tag

Search params:

  • count
  • min_tag_id
  • max_tag_id

If a global access token was set with Elixtagram.configure(:global, token), this will be defaulted to, otherwise the client ID is used.

Example

iex(1)> Elixtagram.tag_recent_media("ts", %{count: 1}, token)
[%Elixtagram.Model.Media{...}]
Link to this function tag_recent_media_with_pagination(tag_name, params)

Takes a tag name, a Map of params Returns the n latest items in that tag among with pagination data

Search params:

  • count
  • min_tag_id
  • max_tag_id

If a global access token was set with Elixtagram.configure(:global, token), this will be defaulted to, otherwise the client ID is used.

Example

iex(1)> Elixtagram.tag_recent_media_with_pagination("ts", %{count: 1})
%{data: [%Elixtagram.Model.Media{...}, %Elixtagram.Model.Media{...}], pagination: %{next_url: "https://api.instagram.com...", next_max_id: "1285565194378201229_1480448198"}}
Link to this function tag_recent_media_with_pagination(tag_name, params, token)

Takes a tag name, a Map of params and an access token Returns the n latest items in that tag among with pagination data

Search params:

  • count
  • min_tag_id
  • max_tag_id

If a global access token was set with Elixtagram.configure(:global, token), this will be defaulted to, otherwise the client ID is used.

Example

iex(1)> Elixtagram.tag_recent_media_with_pagination("ts", %{count: 1}, token)
%{data: [%Elixtagram.Model.Media{...}, %Elixtagram.Model.Media{...}], pagination: %{next_url: "https://api.instagram.com...", next_max_id: "1285565194378201229_1480448198"}}
Link to this function tag_search(query)

Takes a query string and returns a list of tags as %Elixtagram.Model.Tag.

If a global access token was set with Elixtagram.configure(:global, token), this will be defaulted to, otherwise the client ID is used.

Example

iex(1)> Elixtagram.tag_search("mdmazing")
[%Elixtagram.Model.Tag{media_count: 8826.0, name: "mdmazing"},
%Elixtagram.Model.Tag{media_count: 22.0, name: "mdmazingnight"},
%Elixtagram.Model.Tag{media_count: 4.0, name: "mdmazingtime"},
%Elixtagram.Model.Tag{media_count: 3.0, name: "mdmazingjourney"},
%Elixtagram.Model.Tag{media_count: 3.0, name: "mdmazingweekend"},
%Elixtagram.Model.Tag{media_count: 3.0, name: "mdmazinglife"},
%Elixtagram.Model.Tag{media_count: 3.0, name: "mdmazinggggg"},
%Elixtagram.Model.Tag{media_count: 1.0, name: "mdmazing💋💊🎉🍸"},
%Elixtagram.Model.Tag{media_count: 1.0, name: "mdmazinglights"},
%Elixtagram.Model.Tag{media_count: 1.0, name: "mdmazing😈👽👀"}]
Link to this function tag_search(query, token)

Takes a query string and an access token, returns a list of tags

The only real benefit to using an access token over a client id here is less rate limiting (in general and per token).

Example

iex(1)> Elixtagram.tag_search("munted", "XXXXXXXXXXXXXXXXX")
[%Elixtagram.Model.Tag{media_count: 20681.0, name: "munted"},
 %Elixtagram.Model.Tag{media_count: 267.0, name: "muntedasfuck"},
 %Elixtagram.Model.Tag{media_count: 267.0, name: "muntedheads"},
 %Elixtagram.Model.Tag{media_count: 202.0, name: "muntedas"},
 %Elixtagram.Model.Tag{media_count: 188.0, name: "muntedshakas"},
 %Elixtagram.Model.Tag{media_count: 161.0, name: "muntedmondays"},
 %Elixtagram.Model.Tag{media_count: 109.0, name: "muntedselfie"},
 %Elixtagram.Model.Tag{media_count: 94.0, name: "muntedeye"},
 %Elixtagram.Model.Tag{media_count: 93.0, name: "muntedcunts"},
 %Elixtagram.Model.Tag{media_count: 63.0, name: "muntedsmile"},
 %Elixtagram.Model.Tag{media_count: 58.0, name: "muntedaf"},
 %Elixtagram.Model.Tag{media_count: 57.0, name: "munteddd"}]

Takes a user id and returns a %Elixtagram.Model.User.

Examples

iex(1)> Elixtagram.user(35822824)
%Elixtagram.Model.User{bio: "🌷 Whole Food Plant Based Nutrition

🏂 Powerful Functional Strength & Fitness 🌏 Digital Nomad 🐈 Animal Lover 😸Berlin♨️Chiang Mai🇦🇺Brisbane”,

counts: %{followed_by: 3966, follows: 4915, media: 613}, full_name: "Zen Savona", id: "35822824", profile_picture: "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/s150x150/11856601_1483869585265582_942748740_a.jpg", username: "zenm8", website: "http://zen.id.au"}
Link to this function user(id, token)

Takes a user id or :self and an access token (or :global, if a global access token has been set with Elixtagram.configure(:global, token)) and returns a %Elixtagram.Model.User.

Examples

iex(1)> Elixtagram.user(35822824, token)
%Elixtagram.Model.User{bio: "🌷 Whole Food Plant Based Nutrition

🏂 Powerful Functional Strength & Fitness 🌏 Digital Nomad 🐈 Animal Lover 😸Berlin♨️Chiang Mai🇦🇺Brisbane”,

counts: %{followed_by: 3966, follows: 4915, media: 613}, full_name: "Zen Savona", id: "35822824", profile_picture: "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/s150x150/11856601_1483869585265582_942748740_a.jpg", username: "zenm8", website: "http://zen.id.au"}

iex(2)> Elixtagram.user(:self, token)
%Elixtagram.Model.User{...}

iex(3)> Elixtagram.user(:self, :global)
%Elixtagram.Model.User{...}
Link to this function user_feed(params, token)

Takes a Map of params and a token (or :global if a global token has been configured). Returns a List of media as %Elixtagram.Model.Media

Search params:

  • count
  • min_id
  • max_id

Examples

iex(1)> Elixtagram.user_feed(%{count: 2}, :global)
[%Elixtagram.Model.Media{...}, %Elixtagram.Model.Media{...}]

iex(2)> Elixtagram.user_feed(%{count: 2}, "XXXXXXXXXXXXXXXXX")
[%Elixtagram.Model.Media{...}, %Elixtagram.Model.Media{...}]
Link to this function user_followed_by(user_id)

Takes a user id, returns a List of the user’s followers as %Elixtagram.Model.UserSearchResult

Example

iex(1)> Elixtagram.user_followed_by("XXXXXXXXXX")
[%Elixtagram.Model.UserSearchResult{full_name: "Dariel 🙈", id: "1782884605",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-19/s150x150/11296793_1507078476281099_1357579188_a.jpg", username: "dari600"},
%Elixtagram.Model.UserSearchResult{full_name: "Sal / Peri", id: "284767950",
profile_picture: "https://igcdn-photos-d-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/s150x150/11349346_422441984620139_1778366224_a.jpg",
username: "peri.fu"}, ...]
Link to this function user_followed_by(user_id, token)

Takes a user id and an access token (or :global, if configured). Returns a List of the user’s followers as %Elixtagram.Model.UserSearchResult

Example

iex(1)> Elixtagram.user_followed_by("XXXXXXXXXX", token)
[%Elixtagram.Model.UserSearchResult{full_name: "Dariel 🙈", id: "1782884605",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-19/s150x150/11296793_1507078476281099_1357579188_a.jpg", username: "dari600"},
%Elixtagram.Model.UserSearchResult{full_name: "Sal / Peri", id: "284767950",
profile_picture: "https://igcdn-photos-d-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/s150x150/11349346_422441984620139_1778366224_a.jpg",
username: "peri.fu"}, ...]
Link to this function user_follows(user_id, count)

Takes a user id, count and returns a List of users they follow as %Elixtagram.Model.UserSearchResult

Example

iex(1)> Elixtagram.user_follows("XXXXXXXXXX", 10)
[%Elixtagram.Model.UserSearchResult{full_name: "Dariel 🙈", id: "1782884605",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-19/s150x150/11296793_1507078476281099_1357579188_a.jpg", username: "dari600"},
%Elixtagram.Model.UserSearchResult{full_name: "Sal / Peri", id: "284767950",
profile_picture: "https://igcdn-photos-d-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/s150x150/11349346_422441984620139_1778366224_a.jpg",
username: "peri.fu"}, ...]

For paginated results, pass a map with a count and optional cursor. This will return a map containing results and next_cursor.

Example

iex(1)> Elixtagram.user_follows("XXXXXXXXXX", %{count: 3})
%{next_cursor: "XXXXXXXXXX",
results: [%Elixtagram.Model.UserSearchResult{full_name: "meganmayble",
id: "176431650",
profile_picture: "https://igcdn-photos-e-a.akamaihd.net/hphotos-ak-xpa1/t51.2885-19/10522189_1425538584361516_1313020536_a.jpg",
username: "meganmayble"},

%Elixtagram.Model.UserSearchResult{full_name: “Dallas J Stone”,

id: "14325567",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/s150x150/12141839_453007948221534_1037878214_a.jpg",
username: "dallasjstone"},

%Elixtagram.Model.UserSearchResult{full_name: “Emma Ferguson”,

id: "299647278",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-19/11324948_826531150776394_932627239_a.jpg",
username: "emferge"}]}

iex(2)> Elixtagram.user_follows("XXXXXXXXXX", %{count: 3, cursor: "XXXXXXXXXX"})
%{next_cursor: "XXXXXXXXXX",
  results: [%Elixtagram.Model.UserSearchResult{full_name: "violet arthi",
id: "1154780751",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/s150x150/11849016_1481802675477332_336263373_a.jpg",
username: "prettyinpoc"},

%Elixtagram.Model.UserSearchResult{full_name: “gogogo”, id: “1598470944”,

profile_picture: "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-19/10785126_1005518456130807_438807926_a.jpg",
username: "ugo.karle"},

%Elixtagram.Model.UserSearchResult{full_name: “Talia Smith”,

id: "1362121463",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xpa1/t51.2885-19/10948784_579906995477967_761832201_a.jpg",
username: "_teabird_"}]}
Link to this function user_follows(user_id, count, token)

Takes a user id, count and an access token (or :global, if configured). Returns a List of users they follow as %Elixtagram.Model.UserSearchResult

Example

iex(1)> Elixtagram.user_follows("XXXXXXXXXX", 10, :global)
[%Elixtagram.Model.UserSearchResult{full_name: "Dariel 🙈", id: "1782884605",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-19/s150x150/11296793_1507078476281099_1357579188_a.jpg", username: "dari600"},
%Elixtagram.Model.UserSearchResult{full_name: "Sal / Peri", id: "284767950",
profile_picture: "https://igcdn-photos-d-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/s150x150/11349346_422441984620139_1778366224_a.jpg",
username: "peri.fu"}, ...]
Link to this function user_media_liked(params, token)

Takes a Map of params and a token (or ‘:global’ if a global token has been configured). Returns a List of media as %Elixtagram.Model.Media

Search params:

  • count
  • max_like_id

Examples

iex(1)> Elixtagram.user_media_liked(%{count: 2}, :global)
[%Elixtagram.Model.Media{...}, %Elixtagram.Model.Media{...}]

iex(2)> Elixtagram.user_media_liked(%{count: 2}, "XXXXXXXXXXXXXXXXX")
[%Elixtagram.Model.Media{...}, %Elixtagram.Model.Media{...}]
Link to this function user_recent_media(user_id, params)

Takes a user id and a params Map, returns a List of media as %Elixtagram.Model.Media

Search params:

  • count
  • min_id
  • max_id
  • min_timestamp
  • max_timestamp

Example

iex(1)> Elixtagram.user_recent_media(35822824, %{count: 2})
[%Elixtagram.Model.Media{...}, %Elixtagram.Model.Media{...}]
Link to this function user_recent_media(user_id, params, token)

Takes a user id (or :self, to get media for the user associated with the token) a params Map and access token (or :global if a global token has been configured). Returns a List of media as %Elixtagram.Model.Media.

Search params:

  • count
  • min_id
  • max_id
  • min_timestamp
  • max_timestamp

Example

iex(1)> Elixtagram.user_recent_media(35822824, %{count: 2}, :global)
[%Elixtagram.Model.Media{...}, %Elixtagram.Model.Media{...}]
Link to this function user_recent_media_with_pagination(user_id, params)

Takes a user id ( or :self, to get media for the user associated with the token) a params Map Returns a Map with :data that contains a List of %Elixtagram.Model.Media and :pagination' Map with the following keys::next_url- A url to retrieve the next page of results:nex_max_id- the:max_id` to be used to retrieve the next page of results # Optional params: count min_id max_id min_timestamp * max_timestamp ## Example iex(1)> Elixtagram.user_recent_media_with_pagination(35822824, %{count: 128}) %{data: [%Elixtagram.Model.Media{…}, %Elixtagram.Model.Media{…}], pagination: %{next_url: “https://api.instagram.com…”, next_max_id: “1285565194378201229_1480448198”}}

Link to this function user_recent_media_with_pagination(user_id, params, token)

Takes a user id ( or :self, to get media for the user associated with the token) a params Map and access token ( or :global if a global token has been configured). Returns a Map with :data that contains a List of %Elixtagram.Model.Media and :pagination' Map with the following keys::next_url- A url to retrieve the next page of results:next_max_id- the:max_id` to be used to retrieve the next page of results # Optional params: count min_id max_id min_timestamp * max_timestamp ## Example iex(1)> Elixtagram.user_recent_media_with_pagination(35822824, %{count: 128}, :global) %{data: [%Elixtagram.Model.Media{…}, %Elixtagram.Model.Media{…}], pagination: %{next_url: “https://api.instagram.com…”, next_max_id: “1285565194378201229_1480448198”}}

Link to this function user_relationship(user_id, token)

Takes a user id and an access token, returns the relationship of that user in relation to the current user as a %Elixtagram.Model.Relationship.

Example

iex(1)> Elixtagram.user_relationship("XXXXXXXX", token)
%Elixtagram.Model.Relationship{incoming_status: "followed_by",
outgoing_status: "follows", target_user_is_private: false}
Link to this function user_relationship(user_id, action, token)

Note: To use this you must have access to the relationships scope, which is not by accessable without special permission (more info).

Takes a user id, a valid action Atom and an access token, returns the updated status.

Valid actions:

  • :follow
  • :unfollow
  • :block
  • :unblock
  • :approve
  • :ignore

Examples

iex(1)> Elixtagram.user_relationship(user_id, :follow, token)
:requested
iex()> Elixtagram.user_relationship(user_id, :unfollow, token)
:ok
iex()> Elixtagram.user_relationship(user_id, :block, token)
:ok
iex()> Elixtagram.user_relationship(user_id, :unblock, token)
:ok
iex()> Elixtagram.user_relationship(user_id, :approve, token)
:follows
iex()> Elixtagram.user_relationship(user_id, :ignore, token)
:ok
Link to this function user_requested_by(token)

Takes an access token and returns a List of users who have requested to follow the user (but haven’t yet been accepted) as %Elixtagram.Model.UserSearchResult

Example

iex(1)> Elixtagram.user_requested_by(token)
[%Elixtagram.Model.UserSearchResult{full_name: "Dariel 🙈", id: "1782884605",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-19/s150x150/11296793_1507078476281099_1357579188_a.jpg", username: "dari600"},
%Elixtagram.Model.UserSearchResult{full_name: "Sal / Peri", id: "284767950",
profile_picture: "https://igcdn-photos-d-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/s150x150/11349346_422441984620139_1778366224_a.jpg",
username: "peri.fu"}, ...]
Link to this function user_search(params)

Search for users by username. Takes a Map of search params: q (query) and optionally, count. Returns a List of users as %Elixtagram.Model.UserSearchResult.

Example

iex(1)> Elixtagram.user_search(%{q: "zen", count: 3})
[%Elixtagram.Model.UserSearchResult{full_name: "ZEN", id: "2075537710",
profile_picture:"https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/s150x150/11356890_150363411965324_1581305443_a.jpg", username: "zen_pk_official"},
%Elixtagram.Model.UserSearchResult{full_name: "ZEN", id: "1444000827",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xap1/t51.2885-19/10732008_1658199007759427_555706599_a.jpg", username: "zen____zen"},
%Elixtagram.Model.UserSearchResult{full_name: "Zendaya", id: "215465313",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/11356006_931176226929024_399091265_a.jpg", username: "zendaayamareexox"}]
Link to this function user_search(params, token)

Search for users by username. Takes a Map of search params (q (query) and optionally, count) and an access token (or :global if set).

Returns a List of users as %Elixtagram.Model.UserSearchResult.

Example

iex(1)> Elixtagram.user_search(%{q: "zen", count: 3})
[%Elixtagram.Model.UserSearchResult{full_name: "ZEN", id: "2075537710",
profile_picture:"https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/s150x150/11356890_150363411965324_1581305443_a.jpg", username: "zen_pk_official"},
%Elixtagram.Model.UserSearchResult{full_name: "ZEN", id: "1444000827",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xap1/t51.2885-19/10732008_1658199007759427_555706599_a.jpg", username: "zen____zen"},
%Elixtagram.Model.UserSearchResult{full_name: "Zendaya", id: "215465313",
profile_picture: "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-19/11356006_931176226929024_399091265_a.jpg", username: "zendaayamareexox"}]