Skip to main content

How to programmatically access video from GO Focus Plus cameras?

kjin-7291
Original Poster

We are developing an internal integration using the MyGeotab SDK and need to programmatically fetch video clips captured by our Geotab GO Focus Plus cameras.

In the MyGeotab web portal, we can see the camera clips perfectly under the Video > Events page. On the API side, we are successfully using GetFeed on the ExceptionEvent endpoint to capture the telematics events, but these event payloads do not contain any video links or camera metadata. Furthermore, querying the MediaFile endpoint always returns zero records.

Our Questions for the SDK Support Team:

  1. What is the correct API endpoint or workflow to retrieve video clips or video URLs for the GO Focus Plus camera?
  2. If these video events are not exposed through the standard Geotab JSON-RPC SDK, what is the recommended way for a developer to programmatically access this footage?

Thank you for your guidance.

Join the conversation

You need to be logged in to reply to this post and participate in the Geotab Community discussions.

3 Replies

EishiFUN
Geotabber

Hello @kjin-7291​ 

 

Thank you for sharing such a detailed and well-structured question in our community. It makes it much easier to give you a precise answer! Welcome, and I'm glad you found us. I am not a developer so I used an AI tool to help me with this answer. If there are any issues or anything that does not make sense pease let me know and I will reach out to our SDK team to support further here.

 

Short answer: MediaFile is the correct endpoint for GO Focus Plus video clips. The reason your queries are returning zero records is almost certainly a SolutionId mismatch this is the most common pitfall with this API.

 

 How the MediaFile API Works

  

The MediaFile entity is Geotab's standard way to store and retrieve binary media (video, images) attached to a device or driver. It supports the standard JSON-RPC methods: Get, GetFeed, Add, Set, Remove, and GetCountOf.

 

The critical thing to understand is that every MediaFile record is scoped to a SolutionId. This is a GUID-style string that acts as a namespace multiple integrations can coexist in the same database without their files mixing. When you call Get on MediaFile, you only see records whose SolutionId matches what you supply.

 

Why your MediaFile query returns zero records:

The video clips created by the GO Focus Plus camera hardware are stored under Geotab's own internal SolutionId. When you query the API without that SolutionId (or with your own integration's SolutionId), you get an empty result the data is there, but filtered out.

   

 The Correct Workflow

  

 Step 1 — Query MediaFile by device and date range:

 

 // JavaScript example (Geotab API)

 const results = await api.call("Get", {

  typeName: "MediaFile",

  search: {

   deviceSearch: { id: "b1234" },  // your device Id

   fromDate: "2024-01-01T00:00:00Z",

   toDate:  "2024-01-02T00:00:00Z"

   // solutionId: "<see note below>"

  }

 });

 

 Step 2 — Download the binary:

 

 Once you have MediaFile records with Status: "Ready", use the DownloadMediaFile method (a separate HTTP call) to retrieve the actual MP4 binary.

   

 Getting the GO Focus Plus SolutionId

  

 This is the key step you'll need to unblock the integration. There are two ways to find it:

 

 1. Try a broad query first — query MediaFile by deviceSearch and a date range without specifying a SolutionId to see if any records come back. Some environments allow this as a discovery step.

 2. Contact Geotab Support — ask for the SolutionId used by the GO Focus Plus camera system in your database. This is the most reliable path. Reference the MediaFile API and the Video > Events page where you can already see the clips.

 

 Why ExceptionEvent Has No Video Link

  

