Export from Lightroom, upload pre-optimized images. We handle storage, EXIF extraction, and a fast API — you keep full control over every pixel.
{
"original": {
"photo_id": "IMG_8113",
"filename": "IMG_8113__original.jpg",
"width": 6000, "height": 4000,
"exif": {
"camera_model": "Canon EOS R5",
"iso": 400, "aperture": 2.8
},
...
},
"variants": [
{ "filename": "...__large.jpg", "width": 2400, ... },
{ "filename": "...__thumb.jpg", "width": 400, ... }
]
}
Built for photographers who care about image quality and developers who need a reliable API.
Upload multiple sizes of the same photo. Our filename pattern groups original, large, and thumbnail variants together automatically.
Camera, lens, ISO, aperture, shutter speed — automatically extracted using just 64KB per photo. Fully searchable via the API.
Upload via presigned URLs straight to S3. No server bottleneck, no re-encoding. Your files arrive exactly as exported.
Organize photos into albums and tag them with custom taxonomies. Filter and query your library with flexible API endpoints.
Pre-built Vue 3 components and composables for photos, albums, and taxonomies. Install photo-service-vue via npm — includes Nuxt module with SSR support.
Invite team members, manage roles, and keep each studio's data fully isolated. Bring your own S3 bucket or use ours.
From Lightroom to your website in four steps.
Export from Lightroom at whatever sizes and quality you want. Name files with our simple pattern.
Drag and drop into our uploader. Files go straight to S3 — no server-side bottleneck.
We extract EXIF metadata, group variants, and index everything. Real-time progress via WebSocket.
Use our Vue.js library or REST API to display photos on your website with responsive variant selection.
RESTful endpoints for photos, albums, taxonomies, and more. Token-based auth via Laravel Sanctum.
$ curl "https://api.photoservice.com/api/tenants/1/\
photos/IMG_8113"
{
"original": {
"photo_id": "IMG_8113",
"filename": "IMG_8113__original.jpg",
"url": "https://s3.../original.jpg",
"width": 6000, "height": 4000,
"file_size": 5242880,
"mime_type": "image/jpeg",
"exif": {
"camera_make": "Canon",
"camera_model": "Canon EOS R5",
"lens": "RF 24-70mm f/2.8",
"iso": 400, "aperture": 2.8,
"shutter_speed": "1/250",
"focal_length": "50mm"
},
"created_at": "2026-01-15T14:30:00+00:00",
...
},
"variants": [
{ "filename": "...__large.jpg", "width": 2400, "height": 1600, ... },
{ "filename": "...__thumb.jpg", "width": 400, "height": 267, ... }
]
}
Install our Vue 3 library and start displaying photos, albums, and taxonomies with minimal setup.
$ npm install photo-service-vue
// main.js
import { PhotoServicePlugin } from 'photo-service-vue'
import 'photo-service-vue/dist/style.css'
app.use(PhotoServicePlugin, {
baseUrl: 'https://photoservice.ibexel.com',
tenantId: 1,
})
Start with a 30-day free trial. No credit card required.
30-day free trial
30-day free trial
Free 30-day trial on Starter and Professional plans. No credit card required.