Reporting exports
The reporting endpoints pull CSV reports on the interactive videos, instructors, and video sources in an Instance or Super Instance. They exist for the analyses that aren't practical through the app UI: auditing which videos stream from which host, reconciling instructor activity against your SIS, or tying interactive videos back to LMS course IDs.
Three reports are available, each in an Instance and a Super Instance flavour:
| Report | One row per | Typical use |
|---|---|---|
bulbs | Interactive video created in the date range | Inventory of content, its owners, privacy, view counts, and duration. |
instructors | Instructor who logged in during the date range | Activity and adoption reporting; seat reconciliation. |
video-sources | Video attached to an interactive video | Auditing video hosts (Kaltura, YouTube, HLS, Panopto…), source URLs, and course IDs. |
Permissions
Reports are admin-only, and the scope in the path decides which admin right is required:
- Instance reports (
/instance/{instanceId}/…) require the calling user to be an owner or admin of that Instance. - Super Instance reports (
/superinstance/{superInstanceId}/…) require manage permission on that Super Instance.
The IDs are explicit in the path rather than derived from your credentials, because one set of credentials can administer several Instances. A request for an Instance you don't administer returns 403.
Delivery: emailed link or inline CSV
These are heavy database pulls, and a report covering a large district can take minutes. So the default is asynchronous:
runAsync=true(the default). The report is generated in the background and emailed to the calling user as a download link, valid for 24 hours. The request returns immediately with a plain-text confirmation.runAsync=false. The CSV comes back in the response body astext/csv. Use this when you're pulling a narrow date range and want to pipe the result straight into your own tooling. Be prepared for a slow response on large scopes — if generation runs long, the report is emailed as well.
curl 'https://www.wevideo.com/api/5/public/reports/instance/1234/video-sources?videoHost=kaltura&videoHost=youtube&runAsync=false' \
-H 'Authorization: WEVSIMPLE your-api-secret-here'
Bulb ID,Bulb Name,Owner Email,Video ID,Video Name,Video Host,Video URL,LMS Course ID(s),Created
88213,Cell Division,instructor@example.edu,55901,Mitosis lecture,kaltura,https://cdnapisec.kaltura.com/...,canvas:4471,2026-02-11 09:14:02
88240,Photosynthesis Lab,instructor@example.edu,55938,Lab walkthrough,youtube,https://www.youtube.com/watch?v=...,canvas:4471; canvas:4488,2026-02-14 15:02:47
curl 'https://www.wevideo.com/api/5/public/reports/superinstance/77/bulbs?fromDate=2026-01-01&toDate=2026-12-31' \
-H 'Authorization: WEVSIMPLE your-api-secret-here'
Your export is being generated and will be emailed to admin@example.edu when it is ready.
Parameters
| Parameter | Applies to | Description |
|---|---|---|
fromDate | all | Start of the date range, as YYYY-MM-DD. Required for bulbs and instructors; optional for video-sources. |
toDate | all | End of the date range, as YYYY-MM-DD. Required for bulbs and instructors; optional for video-sources. |
videoHost | video-sources | Restrict to videos on specific hosts, e.g. kaltura, youtube, hls, panopto, techconnect. Repeat the parameter for several. |
runAsync | all | true (default) emails a download link; false returns the CSV inline. |
fromDate and toDate filter on creation date for bulbs and video-sources, and on last login for instructors. Omitting them on video-sources exports every active video in the scope.
One export at a time
Only one export can run per Instance or Super Instance at a time. While a report is being generated, further requests for the same scope return 429 Too Many Requests:
{
"status": 429,
"error": "Too Many Requests",
"message": "An export is already running for this instance. Please wait for it to finish before starting another one."
}
Instance and Super Instance scopes are counted separately, so a Super Instance pull doesn't block an export for one of its member Instances. If you're scripting several reports, run them in sequence and retry on 429 with a backoff of a minute or two rather than in parallel.
Errors
| Status | Likely cause |
|---|---|
400 | Missing fromDate/toDate on a report that requires them, a malformed date, or an unrecognised videoHost. |
401 | Missing, malformed, or wrong Authorization header. See Authentication. |
403 | Credentials are valid but the user does not administer the Instance or Super Instance in the path. |
429 | An export is already running for that scope. |
Next steps
- Core entities — how Instances and Super Instances relate.
- API reference — the full parameter list for each reporting endpoint.