This is expected behaviour. ExceptionEvent captures rule violations (speeding, harsh braking, etc.) and can trigger a camera clip recording, but the video itself is stored as a separate MediaFile entity. The link between an ExceptionEvent and its associated MediaFile record is through the device ID and overlapping timestamps there is no direct foreign key in the

 ExceptionEvent payload.

 

 Useful References

  

 - MediaFile object reference(https://developers.geotab.com/myGeotab/apiReference/objects/MediaFile)

 - mg-media-files sample repository on GitHub (https://github.com/Geotab/mg-media-files) — contains .NET and JavaScript code samples for the full upload/download workflow

 - Rate limits to be aware of: Get — 350 req/min; GetFeed — 60 req/min (180s timeout per request); downloads — 240/min

 

 Please let us know if you have any other questions. We are here to help.

 

 Have a great day!

 Eishi FUN

kjin-7291
Original Poster

Hey Eishi,

 

Thanks for the response and clarification.

 

I attempted a broad MediaFile query without specifying a SolutionId and still received empty results from both calls:

  • Get MediaFile: {'result': [], 'jsonrpc': '2.0'}
  • GetFeed MediaFile: {'data': [], 'toVersion': '0000000000000000'}

I'm following the suggestion to ask Geotab Support about the SolutionId. But is the SolutionId consistent across all Geotab databases, or is it database-specific? If it is database-specific, is there an API method to retrieve it programmatically to support automation without manual lookup or contacting Support?

Also, I noticed video playback in the MyGeotab web portal triggers requests to https://api.smarterai.com/v5/events. Not sure if this is related, but sharing in case it helps with diagnosis.

EishiFUN
Geotabber

Hi again,

 

I am sorry for the delay in getting back to you on this. I owe you a correction on my previous response I pointed you at MediaFile and SolutionId, and that was the wrong direction entirely for the GO Focus Plus. I'm sorry for the confusion.

 

Your observation about api.smarterai.com/v5/events in the network requests was the key signal, and it was completely right. GO Focus Plus video is served by the Geotab Video Platform (GVP), which was previously backed by SmarterAI's own API. It has now been ported to native MyGeotab APIs, accessible at your standard {myg-host}/apiv1 endpoint using the same JSON-RPC pattern and session credentials you already use.

 

MediaFile is not relevant here — ignore my previous guidance on SolutionId.

 

The correct API types are:

1. Query video events — CameraEvent

{

 "method": "Get",

 "params": {

  "typeName": "CameraEvent",

  "credentials": { "database": "...", "userName": "...", "sessionId": "..." },

  "search": {

   "fromDate": "2026-06-01T00:00:00Z",

   "toDate": "2026-06-10T00:00:00Z",

   "cameraSerialNumbers": ["GEH1F9R79P0Z"]

  }

 }

}

Each result includes an id (video event ID), exceptionId (direct link to the MyG exception — no timestamp correlation needed), recording timestamps, device/driver IDs, and event type/attributes.

 

2. Request a video capture — CameraEventCaptureRequest

For requesting on-demand or historical clips:

{

 "method": "Add",

 "params": {

  "typeName": "CameraEventCaptureRequest",

  "credentials": { ... },

  "entity": {

   "cameraSerialNumber": "GE02245DCXZEN",

   "fromDate": "2026-06-10T14:30:00Z",

   "durationSeconds": 10,

   "mediaType": "VIDEO"

  }

 }

}

Poll for status with Get on CameraEventCaptureRequest, or use webhooks (CameraWebhook type) to receive real-time status updates.

 

3. Video playback

Video is rendered via a hosted JavaScript web component — you pass it the video-event-id from step 1 and your MyG session credentials. There's no direct MP4 download URL exposed.

 

Authentication is standard MyGeotab — create a Service Account, call Authenticate, and use the session ID. No separate SmarterAI credentials are needed.

 

To your specific question: there is no SolutionId involved in any of this. The GVP API is scoped to your database by your MyG credentials — it's not a namespace issue like the MediaFile pattern I incorrectly described.

 

These APIs are currently being merged into the official Geotab SDK documentation — they may not appear on developers.geotab.com yet, but they are production-ready at the apiv1 endpoint. If you hit any access issues, reach out to your Geotab reseller and ask them to confirm GVP API access is enabled for your database.

 

Hope this sets you on the right path!

Eishi FUN

Still have questions?