Skip to main content

Documentation Index

Fetch the complete documentation index at: https://crsdk.app/llms.txt

Use this file to discover all available pages before exploring further.

LUTs in CineEI vs Picture Profiles

LUTs serve different purposes depending on your shooting mode.
In CineEI, CineEI Quick, or Flexible ISO mode, the camera always records S-Log3 — the raw log data is never altered. The selected LUT (base-look-value) controls what you see on the viewfinder and monitoring output to help you expose and frame, but the recorded file remains flat S-Log3.Embed LUT File writes the LUT as metadata only into the recorded file — post-production tools can read it, but the actual video data is still S-Log3.Properties used:
PropertyPurpose
base-look-valueSelect active monitoring LUT — shows real names like “s709”, “User5:February.cube”
embed-lut-fileEmbed LUT metadata in file for post reference (On/Off) — does not bake the LUT
LUT slots: 3 preset base looks (S-Log3, s709, 709(800%)) + up to 16 user slots for imported .cube LUTs.
# See all available LUTs with real names
curl .../properties/base-look-value
{
  "available_values": [
    { "value": "0x1", "formatted": "S-Log3" },
    { "value": "0x2", "formatted": "s709" },
    { "value": "0x3", "formatted": "709(800%)" },
    { "value": "0x101", "formatted": "User1:Portra+.cube" },
    { "value": "0x102", "formatted": "User2:Venice.cube" }
  ]
}

Import LUT File

method
POST
POST /api/cameras/{cameraId}/lut/import
Upload a .cube LUT file to the camera. The file is imported asynchronously — the endpoint returns 202 Accepted immediately and the result is delivered via the lutImportResult SSE event.
filePath
string
required
Absolute path to a .cube LUT file on the server’s filesystem.
slot
integer
required
LUT slot number on the camera (1-16).
curl -X POST http://localhost:8080/api/cameras/D10F60149B0C/lut/import \
  -H "Content-Type: application/json" \
  -d '{"filePath": "/path/to/MyLUT.cube", "slot": 1}'

SSE Result

The import result is delivered asynchronously via the lutImportResult SSE event:
Success
{
  "slot": 1,
  "status": "success"
}
Error
{
  "slot": 1,
  "status": "error",
  "error": "invalid_file"
}
Error codes:
CodeDescription
general_failureUnspecified import failure
invalid_filenameFile name not accepted by camera
device_busyCamera is busy (recording, etc.)
storage_fullCamera storage is full
invalid_parameterInvalid slot number or parameter
invalid_fileFile is not a valid .cube LUT
invalidGeneric validation failure
On macOS with SDK V2.01.00, the OnWarning callback for LUT import results may not fire. The import itself succeeds — verify by checking the camera’s LUT slot directly.

CineEI LUT Workflow

Import a LUT and apply it as the monitoring base look for CineEI recording.
1

Enable CineEI

Set movie-shooting-mode to 0x0301 (CineEI). See CineEI setup for full details.
2

Import LUT

POST /api/cameras/{id}/lut/import with your .cube file and slot number (1-16).
3

Select the active base look

Set base-look-value to the imported LUT slot. GET the property first to see available values with real LUT names (e.g. “User1:MyLUT.cube”).
4

Enable LUT embedding (optional)

Set embed-lut-file to 0x2 (On) to write LUT metadata into the recorded file for post reference.
# 1. Import LUT
curl -X POST .../lut/import \
  -d '{"filePath": "/path/to/MyLUT.cube", "slot": 1}'

# 2. Select the imported LUT (User slot 1 = 0x101)
curl -X PUT .../properties/base-look-value \
  -d '{"value": "0x101"}'

# 3. Enable LUT embedding
curl -X PUT .../properties/embed-lut-file \
  -d '{"value": "0x2"}'

PPLUT Workflow

Apply an imported LUT as the base look for a Picture Profile. This is for non-log shooting — the LUT is baked into the recorded image.
1

Import the LUT

POST /api/cameras/{id}/lut/import with your .cube file and a slot (1-16).
2

Set Picture Profile to a Custom slot

Set picture-profile to Custom 1-4 (0x41-0x44).
3

Select the LUT as base look

Set pp-lut-base-look to the PPLUT slot (1-8) that maps to your imported LUT.
# 1. Import LUT to slot 1
curl -X POST .../lut/import \
  -d '{"filePath": "/path/to/MyLUT.cube", "slot": 1}'

# 2. Set Picture Profile to Custom 1
curl -X PUT .../properties/picture-profile \
  -d '{"value": "0x41"}'

# 3. Select PPLUT 1 as base look
curl -X PUT .../properties/pp-lut-base-look \
  -d '{"value": "0x1"}'
pp-lut-base-look is only writable when picture-profile is set to a Custom slot. It may appear read-only in getAllProperties — use an individual GET for accurate state.