Install
openclaw skills install unsplashSearch, browse, and download high-quality free photos from Unsplash with filtering, random selection, and detailed photo metadata access.
openclaw skills install unsplashSearch, browse, and download high-quality free photos from Unsplash's library of millions of images.
mkdir -p ~/.config/unsplash
echo "YOUR_ACCESS_KEY" > ~/.config/unsplash/access_key
chmod 600 ~/.config/unsplash/access_key
Or set environment variable:
export UNSPLASH_ACCESS_KEY="your_access_key_here"
/v1/messages endpoints count; image URLs (images.unsplash.com) don'tcurl "https://api.unsplash.com/search/photos?query=nature&per_page=10" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
Parameters:
query: Search terms (required)page: Page number (default: 1)per_page: Results per page (default: 10, max: 30)order_by: relevant (default) or latestcolor: Filter by color (black_and_white, black, white, yellow, orange, red, purple, magenta, green, teal, blue)orientation: landscape, portrait, or squarishcurl "https://api.unsplash.com/photos/random?query=coffee&count=1" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
Parameters:
query: Limit to search term (optional)count: Number of photos (1-30, default: 1)orientation: Filter by orientationcollections: Filter by collection IDs (comma-separated)curl "https://api.unsplash.com/photos/PHOTO_ID" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
Returns full photo metadata including EXIF, location, user info, and all image URLs.
Important: You MUST trigger this endpoint when downloading a photo to comply with API guidelines.
curl "https://api.unsplash.com/photos/PHOTO_ID/download" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
This increments the download counter. Response includes the download URL.
curl "https://api.unsplash.com/photos?per_page=10" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
# List all collections
curl "https://api.unsplash.com/collections?per_page=10" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
# Get collection photos
curl "https://api.unsplash.com/collections/COLLECTION_ID/photos" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
curl "https://api.unsplash.com/users/USERNAME/photos?per_page=10" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
Every photo response includes these URLs:
{
"urls": {
"raw": "https://images.unsplash.com/photo-xxx?ixid=xxx",
"full": "...?ixid=xxx&q=80&fm=jpg",
"regular": "...?ixid=xxx&w=1080&fit=max",
"small": "...?w=400&fit=max",
"thumb": "...?w=200&fit=max"
}
}
Add parameters to any image URL (keep the ixid parameter!):
w=1500: Set widthh=800: Set heightdpr=2: Device pixel ratioq=75: Quality (1-100)fm=jpg: Format (jpg, png, webp, avif)fit=crop: Fit mode (crop, max, clip)crop=entropy: Crop modeExample:
https://images.unsplash.com/photo-xxx?ixid=xxx&w=1500&h=1000&fit=crop&q=85
Each photo includes a blur_hash field - a compact string representation for showing blurred placeholders while images load.
{
"blur_hash": "LoC%a7IoIVxZ_NM|M{s:%hRjWAo0"
}
{
"id": "LBI7cgq3pbM",
"created_at": "2016-05-03T11:00:28-04:00",
"width": 5245,
"height": 3497,
"color": "#60544D",
"blur_hash": "LoC%a7IoIVxZ_NM|M{s:%hRjWAo0",
"description": "A man drinking coffee",
"urls": { "raw": "...", "full": "...", "regular": "..." },
"links": {
"download": "...",
"download_location": "https://api.unsplash.com/photos/xxx/download"
},
"user": {
"username": "johndoe",
"name": "John Doe",
"profile_image": { "small": "...", "medium": "...", "large": "..." }
}
}
{
"total": 133,
"total_pages": 7,
"results": [ /* array of photo objects */ ]
}
Always attribute photos to their creators:
Photo by [Name] on Unsplash
Link to photographer's Unsplash profile when possible.
/photos/:id/download before allowing users to downloadimages.unsplash.comixid parameter in URLs# Store key
export UNSPLASH_ACCESS_KEY="your_key"
# Search
curl "https://api.unsplash.com/search/photos?query=ocean&per_page=5" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
# Random photo
curl "https://api.unsplash.com/photos/random?query=mountains" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
# Get photo
curl "https://api.unsplash.com/photos/PHOTO_ID" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
# Track download (required when downloading!)
curl "https://api.unsplash.com/photos/PHOTO_ID/download" \
-H "Authorization: Client-ID ${UNSPLASH_ACCESS_KEY}"
https://api.unsplash.compage and per_page parametersimages.unsplash.com don't count against rate limitsixid parameter when using/manipulating image URLsblack_and_white, black, white, yellow, orange, red, purple, magenta, green, teal, blue
landscape, portrait, squarish
latest, oldest, popularrelevant, latest401 Unauthorized: Invalid or missing access key403 Forbidden: Rate limit exceeded or forbidden action404 Not Found: Photo/user/collection doesn't existCheck X-Ratelimit-Remaining header to monitor your rate limit status.