C.A.T.I. API Integration Guide
Use this guide to authenticate, explore endpoints, and consume the camera catalog in your own tools.
Authentication
All API requests require your secret key. Provide it as the X-API-KEY header or as the api_key query parameter.
curl -H "X-API-KEY: <your-key>" https://timecode.vandelaysound.com/api/cameras
Tip
Headers are preferred. Use query parameters only when testing or when headers are not available.
Due to low volume, API access is granted on request. Share your return email below and we will follow up with a key.
Endpoints
GET /api/cameras
Returns every published camera with audio, timecode, and imagery metadata.
- Auth required
- Method: GET
- Response:
{ data: Camera[] }
curl -H "X-API-KEY: <your-key>" https://timecode.vandelaysound.com/api/cameras
GET /api/cameras/{id}
Fetch a single camera by numeric ID.
- Auth required
- Method: GET
- Response:
{ data: Camera }
curl -H "X-API-KEY: <your-key>" https://timecode.vandelaysound.com/api/cameras/42
GET /api/input-types
Returns all selectable input types so integrations can render current CATI options without hardcoding values.
- Auth required
- Method: GET
- Response:
{ data: { timecode_inputs: string[], audio_inputs: { type, photo_url? }[] } }
curl -H "X-API-KEY: <your-key>" https://timecode.vandelaysound.com/api/input-types
GET /api/input-types/timecode
Returns only timecode input options.
- Auth required
- Method: GET
- Response:
{ data: string[] }
curl -H "X-API-KEY: <your-key>" https://timecode.vandelaysound.com/api/input-types/timecode
GET /api/input-types/audio
Returns only audio input options with optional reference photos.
- Auth required
- Method: GET
- Response:
{ data: { type, photo_url? }[] }
curl -H "X-API-KEY: <your-key>" https://timecode.vandelaysound.com/api/input-types/audio
POST /api/cameras
Submit a new camera request. Requests are reviewed in the C.A.T.I. admin “Request” queue.
- Auth required
- Method: POST
- Response:
{ data: { request_id, status } }
curl -X POST -H "X-API-KEY: <your-key>" -H "Content-Type: application/json" \
-d '{
"manufacturer": "Canon",
"model": "C300 Mark III",
"timecode_input": "BNC",
"audio_inputs": [{ "type": "XLR", "quantity": 2 }],
"notes": "Testing new firmware.",
"image_1_url": "https://example.com/canon-front.jpg"
}' https://timecode.vandelaysound.com/api/cameras
Only manufacturer and model are required. Optional fields include timecode input, audio input, notes, and up to four image URLs. We do not accept image uploads via the API.
You can choose from our existing input lists or provide new free-text values to cover emerging connectors.
Sample response
{
"data": [
{
"id": 42,
"manufacturer": "Arri",
"model": "Alexa Mini",
"timecode_input": "BNC",
"audio_input_summary": "1x XLR (5-pin)",
"audio_inputs": [
{ "type": "XLR (5-pin)", "quantity": 1 }
],
"notes": "Jam off master clock for multi-cam.",
"images": ["/file/alexa-mini-front.jpg", "/file/alexa-mini-ports.jpg"],
"primary_image": "/file/alexa-mini-front.jpg"
}
]
}
The primary_image is the first available asset. The audio_inputs array expands the summary with discrete jack quantities.
Error reference
- 401 Unauthorized: Missing or incorrect API key.
- 404 Not found: The endpoint path is invalid or the camera ID does not exist.
- 405 Method not allowed: Only
GET and POST are supported.
- 422 Unprocessable: Manufacturer and model are required when creating a request.
- 400 Bad request: JSON payload is malformed.
- 500 Server error: Service configuration or database connectivity issue. Retry or contact support.
Usage expectations
- Cache results when possible to avoid unnecessary requests.
- Show the primary image when displaying a single camera, and fall back to the images array for galleries.
- Respect the audio_inputs ordering if you present jacks individually.
- Include attribution back to C.A.T.I. when embedding camera details in public tools.