Skip to main content

Documentation Index

Fetch the complete documentation index at: https://reporting.continu.com/llms.txt

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

The Reporting API uses an unusual pattern worth understanding before you write any code: each request body is a field-selection document, not a query. Read this section before building anything.
Every report endpoint accepts a POST body where:
  • Boolean flags select which fields to include in the response. Set a field to true to include it; omit it or set to false to exclude it. Only requested fields are returned.
  • Filter objects narrow the result set. Filter values are typically comma-separated strings of IDs.
  • Date range lives in the URL path (/{from}/{until}) as Unix epoch seconds, not in the body.
A single endpoint can return a slim report (a few fields) or a wide one (dozens of fields), depending on what your body requests. Request only the fields you need — narrower payloads are faster.

Example body shape

{
  "email": true,
  "first_name": true,
  "last_name": true,
  "departments": true,
  "content": true,
  "assignment": true,
  "user_filter": {
    "departments": "5f8a1c2d4e6b7a9c0d1e2f3a,5f8a1c2d4e6b7a9c0d1e2f3b",
    "locations": "5f8a1c2d4e6b7a9c0d1e2f4c"
  },
  "entity_filter": {
    "entity_type": "course"
  }
}

Filters

Most endpoints accept one or both of:
Filter by departments, locations, groups, teams, grades, manager, job title, suspended state, etc. Values are typically Continu IDs as comma-separated strings; for boolean attributes (suspended, is_manager, etc.) use "true" / "false".Available fields (across endpoints): buddy_email, departments, email, first_name, grades, groups, id, is_author, is_collaborator, is_manager, is_purchaser, last_name, locations, manager_email, org_levels, partner, role, suspended, teams, userid.
Used on completion-style endpoints. Filter by entity_id and entity_type (e.g., course, assessment, workshop).
Used on content/workshop/track-style endpoints. Filter by archived, categories, collaborators, content_id, created_by, departments, grades, locations, org_levels, teams.
Used on assignment endpoints. Filter by assigner_id, assignment_id, content_id.
Some report types use a custom filter name — assessment-status uses assessment_filter, track-status uses track_filter, workshop-engagement uses workshop_filter. The exact filter field set per endpoint is in the API reference for that endpoint’s request body.

Other body controls

A few fields aren’t field selectors or filters but control how the report is shaped:
FieldPurposeExample
range_targetWhich date field the {from}/{until} path range applies to"assigned_date", "completed_date", "created_at"
sort_byWhich field to sort the result set by"updated_date"
unsuspended_from / unsuspended_toEpoch-second bounds for filtering by unsuspended date1714521600

Tips for building requests

Start with the Postman collection. Every endpoint is pre-populated with all available field flags (defaulting to false) and filter scaffolding. Toggle on the fields you want — no guessing.
Be conservative with field selection. Narrow request bodies mean smaller responses and faster transfers. You can always add fields later — it’s a body change, not a schema migration.
Filter early. Apply user_filter and entity_filter aggressively. The API returns the full unpaginated result set in one response, so filtering at request time keeps responses manageable.