An unofficial, platform independent, client for the Unsplash API. Unsplash provides royalty-free images.

The client is platform independent, since it uses http to make requests.


  1. You need to register as a developer and create an unsplash app to access the API.

  2. Obtain the credentials for your app from the developer portal and create an UnsplashClient:

final client = UnsplashClient(
  settings: ClientSettings(credentials: AppCredentials(
    accessKey: '...',
    secretKey: '...',

:warning: When you are done using a client instance, make sure to call it's close method.


Get a random photo

// Make the request.
final response = await client.photos.random(count: 1).go();

// Check that the request was successful.
if (!response.isOk) {
  throw 'Something is wrong: $response';

// The api returns a `Photo` which contains metadata about the photo and urls to download it.
final photo = response.data.first;

Photo variants

A Photo comes with a set of urls for variants of the photo of different sizes, such as regular and thumb:

final thumb = photo.urls.thumb;

If the provided variants are not a good fit for your use, you can generate urls where you specify size, quality, fit and other parameters.

Call the extension method Uri.resizePhoto on photo.urls.raw to generate an Uri for a custom variant:

final custom = photo.urls.raw.resizePhoto(width: 400, height: 400);


See examples tab for a runnable example.


  • Get the user’s profile
  • Update the current user’s profile
  • Update a photo
  • Like a photo
  • Unlike a photo
  • Create a new collection
  • Update an existing collection
  • Delete a collection
  • Add a photo to a collection
  • Remove a photo from a collection