Unofficial C# wrapper around Unsplash API targeting .NET Standard 1.4.
This lib is compatible with .NET Core, .NET Framework 4.6.1, Xamarin (iOS, Android), Universal Windows Platform.
Currently incomplete π§
- Missing user's authentication actions
NuGet: Install-Package unsplasharp.api
using Unsplasharp;
var client = new UnsplasharpClient("YOUR_APPLICATION_ID");
var photosFound = await client.SearchPhoto("mountains");
It's necessary to instanciate a new client with at least an application ID to start making requests.
var client = new Client("YOUR_APPLICATION_ID");
Unsplash has API requests rates limits.
An Unsplashsharp client has two properties to help you monitor API calls:
Max API calls allowed per hour
MaxRateLimit
API calls remaining for the current hour
RateLimitRemaining
if (client.RateLimitRemaining == 0) {
// Warning the user that he's to wait some time
// before using the app again.
}
if (client.MaxRateLimit == 50) {
// Application is in dev mode.
} else if (client.MaxRateLimit == 5000) {
// Application is in prod mode.
} else { /* Unknown mode */ }
var photo = await client.GetPhoto("TPv9dh822VA");
// get a photo in the specified width and height in pixels
var photoWidthHeight = await client.GetPhoto(id: "TPv9dh822VA", width: 500, height: 500);
var randomPhoto = await client.GetRandomPhoto();
// using collections' IDs
var randomPhotoFromCollections = await client.GetRandomPhoto(new string[] { "499830", "194162" });
// from a specific user
var randomPhotoFromUser = await client.GetRandomPhoto(count: 1, username: "matthewkane");
var randomPhotosFromQuery = await client.GetRandomPhoto(count: 3, query:"woman");
var listPhotos = await client.ListPhotos();
var listPhotosPaged = await client.ListPhotos(page:2, perPage:15, orderBy: OrderBy.Popular);
var listCuratedPhotos = await client.ListCuratedPhotos();
var collection = await client.GetCollection("771520");
var listCollection = await client.ListCollections();
var listFeaturedCollection = await client.ListFeaturedCollections();
var listCuratedCollection = await client.ListCuratedCollections();
var listPhotos = await client.GetCollectionPhotos("771520");
var collectionsRelated = await client.ListRelatedCollections("771520");
var user = await client.GetUser("unsplash");
var userCustomProfileImage = client.GetUser("seteales", width: 100, height: 100);
var userCollections = await client.ListUserCollections("unsplash");
var userPhotos = await client.ListUserPhotos("seteales");
var userPhotosCustomParam = await client.ListUserPhotos("seteales", page: 2, perPage: 2, stats: true);
var userLikedPhotos = await client.ListUserLikedPhotos("seteales");
var userStats = await client.GetUserStats("seteales");
var photosFound = await client.SearchPhoto("mountains");
var collectionsFound = await client.SearchCollections("mountains");
var usersFound = await client.SearchUsers("seteales");
Get Unsplash total stats
var totalStats = await client.GetTotalStats();
Get Unsplash monthly stats
var monthlyStats = await client.GetMonthlyStats();
In adition to the previous API methods, you can build and use custom URL's to fetch photos, photos' lists, and collections' lists.
There're also methods to search for collections, photos and users using a custom URL.
var photo = await client.FetchPhoto("you_custom_url");
var photos = await client.FetchPhotosList("you_custom_url");
var collections = await client.FetchCollectionsList("you_custom_url");
var photosFound = await client.FetchSearchPhotosList("your_custom_url");
var collectionsFound = await client.FetchSearcCollectionsList("your_custom_url");
var usersFound = await client.FetchSearcUsersList("your_custom_url");
Tests are under UnsplashsharpTests project.
They check the Unsplash API status and that every methods in the lib works properly.
In this project, a dev API key is used which is limited to 50 requests per hour. So ensure you're not off limit.
If you want to get your personal API key from Unsplash:
- Go to Unsplash
- Log in or create a new account
- In the top bar, click on 'API/Developers'
- Go to 'Your applications'
- Click on 'New Application' to create a new one and get an API key (and a Secret).