ImgLink API Documentation
ImgLink API Documentation
Integrate ImgLink into your apps, bots, scripts, and tools. Upload images, manage albums, customize embeds, and more - all through a simple REST API.
Quick Start
1. Create an ImgLink account
2. Go to your Dashboard → API Keys section
3. Click Generate New Key and give it a name
4. Use the key in the X-API-Key header for authenticated requests
Base URL: https://imglink.cc
Authentication
ImgLink supports two authentication methods:
API Key (Recommended for Integrations)
Send your API key in the X-API-Key header:
curl -H "X-API-Key: YOUR_API_KEY" https://imglink.cc/api/v1/upload -F "[email protected]"
API keys are created in your Dashboard. Each key is tied to your account and has the same upload limits as your user.
JWT Bearer Token (For Web Apps)
Obtain a token by logging in, then include it in the Authorization header:
Authorization: Bearer YOUR_JWT_TOKEN
Tokens expire after 7 days.
Upload
POST /api/v1/upload
Upload one or more images. This is the primary endpoint for ShareX, scripts, and bots.
Authentication: API Key required (X-API-Key header)
Content-Type: multipart/form-data
Form Fields:
fileLimits:
Supported Formats: JPG, PNG, GIF, WebP, SVG, BMP, ICO, TIFF, AVIF
Example - cURL:
curl -X POST https://imglink.cc/api/v1/upload \
-H "X-API-Key: YOUR_API_KEY" \
-F "[email protected]"
Example - Python:
import requestsresponse = requests.post(
"https://imglink.cc/api/v1/upload",
headers={"X-API-Key": "YOUR_API_KEY"},
files={"file": open("screenshot.png", "rb")}
)
data = response.json()
print(data["url"]) # Direct image link
print(data["viewer"]) # Viewer page link
Example - JavaScript (Node.js):
const form = new FormData();
form.append("file", fs.createReadStream("screenshot.png"));const res = await fetch("https://imglink.cc/api/v1/upload", {
method: "POST",
headers: { "X-API-Key": "YOUR_API_KEY" },
body: form,
});
const data = await res.json();
console.log(data.url); // Direct image link
console.log(data.viewer); // Viewer page link
Response (Single File):
{
"success": true,
"id": "aBcDeFgHiJ",
"url": "https://imglink.cc/cdn/aBcDeFgHiJ.png",
"thumbnail": "https://imglink.cc/cdn/medium/aBcDeFgHiJ.webp",
"viewer": "https://imglink.cc/i/aBcDeFgHiJ",
"delete": "https://imglink.cc/api/v1/image/aBcDeFgHiJ",
"width": 1920,
"height": 1080,
"size": 524288,
"mime": "image/png"
}
Response (Multiple Files):
{
"success": true,
"images": [
{
"id": "aBcDeFgHiJ",
"url": "https://imglink.cc/cdn/aBcDeFgHiJ.png",
"thumbnail": "https://imglink.cc/cdn/medium/aBcDeFgHiJ.webp",
"viewer": "https://imglink.cc/i/aBcDeFgHiJ",
"delete": "https://imglink.cc/api/v1/image/aBcDeFgHiJ",
"width": 1920,
"height": 1080,
"size": 524288,
"mime": "image/png"
}
]
}
Error Responses:
Get Image
GET /api/v1/image/:id
Get metadata for a specific image. No authentication required.
Example:
curl https://imglink.cc/api/v1/image/aBcDeFgHiJ
Response:
{
"success": true,
"data": {
"id": "aBcDeFgHiJ",
"url": "https://imglink.cc/cdn/aBcDeFgHiJ.png",
"thumbnail": "https://imglink.cc/cdn/medium/aBcDeFgHiJ.webp",
"viewer": "https://imglink.cc/i/aBcDeFgHiJ",
"width": 1920,
"height": 1080,
"size": 524288,
"mime": "image/png",
"views": 42,
"uploadedAt": "2026-01-15T12:00:00Z"
}
}
Delete Image
DELETE /api/v1/image/:id
Delete one of your own images. Requires API key.
Authentication: API Key required
Example:
curl -X DELETE https://imglink.cc/api/v1/image/aBcDeFgHiJ \
-H "X-API-Key: YOUR_API_KEY"
Response:
{
"success": true
}
Errors:
Web Upload (Anonymous)
POST /api/upload
Upload without an account. More restrictive limits.
Authentication: None (optional JWT for higher limits)
Limits (Anonymous):
- Max 5 files per upload
- Max 25 MB per file
- 1 upload per 30 minutes
Limits (Logged In):
- Max 15 files per upload
- Max 50 MB per file
- 100 uploads per hour
Form Fields:
filevisibility"public" (default) or "private"nsfw"true" or "false"Gallery
GET /api/gallery
Browse the public image gallery.
Query Parameters:
pagelimitResponse:
{
"images": [...],
"page": 1,
"totalPages": 50,
"total": 1000
}
Albums
All album endpoints require JWT authentication.
GET /api/albums
List your albums.
POST /api/albums
Create a new album.
Body:
{
"title": "My Screenshots",
"description": "Game screenshots",
"isPublic": true
}
GET /api/albums/:id
View album with images. Public albums are accessible to everyone.
PUT /api/albums/:id
Update album title, description, visibility, or password.
DELETE /api/albums/:id
Delete an album (soft delete).
POST /api/albums/:id/images
Add an image to an album. Body:
{ "imageId": "shortId" }DELETE /api/albums/:albumId/images/:imageId
Remove an image from an album.
Custom Embed Profiles
Customize how your images appear on Discord and social media. See the Custom Discord Embeds guide.
GET /api/embeds
List your embed profiles. Requires JWT.
POST /api/embeds
Create a new embed profile (max 25 per user). Requires JWT.
Body:
{
"name": "My Brand",
"title": "Check this out",
"description": "Shared via MyBrand",
"color": "#ff5733",
"author_name": "Username",
"author_url": "https://example.com",
"site_name": "MyBrand"
}
PUT /api/embeds/:id
Update an embed profile. Requires JWT.
DELETE /api/embeds/:id
Delete an embed profile. Images revert to defaults. Requires JWT.
PATCH /api/images/:id/embed
Assign an embed profile to an image. Body:
{ "embed_profile_id": 5 } (or null to remove). Requires JWT.PATCH /api/images/bulk-embed
Assign an embed profile to up to 100 images at once. Requires JWT.
Body:
{
"image_ids": ["id1", "id2", "id3"],
"embed_profile_id": 5
}
ShareX Integration
ImgLink works perfectly with ShareX. Download our pre-configured uploader:
Or set it up manually:
1. Go to Destinations → Custom Uploader Settings
2. Set the URL to https://imglink.cc/api/v1/upload
3. Set method to POST
4. Add header: X-API-Key: YOUR_KEY
5. Set file form name to file
6. Set URL field to {json:viewer} (or {json:url} for direct link)
See our full ShareX setup guide for more details.
Rate Limits
| Context | Limit |
| Global API | 500 requests/min per IP |
| Anonymous upload | 1 per 30 minutes |
| Authenticated upload | 100 per hour |
Rate-limited responses return 429 Too Many Requests.
Error Format
All errors return a JSON object:
{
"error": "Human-readable error message"
}
Common HTTP status codes:
Need Help?
- Join our Discord server for support
- Visit the Wiki for guides and tutorials
- Use the Contact page to reach us directly
Start hosting images for free
Free account, 10 seconds, no credit card. Unlimited uploads, albums, API access.
Related Articles
User Profiles
Your ImgLink profile is a public portfolio for your uploaded images. Customize it with a profile picture, cover image, bio, and featured images.
3 minImgLink Discord Bot - Upload, Resize, Compress & More
Add the ImgLink bot to your Discord server. Upload up to 10 images, resize, compress, convert formats, and search 41K+ emojis with simple slash commands.
8 minForum Plugins: Supported Platforms, Setup, and Reliability
A practical support matrix for forum software, plus a reliability-first rollout strategy for admins.
5 minCustom Discord Embeds - Customize How Your Links Look
Customize how your ImgLink images appear when shared on Discord and social media. Set custom titles, descriptions, accent colors, author names, and more.
5 minFeatured Images
Feature up to 3 of your best images on your ImgLink profile. Featured images appear at the top with a special amber badge, making a great first impression.
3 min