View — Référence de l’API
What is on screen: view mode, zoom, overlays and the exposure aid, panels, windows and workspaces, compare and survey, the slideshow, video and audio playback.
La référence de l’API est en anglais : elle est générée à partir du document OpenAPI de l’application.
What is on screen: view mode, zoom, overlays and the exposure aid, panels, windows and workspaces, compare and survey, the slideshow, video and audio playback.
56 operations. Generated from the application's own OpenAPI document.
POST /api/compare/split
Compare split
Body
| Field | Type | Required | Description |
|---|---|---|---|
direction | "horizontal" | "vertical" | yes | The compare split: horizontal, vertical |
curl -X POST http://127.0.0.1:9100/api/compare/split \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"direction":"horizontal"}'
Responses
200— Compare split direction set400— Invalid direction
GET /api/images/current/audio
Audio note
curl -X GET http://127.0.0.1:9100/api/images/current/audio \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— Whether the current picture has an audio note, and whether one plays
POST /api/images/current/audio
Play audio note
Body
| Field | Type | Required | Description |
|---|---|---|---|
playing | boolean | yes | True plays the current picture's audio note, false stops it. |
curl -X POST http://127.0.0.1:9100/api/images/current/audio \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"playing":true}'
Responses
200— The audio note plays, or stopped400— The picture has no audio note
POST /api/slideshow/interval
Slideshow seconds
Body
| Field | Type | Required | Description |
|---|---|---|---|
seconds | number | yes |
curl -X POST http://127.0.0.1:9100/api/slideshow/interval \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"seconds":0}'
Responses
200— Slideshow interval set400— Invalid interval
POST /api/slideshow/start
Start slideshow
curl -X POST http://127.0.0.1:9100/api/slideshow/start \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— Slideshow started
POST /api/slideshow/stop
Stop slideshow
curl -X POST http://127.0.0.1:9100/api/slideshow/stop \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— Slideshow stopped
POST /api/survey/count
Pictures per Survey page
Body
| Field | Type | Required | Description |
|---|---|---|---|
count | number | yes | Pictures per Survey page, 2-4. In Survey the page is laid out again; in any other view the view stays and the count is used the next time Survey is entered. |
curl -X POST http://127.0.0.1:9100/api/survey/count \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"count":0}'
Responses
200— Survey count set400— Invalid count
POST /api/ui/channel
Channel
Body
| Field | Type | Required | Description |
|---|---|---|---|
channel | "rgb" | "red" | "green" | "blue" | yes | The channel: rgb, red, green, blue |
curl -X POST http://127.0.0.1:9100/api/ui/channel \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"channel":"rgb"}'
Responses
200— Channel mode set400— Invalid channel
POST /api/ui/clipping
Clipping
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/clipping \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Clipping overlay set
POST /api/ui/composition-guide
Composition guide
Body
| Field | Type | Required | Description |
|---|---|---|---|
guide | "none" | "thirds" | "golden" | "diagonals" | "triangles" | "spiral" | "fine" | The grid: none, thirds, golden, diagonals, triangles, spiral, fine | |
turn | boolean | Face a guide with a direction (spiral, triangles) the next way round. |
curl -X POST http://127.0.0.1:9100/api/ui/composition-guide \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"guide":"none","turn":true}'
Responses
200— Composition guide set400— Unknown guide
POST /api/ui/develop-panel
Develop panel
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/develop-panel \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Develop panel visibility set
GET /api/ui/dialogs
Open dialogs
curl -X GET http://127.0.0.1:9100/api/ui/dialogs \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— Every dialog the API can open, and whether it is on screen
POST /api/ui/dialogs
Open dialog
Body
| Field | Type | Required | Description |
|---|---|---|---|
name | "settings" | "export" | "import" | "batch-rename" | "eventphotos" | "publish" | "gallery" | "iptc" | "smart_collection" | "place_by_neighbours" | "feedback" | "lightroom_catalog" | "whats_new" | "downloads" | "workflow_templates" | "person_tag" | yes | The dialog: settings, export, import, batch-rename, eventphotos, publish, gallery, iptc, smart_collection, place_by_neighbours, feedback, lightroom_catalog, whats_new, downloads, workflow_templates, person_tag |
open | boolean | yes | |
tab | "general" | "performance" | "appearance" | "color" | "transform" | "launching" | "connections" | "tether" | "denoise" | "workflow" | "geocode" | "shortcuts" | "ai_services" | "license" | The settings section: general, performance, appearance, color, transform, launching, connections, tether, denoise, workflow, geocode, shortcuts, ai_services, license |
curl -X POST http://127.0.0.1:9100/api/ui/dialogs \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"settings","open":true}'
Responses
200— The dialog was opened or closed400— No dialog by that name, or it cannot open right now
GET /api/ui/displays
Displays
curl -X GET http://127.0.0.1:9100/api/ui/displays \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— The displays, as Window → Move to Display lists them
POST /api/ui/dual-fullscreen
Dual full screen
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/dual-fullscreen \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Dual fullscreen set
POST /api/ui/exif-overlay
EXIF overlay
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/exif-overlay \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— EXIF overlay set
POST /api/ui/exposure-aid
Exposure aid
Body
| Field | Type | Required | Description |
|---|---|---|---|
ev | number | yes | -4 to +4. Applies to every image at once and is never written to a sidecar — it is a way of looking, not an edit. |
curl -X POST http://127.0.0.1:9100/api/ui/exposure-aid \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ev":0}'
Responses
200— Exposure aid set
POST /api/ui/false-color
False color
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/false-color \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— False-colour overlay set
POST /api/ui/filmstrip
Filmstrip
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/filmstrip \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Filmstrip visibility set
POST /api/ui/focus-box
Focus box
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/focus-box \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Focus box set
POST /api/ui/focus-peaking
Focus peaking
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/focus-peaking \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Focus peaking overlay set
POST /api/ui/folder-tree
Folder tree
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/folder-tree \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Folder tree visibility set
POST /api/ui/fullscreen
Full screen
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/fullscreen \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Fullscreen mode set
POST /api/ui/highlight-detail
Highlight detail
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/highlight-detail \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Highlight detail overlay set
POST /api/ui/import-panel
Import panel
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/import-panel \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Import panel shown or hidden
POST /api/ui/keywords-panel
Keywords panel
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/keywords-panel \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Keywords panel shown or hidden
POST /api/ui/library-window/tab
Library window tab
Body
| Field | Type | Required | Description |
|---|---|---|---|
name | "duplicates" | "folder-copies" | "disks" | yes | The tab: duplicates, folder-copies, disks |
curl -X POST http://127.0.0.1:9100/api/ui/library-window/tab \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"duplicates"}'
Responses
200— The Library window is showing that tab400— The window is not open, or no tab by that name
POST /api/ui/light-table
Light table
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/light-table \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Light Table opened or closed
POST /api/ui/map
Map
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/map \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Map panel visibility set
POST /api/ui/noise-map
Noise map
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/noise-map \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Noise map overlay set
GET /api/ui/panels
Panels
curl -X GET http://127.0.0.1:9100/api/ui/panels \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— Every dockable panel, whether it is in the layout and whether it is the tab on top
POST /api/ui/panels/focus
Show panel
Body
| Field | Type | Required | Description |
|---|---|---|---|
name | "folders" | "filmstrip" | "sidebar" | "histogram" | "viewer" | "develop" | "scopes" | "map" | yes | The panel: folders, filmstrip, sidebar, histogram, viewer, develop, scopes, map |
curl -X POST http://127.0.0.1:9100/api/ui/panels/focus \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"folders"}'
Responses
200— The panel is shown and in front400— No panel by that name
POST /api/ui/panels/pop-out
Pop out panel
Body
| Field | Type | Required | Description |
|---|---|---|---|
name | "folders" | "filmstrip" | "sidebar" | "histogram" | "viewer" | "develop" | "scopes" | "map" | yes | The panel: folders, filmstrip, sidebar, histogram, viewer, develop, scopes, map |
popped | boolean | yes | True: a window of its own; false: docked again. |
curl -X POST http://127.0.0.1:9100/api/ui/panels/pop-out \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"folders","popped":true}'
Responses
200— The panel in a window of its own, or docked400— Not a panel that pops out
POST /api/ui/presentation
Presentation mode
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/presentation \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Presentation mode set
POST /api/ui/preview-window
Preview window
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/preview-window \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Preview window opened or closed
POST /api/ui/recording
Start recording the window
Body
| Field | Type | Required | Description |
|---|---|---|---|
dir | string | yes | A path. In an instance started with `--dir` it is in the instance's root: `/` is the root, and a path that leads out of it is refused (403). |
fps | number | Frames a second, 1–60 (30 if left out). |
curl -X POST http://127.0.0.1:9100/api/ui/recording \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"dir":"text"}'
Responses
200— Recording: the main window is written as one JPEG per frame into the folder until DELETE /api/ui/recording400— A recording is already running, the folder holds frames, or fps is outside 1–60
DELETE /api/ui/recording
Stop recording the window
curl -X DELETE http://127.0.0.1:9100/api/ui/recording \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— Stopped, with every frame on disk and frames.txt written400— No recording is running
POST /api/ui/scopes
Scopes
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/scopes \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Scopes panel visibility set
POST /api/ui/screenshot
Screenshot of a window
Body
| Field | Type | Required | Description |
|---|---|---|---|
panel | "folders" | "filmstrip" | "sidebar" | "histogram" | "viewer" | "develop" | "scopes" | "map" | The panel: folders, filmstrip, sidebar, histogram, viewer, develop, scopes, map | |
path | string | yes | A path. In an instance started with `--dir` it is in the instance's root: `/` is the root, and a path that leads out of it is refused (403). |
window | "main" | yes | The window: main |
curl -X POST http://127.0.0.1:9100/api/ui/screenshot \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"window":"main","path":"text"}'
Responses
200— Screenshot requested; the PNG appears after the window's next frame
POST /api/ui/shadow-detail
Shadow detail
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/shadow-detail \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Shadow detail overlay set
POST /api/ui/sidebar
Sidebar
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/sidebar \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Sidebar visibility set
GET /api/ui/state
What is shown
curl -X GET http://127.0.0.1:9100/api/ui/state \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— Current UI state
POST /api/ui/window
Arrange window
Body
| Field | Type | Required | Description |
|---|---|---|---|
arrange | "tile_left" | "tile_right" | "fill" | "center" | yes | The window arrangement: tile_left, tile_right, fill, center |
display | number | A display's id (GET /api/ui/displays); left out, the one the window is on. | |
size | number[] | The window's inner size in points, `[width, height]`, set before it is placed (a recording at a video's shape). Left out, `center` keeps the size and the others fill their part of the display. |
curl -X POST http://127.0.0.1:9100/api/ui/window \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"arrange":"tile_left"}'
Responses
200— The main window placed, as Tile Left/Right, Fill Screen, Center Window and Move to Display do400— No such display
GET /api/ui/workspaces
Workspaces
curl -X GET http://127.0.0.1:9100/api/ui/workspaces \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— The built-in and the saved workspaces
POST /api/ui/workspaces
Save workspace
Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes |
curl -X POST http://127.0.0.1:9100/api/ui/workspaces \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"text"}'
Responses
200— The panel layout as it is, saved under the name (Save Workspace…); one by that name is replaced400— No name, or a built-in one
DELETE /api/ui/workspaces/{name}
Delete workspace
| Parameter | In | Type | Description |
|---|---|---|---|
name | path | string | A saved workspace |
curl -X DELETE http://127.0.0.1:9100/api/ui/workspaces/<name> \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— Deleted404— No saved workspace by that name
POST /api/ui/workspaces/apply
Workspace
Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes |
curl -X POST http://127.0.0.1:9100/api/ui/workspaces/apply \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"text"}'
Responses
200— The panels laid out as the workspace404— No workspace by that name
POST /api/ui/zebra
Zebra stripes
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/zebra \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Zebra overlay set
POST /api/ui/zoom
Zoom
Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes |
curl -X POST http://127.0.0.1:9100/api/ui/zoom \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'
Responses
200— Zoomed to the level a click on the picture goes to (true; `zoom_click_level` in the settings) or fit to the window (false), as the Z key does
GET /api/video
Video
curl -X GET http://127.0.0.1:9100/api/video \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— The video on screen: playing, position, duration, sound (#574)400— The picture on screen is not a video, or videos do not play here
POST /api/video
Play video
Body
| Field | Type | Required | Description |
|---|---|---|---|
muted | boolean | Sound off (true) or on (false). | |
playing | boolean | Play (true) or pause (false). | |
position | number | Seek to this many seconds from the start. |
curl -X POST http://127.0.0.1:9100/api/video \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"muted":true,"playing":true,"position":0}'
Responses
200— The video on screen, changed: play or pause, seek, sound on or off400— The picture on screen is not a video, or videos do not play here
POST /api/view-mode
View mode
Body
| Field | Type | Required | Description |
|---|---|---|---|
mode | "develop" | "grid" | "library" | "compare" | "survey" | "raw_steps" | yes | The view mode: develop, grid, library, compare, survey, raw_steps |
curl -X POST http://127.0.0.1:9100/api/view-mode \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"develop"}'
Responses
200— View mode changed400— Invalid view mode
GET /api/view/steps
Step times
curl -X GET http://127.0.0.1:9100/api/view/steps \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— How long the last steps took to put their pictures on screen, and the RAW spool pace
GET /api/zoom
Zoom
curl -X GET http://127.0.0.1:9100/api/zoom \
-H "Authorization: Bearer $CULLING_API_TOKEN"
Responses
200— Current zoom state
POST /api/zoom
Zoom level
Body
| Field | Type | Required | Description |
|---|---|---|---|
center | number[] | The point to put in the middle of the view, as [x, y] in 0..1 of the upright picture (the frame masks and the focus box use), as dragging the picture does. Only with a zoom level: at fit the whole picture shows. Without it, the point in the middle stays where it was. | |
fit_mode | "fit_screen" | "one_to_one" | "custom" | The fit mode: fit_screen, one_to_one, custom | |
level | number | Zoom level in screen pixels per picture pixel (0.05 to 20.0; 1.0 = 100 %). If omitted, fit_mode is used alone. Like a level chosen in the info bar, it is also what a click on the picture and Z zoom to from then on (`zoom_click_level` in the settings); `fit_mode` alone does not change that. |
curl -X POST http://127.0.0.1:9100/api/zoom \
-H "Authorization: Bearer $CULLING_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"center":[0],"fit_mode":"fit_screen","level":0}'
Responses
200— Zoom updated400— Invalid zoom parameters