Once your organization has adopted SmarterProctoring, you will likely need to pull proctoring results and session data back into your own systems. This page covers the most common reporting integration patterns, the endpoints involved, and how to structure your data retrieval workflows.SmarterProctoring exposes reporting data at multiple levels of granularity, from high-level volume summaries down to individual session event details. Depending on your use case, you may need one or several of these.
The table below maps common integration needs to the appropriate API endpoints. Use this as a quick reference to find the right starting point for your use case.
Session-level reporting gives you the most granular view of what happened during a specific proctored exam. This is the pattern you will use most often when syncing results back to your external platform.
To check the current state of a specific exam session, use the Exam Session Details endpoint:
GET /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}
This returns the full session object, including scheduling details, proctoring configuration, and the current session status. Use this to determine whether a session has been completed, is still in progress, or was cancelled.
If your integration needs to know when a session finishes, you can poll this endpoint periodically.
Event reports capture notable occurrences during a proctoring session, such as a student losing browser focus, a microphone being detected, or other suspicious activity flagged by the system or proctor.To get all event reports for a specific session:
GET /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/events
See the List Event Reports reference for available query parameters including filtering and sorting options.To retrieve the full details of a single event report:
GET /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/events/{eventReportSid}
See the Get Event Report reference for the complete response schema.
Annotations are notes added by proctors during or after a session review. These provide human context alongside the automated event reports.
GET /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/annotations
See the List Annotations reference. This endpoint supports filtering and sorting via query parameters, and returns a paginated list of annotation objects.To get the full details of a specific annotation:
GET /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/annotations/{annotationSid}
Install-level reports provide aggregate data across your entire SmarterProctoring installation. These are useful for operational dashboards, administrative reporting, and capacity planning.
Retrieve all scheduled appointments based on filter parameters:
GET /v1/installs/{installSid}/reports/appointments
See the List Appointments reference. This is useful for building scheduling dashboards or exporting appointment data into external calendar or scheduling systems.
The most common reporting integration pattern. After a proctored session completes, your platform pulls the results and stores them locally.When to use: You need proctoring results available inside your own platform’s UI and want a simple, reliable sync mechanism.Endpoints used:
Pull all events across an exam to generate summary reports without iterating through individual sessions.When to use: You are building an admin dashboard or data pipeline that needs to pull session event data across your entire install.Endpoints used:
Use install-level reports to monitor scheduling health, volume trends, and proctor utilization across your entire integration.When to use: Operations or support teams need visibility into overall proctoring activity, scheduling bottlenecks, or capacity planning.Endpoints used:
Poll session status before pulling details. Always confirm a session is in a terminal state (closed or cancelled) before syncing event reports and annotations. Pulling data from an in-progress session will give you incomplete results.
Use exam-level endpoints for batch reporting. If you need data across many sessions, prefer the exam-level event endpoints over making individual session-level calls. This reduces the number of API requests and simplifies your code.
Paginate all list responses. Never assume a single API call will return all results. Always implement pagination logic in your reporting jobs.
Store SIDs for lookups. Keep a mapping of your platform’s IDs to SmarterProctoring SIDs (install, course, exam, enrollment, session). This makes it straightforward to query the right endpoints without additional lookup calls.
Schedule reporting jobs during off-peak hours. If you run bulk reporting syncs, consider scheduling them outside of peak exam times to minimize API load.
Cache install-level reports. Volume and distribution reports change infrequently. Cache their results on your side and refresh on a schedule (e.g., every 15 to 30 minutes) rather than on every page load.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"SmarterServices Platform","colors":{"primary":"#015692","light":"#0D9373","dark":"#015692"},"logo":{"light":"https://cdn.prod.website-files.com/650b016f7e13a7d9de337f22/6629053ca1393100c09aa484_SmarterServices%20Logo.png","dark":"https://cdn.prod.website-files.com/650b016f7e13a7d9de337f22/6629053ca1393100c09aa484_SmarterServices%20Logo.png"},"favicon":"https://mintcdn.com/smarterservicesllc/fCrC3qjG9fnKrDR3/favicon.png?fit=max\u0026auto=format\u0026n=fCrC3qjG9fnKrDR3\u0026q=85\u0026s=4ebd4e7b2756068bf227df06619633a6","api":{"openapi":["https://api.smarterproctoring.com/openapi.json","assessment/api/openapi.json"]},"navbar":{"links":[{"href":"https://intercom.help/smarterservices-llc-028a8a0949b6/en","label":"Support"}]},"footer":{"socials":{"website":"https://www.smarterservices.com","youtube":"https://www.youtube.com/@smarterservices","linkedin":"https://www.linkedin.com/company/smarterservices","facebook":"https://www.facebook.com/smarterservices","x":"https://x.com/smarterservices","github":"https://github.com/smarterservices"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"smarterservicesllc","hasAudioNarration":false,"actualSubdomain":"smarterservicesllc","customDomains":["developers.smarterservices.com"],"gitSource":{"type":"github","owner":"smarterservices","repo":"platform-documenation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a5de60074e183eea51381f1","collectionId":"b4811552-fb4e-467d-88a2-623c3838f2d6","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6a5de60074e183eea51381f1"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6a5de60074e183eea51381f1:success","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Proctoring","count":70},{"language":"default","tag":"Endpoints","count":63},{"language":"default","tag":"Platform","count":33},{"language":"default","tag":"BlockKit","count":25},{"language":"default","tag":"Reports","count":17},{"language":"default","tag":"Assessment","count":16},{"language":"default","tag":"API Reference","count":13},{"language":"default","tag":"SmarterElements","count":10},{"language":"default","tag":"Security \u0026 Authorization","count":9},{"language":"default","tag":"Getting Started","count":8}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".elements-example{border:1px solid #ddd;border-radius:var(--rounded-2xl, 1rem);overflow-y:auto;padding:5px}"}],"page":{"pagePath":"proctoring/common-integrations/reporting","slug":"/proctoring/common-integrations/reporting","pageMetadata":{"title":"Reporting Integrations","description":"Common patterns for pulling proctoring data from SmarterProctoring into your external reporting systems, dashboards, and workflows.","icon":"chart-mixed","href":"/proctoring/common-integrations/reporting"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Common patterns for pulling proctoring data from SmarterProctoring into your external reporting systems, dashboards, and workflows.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Mermaid,Table,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsx(_components.p,{children:`Once your organization has adopted SmarterProctoring, you will likely need to pull proctoring results and session data back into your own systems. This page covers the most common reporting integration patterns, the endpoints involved, and how to structure your data retrieval workflows.`}),`\n`,_jsx(_components.p,{children:`SmarterProctoring exposes reporting data at multiple levels of granularity, from high-level volume summaries down to individual session event details. Depending on your use case, you may need one or several of these.`}),`\n`,_jsx(Mermaid,{chart:`flowchart LR\n subgraph Session Level\n A[Exam Session Details]\n B[Event Reports]\n C[Annotations]\n end\n\n subgraph Exam Level\n D[List Exam Events]\n E[Events By Student]\n end\n\n subgraph Install Level\n F[Session Events Report]\n G[Exam Volume]\n H[Appointment Volume]\n I[List Appointments]\n J[Unscheduled Learners]\n end\n\n A --> D\n B --> D\n D --> F`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`common-use-cases`,children:`Common Use Cases`}),`\n`,_jsx(_components.p,{children:`The table below maps common integration needs to the appropriate API endpoints. Use this as a quick reference to find the right starting point for your use case.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Use Case`}),_jsx(_components.th,{children:`Primary Endpoint(s)`}),_jsx(_components.th,{children:`Level`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Check if a specific session is complete`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/exam-session/exam-session-details`,children:`Exam Session Details`})}),_jsx(_components.td,{children:`Session`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Get integrity events for a session`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/exam-session-event/list-event-reports`,children:`List Event Reports`})}),_jsx(_components.td,{children:`Session`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Get proctor annotations/notes for a session`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/exam-session-annotation/list-annotations`,children:`List Annotations`})}),_jsx(_components.td,{children:`Session`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Pull all session events for your install`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/session-events`,children:`Session Events Report`})}),_jsx(_components.td,{children:`Install`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`List all scheduled appointments`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/list-appointments`,children:`List Appointments`})}),_jsx(_components.td,{children:`Install`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Find students who have not scheduled`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/unscheduled-learners`,children:`Unscheduled Learners`})}),_jsx(_components.td,{children:`Install`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Exam volume and usage stats`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/exam-volume`,children:`Exam Volume`})}),_jsx(_components.td,{children:`Install`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Peak scheduling analysis`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/appointment-volume`,children:`Appointment Volume`})}),_jsx(_components.td,{children:`Install`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Proctoring modality breakdown`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/modality-distribution`,children:`Modality Distribution`})}),_jsx(_components.td,{children:`Install`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Service type distribution`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/service-distribution`,children:`Service Distribution`})}),_jsx(_components.td,{children:`Install`})]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`session-level-reporting`,children:`Session-Level Reporting`}),`\n`,_jsx(_components.p,{children:`Session-level reporting gives you the most granular view of what happened during a specific proctored exam. This is the pattern you will use most often when syncing results back to your external platform.`}),`\n`,_jsx(Heading,{level:`3`,id:`retrieving-session-status`,children:`Retrieving Session Status`}),`\n`,_jsxs(_components.p,{children:[`To check the current state of a specific exam session, use the `,_jsx(_components.a,{href:`/api-reference/exam-session/exam-session-details`,children:`Exam Session Details`}),` endpoint:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`This returns the full session object, including scheduling details, proctoring configuration, and the current session status. Use this to determine whether a session has been completed, is still in progress, or was cancelled.`}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`If your integration needs to know when a session finishes, you can poll this endpoint periodically.`})}),`\n`,_jsx(Heading,{level:`3`,id:`retrieving-integrity-event-reports`,children:`Retrieving Integrity Event Reports`}),`\n`,_jsx(_components.p,{children:`Event reports capture notable occurrences during a proctoring session, such as a student losing browser focus, a microphone being detected, or other suspicious activity flagged by the system or proctor.`}),`\n`,_jsx(_components.p,{children:`To get all event reports for a specific session:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/events`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/api-reference/exam-session-event/list-event-reports`,children:`List Event Reports`}),` reference for available query parameters including filtering and sorting options.`]}),`\n`,_jsx(_components.p,{children:`To retrieve the full details of a single event report:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/events/{eventReportSid}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/api-reference/exam-session-event/get-event-report`,children:`Get Event Report`}),` reference for the complete response schema.`]}),`\n`,_jsx(Heading,{level:`3`,id:`retrieving-annotations`,children:`Retrieving Annotations`}),`\n`,_jsx(_components.p,{children:`Annotations are notes added by proctors during or after a session review. These provide human context alongside the automated event reports.`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/annotations`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/api-reference/exam-session-annotation/list-annotations`,children:`List Annotations`}),` reference. This endpoint supports filtering and sorting via query parameters, and returns a paginated list of annotation objects.`]}),`\n`,_jsx(_components.p,{children:`To get the full details of a specific annotation:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/annotations/{annotationSid}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/api-reference/exam-session-annotation/get-annotation-details`,children:`Get Annotation Details`}),` for the complete response schema.`]}),`\n`,_jsx(Heading,{level:`3`,id:`typical-session-level-sync-flow`,children:`Typical Session-Level Sync Flow`}),`\n`,_jsx(_components.p,{children:`The following sequence shows how a 3rd party platform would pull complete session results after a proctored exam:`}),`\n`,_jsx(Mermaid,{chart:`sequenceDiagram\n participant ExtSys as External Platform\n participant SP as SmarterProctoring API\n\n ExtSys->>SP: GET /sessions/{examSessionSid} (check status)\n SP-->>ExtSys: Session details (status, timestamps, proctor info)\n\n alt Session is complete\n ExtSys->>SP: GET /sessions/{examSessionSid}/events (integrity events)\n SP-->>ExtSys: Paginated event reports\n\n ExtSys->>SP: GET /sessions/{examSessionSid}/annotations (proctor notes)\n SP-->>ExtSys: Paginated annotations\n\n ExtSys->>ExtSys: Sync results into external platform\n else Session still in progress\n ExtSys->>ExtSys: Retry later\n end`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`install-level-reporting`,children:`Install-Level Reporting`}),`\n`,_jsx(_components.p,{children:`Install-level reports provide aggregate data across your entire SmarterProctoring installation. These are useful for operational dashboards, administrative reporting, and capacity planning.`}),`\n`,_jsx(Heading,{level:`3`,id:`session-events-report`,children:`Session Events Report`}),`\n`,_jsx(_components.p,{children:`Pull all session event reports across your entire install:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v1/installs/{installSid}/reports/examSessionEvents`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/api-reference/reports/session-events`,children:`Session Events`}),` report reference.`]}),`\n`,_jsx(Heading,{level:`3`,id:`list-appointments`,children:`List Appointments`}),`\n`,_jsx(_components.p,{children:`Retrieve all scheduled appointments based on filter parameters:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v1/installs/{installSid}/reports/appointments`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/api-reference/reports/list-appointments`,children:`List Appointments`}),` reference. This is useful for building scheduling dashboards or exporting appointment data into external calendar or scheduling systems.`]}),`\n`,_jsx(Heading,{level:`3`,id:`unscheduled-learners`,children:`Unscheduled Learners`}),`\n`,_jsx(_components.p,{children:`Identify students who have been provisioned but have not yet scheduled their exam sessions:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v1/installs/{installSid}/reports/unscheduledLearners`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/api-reference/reports/unscheduled-learners`,children:`Unscheduled Learners`}),` reference. This returns a paginated list that your platform can use to send reminders or flag overdue scheduling.`]}),`\n`,_jsx(Heading,{level:`3`,id:`volume-and-distribution-reports`,children:`Volume and Distribution Reports`}),`\n`,_jsx(_components.p,{children:`These reports provide aggregate statistics for operational analysis:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Report`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/exam-volume`,children:`Exam Volume`})}),_jsx(_components.td,{children:`Overall exam volume for your install`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/appointment-volume`,children:`Appointment Volume`})}),_jsx(_components.td,{children:`Peak exam appointment analysis`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/exams-by-week`,children:`Exams By Week`})}),_jsx(_components.td,{children:`Exams grouped by week for trend analysis`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/exam-type-stats`,children:`Exam Type Stats`})}),_jsx(_components.td,{children:`Aggregated stats for exam types (next 10 days)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/modality-distribution`,children:`Modality Distribution`})}),_jsx(_components.td,{children:`Breakdown by proctoring modality`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/service-distribution`,children:`Service Distribution`})}),_jsx(_components.td,{children:`Breakdown by service type`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/api-reference/reports/proctor-volume`,children:`Proctor Volume`})}),_jsx(_components.td,{children:`Volume per proctor account`})]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`integration-patterns`,children:`Integration Patterns`}),`\n`,_jsx(Heading,{level:`3`,id:`pattern-1-post-session-sync`,children:`Pattern 1: Post-Session Sync`}),`\n`,_jsx(_components.p,{children:`The most common reporting integration pattern. After a proctored session completes, your platform pulls the results and stores them locally.`}),`\n`,_jsx(Mermaid,{chart:`flowchart TD\n A[Session completes in SmarterProctoring] --> B[Your platform polls session status]\n B --> C{Status = closed?}\n C -->|No| B\n C -->|Yes| D[Fetch event reports]\n D --> E[Fetch annotations]\n E --> F[Store results in your platform]\n F --> G[Display results to instructor/admin]`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`When to use`}),`: You need proctoring results available inside your own platform’s UI and want a simple, reliable sync mechanism.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Endpoints used`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/exam-session/exam-session-details`,children:`Exam Session Details`}),` for status polling`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/exam-session-event/list-event-reports`,children:`List Event Reports`}),` for integrity data`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/exam-session-annotation/list-annotations`,children:`List Annotations`}),` for proctor notes`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`pattern-2-bulk-exam-reporting`,children:`Pattern 2: Bulk Exam Reporting`}),`\n`,_jsx(_components.p,{children:`Pull all events across an exam to generate summary reports without iterating through individual sessions.`}),`\n`,_jsx(Mermaid,{chart:`flowchart TD\n A[Reporting job runs on schedule] --> B[GET /v1/installs/installSid/reports/examSessionEvents]\n B --> C[Aggregate and transform data]\n C --> D[Push to data warehouse or dashboard]`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`When to use`}),`: You are building an admin dashboard or data pipeline that needs to pull session event data across your entire install.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Endpoints used`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/reports/session-events`,children:`Session Events Report`}),` for cross-install event data`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`pattern-3-operational-dashboard`,children:`Pattern 3: Operational Dashboard`}),`\n`,_jsx(_components.p,{children:`Use install-level reports to monitor scheduling health, volume trends, and proctor utilization across your entire integration.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`When to use`}),`: Operations or support teams need visibility into overall proctoring activity, scheduling bottlenecks, or capacity planning.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Endpoints used`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/reports/unscheduled-learners`,children:`Unscheduled Learners`}),` for scheduling follow-ups`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/reports/exam-volume`,children:`Exam Volume`}),` and `,_jsx(_components.a,{href:`/api-reference/reports/appointment-volume`,children:`Appointment Volume`}),` for trend analysis`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/reports/list-appointments`,children:`List Appointments`}),` for a full appointment view`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/api-reference/reports/modality-distribution`,children:`Modality Distribution`}),` and `,_jsx(_components.a,{href:`/api-reference/reports/service-distribution`,children:`Service Distribution`}),` for breakdown analysis`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`pagination`,children:`Pagination`}),`\n`,_jsxs(_components.p,{children:[`Most list and report endpoints return paginated results. Use the `,_jsx(_components.code,{children:`offset`}),` and `,_jsx(_components.code,{children:`limit`}),` query parameters to page through results:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/events?offset=0\u0026limit=25`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`When building a sync job, always iterate through all pages until no more results are returned. A typical pagination loop looks like this:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`18`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`18`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` offset`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` limit`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 25`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` allResults`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [];`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`while`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` fetch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`baseUrl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/events?offset=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`offset`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u0026limit=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`limit`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"token\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jwtToken`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` );`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` data`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`results`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ||`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`results`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`length`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ===`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` break`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` allResults`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` allResults`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`concat`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`results`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` offset`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` limit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`best-practices`,children:`Best Practices`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Poll session status before pulling details.`}),` Always confirm a session is in a terminal state (closed or cancelled) before syncing event reports and annotations. Pulling data from an in-progress session will give you incomplete results.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Use exam-level endpoints for batch reporting.`}),` If you need data across many sessions, prefer the exam-level event endpoints over making individual session-level calls. This reduces the number of API requests and simplifies your code.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Paginate all list responses.`}),` Never assume a single API call will return all results. Always implement pagination logic in your reporting jobs.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Store SIDs for lookups.`}),` Keep a mapping of your platform’s IDs to SmarterProctoring SIDs (install, course, exam, enrollment, session). This makes it straightforward to query the right endpoints without additional lookup calls.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Schedule reporting jobs during off-peak hours.`}),` If you run bulk reporting syncs, consider scheduling them outside of peak exam times to minimize API load.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cache install-level reports.`}),` Volume and distribution reports change infrequently. Cache their results on your side and refresh on a schedule (e.g., every 15 to 30 minutes) rather than on every page load.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Reporting Integrations","description":"Common patterns for pulling proctoring data from SmarterProctoring into your external reporting systems, dashboards, and workflows.","icon":"chart-mixed","href":"/proctoring/common-integrations/reporting"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Common Use Cases","slug":"common-use-cases","depth":2,"children":[]},{"title":"Session-Level Reporting","slug":"session-level-reporting","depth":2,"children":[{"title":"Retrieving Session Status","slug":"retrieving-session-status","depth":3,"children":[]},{"title":"Retrieving Integrity Event Reports","slug":"retrieving-integrity-event-reports","depth":3,"children":[]},{"title":"Retrieving Annotations","slug":"retrieving-annotations","depth":3,"children":[]},{"title":"Typical Session-Level Sync Flow","slug":"typical-session-level-sync-flow","depth":3,"children":[]}]},{"title":"Install-Level Reporting","slug":"install-level-reporting","depth":2,"children":[{"title":"Session Events Report","slug":"session-events-report","depth":3,"children":[]},{"title":"List Appointments","slug":"list-appointments","depth":3,"children":[]},{"title":"Unscheduled Learners","slug":"unscheduled-learners","depth":3,"children":[]},{"title":"Volume and Distribution Reports","slug":"volume-and-distribution-reports","depth":3,"children":[]}]},{"title":"Integration Patterns","slug":"integration-patterns","depth":2,"children":[{"title":"Pattern 1: Post-Session Sync","slug":"pattern-1-post-session-sync","depth":3,"children":[]},{"title":"Pattern 2: Bulk Exam Reporting","slug":"pattern-2-bulk-exam-reporting","depth":3,"children":[]},{"title":"Pattern 3: Operational Dashboard","slug":"pattern-3-operational-dashboard","depth":3,"children":[]}]},{"title":"Pagination","slug":"pagination","depth":2,"children":[]},{"title":"Best Practices","slug":"best-practices","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"smarterservicesllc","siteName":"SmarterServices Platform","title":"Reporting Integrations - SmarterServices Platform","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-05T17:27:13.244Z","originalFileLocation":"proctoring/common-integrations/reporting.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Common patterns for pulling proctoring data from SmarterProctoring into your external reporting systems, dashboards, and workflows.\">\u003cmeta data-mint-head name=\"application-name\" content=\"SmarterServices Platform\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/smarterservicesllc/B1jO8o0ggqMDkB2a/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/smarterservicesllc/B1jO8o0ggqMDkB2a/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/smarterservicesllc/B1jO8o0ggqMDkB2a/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/smarterservicesllc/B1jO8o0ggqMDkB2a/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/smarterservicesllc/B1jO8o0ggqMDkB2a/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/smarterservicesllc/B1jO8o0ggqMDkB2a/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/smarterservicesllc/B1jO8o0ggqMDkB2a/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/smarterservicesllc/B1jO8o0ggqMDkB2a/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/smarterservicesllc/B1jO8o0ggqMDkB2a/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Reporting Integrations - SmarterServices Platform\">\u003cmeta data-mint-head property=\"og:description\" content=\"Common patterns for pulling proctoring data from SmarterProctoring into your external reporting systems, dashboards, and workflows.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"SmarterServices Platform\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.smarterservices.com/proctoring/common-integrations/reporting\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://smarterservicesllc.mintlify.app/_mintlify/api/og/v2?division=Common+Integrations\u0026amp;title=Reporting+Integrations\u0026amp;description=Common+patterns+for+pulling+proctoring+data+from+SmarterProctoring+into+your+external+reporting+systems%2C+dashboards%2C+and+workflows.\u0026amp;theme=4042a3185e49c2c9f63be8ee\u0026amp;signature=7ffba096a19a489c621847e27aa750a3fe0728f0d0911e2b6e6f63851f17d360\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Reporting Integrations - SmarterServices Platform\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Common patterns for pulling proctoring data from SmarterProctoring into your external reporting systems, dashboards, and workflows.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://smarterservicesllc.mintlify.app/_mintlify/api/og/v2?division=Common+Integrations\u0026amp;title=Reporting+Integrations\u0026amp;description=Common+patterns+for+pulling+proctoring+data+from+SmarterProctoring+into+your+external+reporting+systems%2C+dashboards%2C+and+workflows.\u0026amp;theme=4042a3185e49c2c9f63be8ee\u0026amp;signature=7ffba096a19a489c621847e27aa750a3fe0728f0d0911e2b6e6f63851f17d360\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/smarterservicesllc/B1jO8o0ggqMDkB2a/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"SmarterServices Platform\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#015692\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.smarterservices.com/proctoring/common-integrations/reporting\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/proctoring/common-integrations/reporting.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developers.smarterservices.com/#organization\",\"name\":\"SmarterServices Platform\",\"url\":\"https://developers.smarterservices.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://cdn.prod.website-files.com/650b016f7e13a7d9de337f22/6629053ca1393100c09aa484_SmarterServices%20Logo.png\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developers.smarterservices.com#website\",\"name\":\"SmarterServices Platform\",\"url\":\"https://developers.smarterservices.com\",\"publisher\":{\"@id\":\"https://developers.smarterservices.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.smarterservices.com/proctoring/common-integrations/reporting#webpage\",\"url\":\"https://developers.smarterservices.com/proctoring/common-integrations/reporting\",\"name\":\"Reporting Integrations\",\"description\":\"Common patterns for pulling proctoring data from SmarterProctoring into your external reporting systems, dashboards, and workflows.\",\"dateModified\":\"2026-05-05T17:27:13.244Z\",\"isPartOf\":{\"@id\":\"https://developers.smarterservices.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.smarterservices.com/proctoring/common-integrations/reporting#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.smarterservices.com/proctoring/common-integrations/reporting#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Common Integrations\",\"item\":\"https://developers.smarterservices.com/proctoring/common-integrations/exam-platform\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reporting Integrations\",\"item\":\"https://developers.smarterservices.com/proctoring/common-integrations/reporting\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developers.smarterservices.com/proctoring/common-integrations/reporting#article\",\"headline\":\"Reporting Integrations\",\"name\":\"Reporting Integrations\",\"description\":\"Common patterns for pulling proctoring data from SmarterProctoring into your external reporting systems, dashboards, and workflows.\",\"url\":\"https://developers.smarterservices.com/proctoring/common-integrations/reporting\",\"mainEntityOfPage\":{\"@id\":\"https://developers.smarterservices.com/proctoring/common-integrations/reporting#webpage\"},\"dateModified\":\"2026-05-05T17:27:13.244Z\",\"publisher\":{\"@id\":\"https://developers.smarterservices.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.smarterservices.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"SmarterServices Platform\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"SmarterServices Platform","nav":{"global":null,"tabs":[{"tab":"Platform","icon":"layer-group","pages":[{"title":"Platform","href":""}]},{"tab":"Assessment","icon":"pen-to-square","pages":[{"title":"Assessment","href":"/assessment/api/introduction"}]},{"tab":"Proctoring","icon":"camera-security","groups":[{"group":"Getting Started","pages":[{"title":"Introduction","icon":"map","href":"/proctoring/introduction"},{"title":"Data Model","icon":"puzzle-piece","href":"/proctoring/datamodel"},{"title":"Authentication","icon":"key","href":"/proctoring/api/authentication"},{"title":"Resource Identifiers","icon":"cube","href":"/proctoring/api/resource-identifiers"}]},{"group":"Common Integrations","pages":[{"title":"Exam Platforms","description":"Integrate an external exam platform with SmarterProctoring to provision exams, manage users, schedule sessions, and launch onboarding.","icon":"plug","href":"/proctoring/common-integrations/exam-platform"},{"title":"Reporting Integrations","icon":"chart-mixed","href":"/proctoring/common-integrations/reporting"}]},{"group":"Endpoints","pages":[{"group":"App Install","pages":[{"title":"Get Settings","description":"Returns the full settings object for the specified application install, including configuration options such as facial processing, proctor types, exam notes, and more.\u003cbr/>\u003cbr/>A valid authentication token must be provided in the `token` header.","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/settings","href":"/api-reference/app-install/get-settings"}]},{"group":"Course","pages":[{"title":"Search for users enrolled in a course by name","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/courses/{courseSid}/users","href":"/api-reference/course/search-for-users-enrolled-in-a-course-by-name"}]},{"group":"Course Offering","pages":[{"title":"List Course Offerings","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/courseOfferings","href":"/api-reference/course-offering/list-course-offerings"},{"title":"Create Course Offering","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json post /v1/installs/{installSid}/courseOfferings","href":"/api-reference/course-offering/create-course-offering"},{"title":"Course Offering Details","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/courseOfferings/{offeringSid}","href":"/api-reference/course-offering/course-offering-details"},{"title":"Update Course Offering","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json put /v1/installs/{installSid}/courseOfferings/{offeringSid}","href":"/api-reference/course-offering/update-course-offering"},{"title":"Delete Course Offering","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json delete /v1/installs/{installSid}/courseOfferings/{offeringSid}","href":"/api-reference/course-offering/delete-course-offering"}]},{"group":"Exam","pages":[{"title":"List Exams","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/courses/{courseSid}/exams","href":"/api-reference/exam/list-exams"},{"title":"Create Exam","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json post /v1/installs/{installSid}/courses/{courseSid}/exams","href":"/api-reference/exam/create-exam"},{"title":"Exam Details","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/courses/{courseSid}/exams/{examSid}","href":"/api-reference/exam/exam-details"},{"title":"Update Exam","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json put /v1/installs/{installSid}/courses/{courseSid}/exams/{examSid}","href":"/api-reference/exam/update-exam"},{"title":"Delete Exam","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json delete /v1/installs/{installSid}/courses/{courseSid}/exams/{examSid}","href":"/api-reference/exam/delete-exam"},{"title":"Get exam assignments","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/exams/{examSid}/assignments","href":"/api-reference/exam/get-exam-assignments"},{"title":"Update exam assignments","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json put /v1/installs/{installSid}/exams/{examSid}/assignments","href":"/api-reference/exam/update-exam-assignments"}]},{"group":"Exam Configuration","pages":[{"title":"List Configurations","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/courses/{courseSid}/exams/{examSid}/configurations","href":"/api-reference/exam-configuration/list-configurations"},{"title":"Create Configuration","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json post /v1/installs/{installSid}/courses/{courseSid}/exams/{examSid}/configurations","href":"/api-reference/exam-configuration/create-configuration"},{"title":"Get Configuration Details","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/courses/{courseSid}/exams/{examSid}/configurations/{examConfigurationSid}","href":"/api-reference/exam-configuration/get-configuration-details"},{"title":"Update Configuration","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json put /v1/installs/{installSid}/courses/{courseSid}/exams/{examSid}/configurations/{examConfigurationSid}","href":"/api-reference/exam-configuration/update-configuration"},{"title":"Delete Configuration","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json delete /v1/installs/{installSid}/courses/{courseSid}/exams/{examSid}/configurations/{examConfigurationSid}","href":"/api-reference/exam-configuration/delete-configuration"},{"title":"Upload Attachments","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json put /v1/installs/{installSid}/courses/{courseSid}/exams/{examSid}/configurations/{examConfigurationSid}/attachments","href":"/api-reference/exam-configuration/upload-attachments"},{"title":"Delete Attachments","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json delete /v1/installs/{installSid}/courses/{courseSid}/exams/{examSid}/configurations/{examConfigurationSid}/attachments","href":"/api-reference/exam-configuration/delete-attachments"}]},{"group":"Exam Events","pages":[{"title":"List Exam Events","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/exams/{examSid}/events","href":"/api-reference/exam-events/list-exam-events"},{"title":"Events By Student","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/exams/{examSid}/eventsByStudent","href":"/api-reference/exam-events/events-by-student"}]},{"group":"Exam Session","pages":[{"title":"List enrollment exam sessions","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/enrollments/{enrollmentSid}/exams/{examSid}/sessions","href":"/api-reference/exam-session/list-enrollment-exam-sessions"},{"title":"Exam Session Details","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}","href":"/api-reference/exam-session/exam-session-details"},{"title":"Reschedule Exam Session","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json put /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}","href":"/api-reference/exam-session/reschedule-exam-session"},{"title":"Schedule Exam Session","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json post /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}","href":"/api-reference/exam-session/schedule-exam-session"},{"title":"Cancel Exam Session","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json delete /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}","href":"/api-reference/exam-session/cancel-exam-session"},{"title":"Close Exam Session","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json post /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/close","href":"/api-reference/exam-session/close-exam-session"}]},{"group":"Exam Session Annotation","pages":[{"title":"List Annotations","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v2/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/annotations","href":"/api-reference/exam-session-annotation/list-annotations"},{"title":"Get Annotation Details","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v2/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/annotations/{annotationSid}","href":"/api-reference/exam-session-annotation/get-annotation-details"}]},{"group":"Exam Session Event","pages":[{"title":"List Event Reports","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/events","href":"/api-reference/exam-session-event/list-event-reports"},{"title":"Create Event Report","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json post /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/events","href":"/api-reference/exam-session-event/create-event-report"},{"title":"Get Event Report","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/events/{eventReportSid}","href":"/api-reference/exam-session-event/get-event-report"},{"title":"Update Event Report","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json put /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/events/{eventReportSid}","href":"/api-reference/exam-session-event/update-event-report"},{"title":"Delete Event Report","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json delete /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/events/{eventReportSid}","href":"/api-reference/exam-session-event/delete-event-report"},{"title":"Close Event Report","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json put /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/events/{eventReportSid}/close","href":"/api-reference/exam-session-event/close-event-report"}]},{"group":"Onboarding","pages":[{"title":"Get the onboarding URL for an exam session","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/exams/{examSid}/sessions/{sessionSid}/onboard","href":"/api-reference/onboarding/get-the-onboarding-url-for-an-exam-session"}]},{"group":"Provision","pages":[{"title":"Bulk Provision Data","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json post /v2/installs/{installSid}/provision","href":"/api-reference/provision/bulk-provision-data"}]},{"group":"Reports","pages":[{"title":"Exams By Week","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/examsByWeek","href":"/api-reference/reports/exams-by-week"},{"title":"Exam Volume","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/examVolume","href":"/api-reference/reports/exam-volume"},{"title":"Exam Type Stats","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/aggregatedStats","href":"/api-reference/reports/exam-type-stats"},{"title":"List Appointments","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/appointments","href":"/api-reference/reports/list-appointments"},{"title":"Appointment Volume","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/appointmentVolume","href":"/api-reference/reports/appointment-volume"},{"title":"Written Exam Audit","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/audit","href":"/api-reference/reports/written-exam-audit"},{"title":"Churn Report","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/churn","href":"/api-reference/reports/churn-report"},{"title":"Exam Overview","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/examOverview","href":"/api-reference/reports/exam-overview"},{"title":"Session Events","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/examSessionEvents","href":"/api-reference/reports/session-events"},{"title":"Modality Distribution","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/modalityDistribution","href":"/api-reference/reports/modality-distribution"},{"title":"Proctor Volume","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/proctorAccountVolume","href":"/api-reference/reports/proctor-volume"},{"title":"Service Distribution","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/serviceDistribution","href":"/api-reference/reports/service-distribution"},{"title":"Session Requests","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/sessionRequests","href":"/api-reference/reports/session-requests"},{"title":"Unscheduled Learners","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/reports/unscheduledLearners","href":"/api-reference/reports/unscheduled-learners"},{"title":"Calendar Capacity","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/proctors/{proctorSid}/reports/calendarCapacity","href":"/api-reference/reports/calendar-capacity"},{"title":"Proctor Exam Details","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/proctors/{proctorSid}/reports/examList","href":"/api-reference/reports/proctor-exam-details"},{"title":"Session Accommodations","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/proctors/{proctorSid}/session-accommodations","href":"/api-reference/reports/session-accommodations"}]},{"group":"Time Zones","pages":[{"title":"List Time Zones","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/timeZones","href":"/api-reference/time-zones/list-time-zones"}]},{"group":"User","pages":[{"title":"List Users","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/users","href":"/api-reference/user/list-users"},{"title":"Create User","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json post /v1/installs/{installSid}/users","href":"/api-reference/user/create-user"},{"title":"Update Admin User","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json put /v1/installs/{installSid}/users/{userSid}","href":"/api-reference/user/update-admin-user"},{"title":"Delete User","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json delete /v1/installs/{installSid}/users/{userSid}","href":"/api-reference/user/delete-user"},{"title":"Get User Profile","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json get /v1/installs/{installSid}/users/{userSid}/profile","href":"/api-reference/user/get-user-profile"},{"title":"Update User Profile","deprecated":null,"version":null,"openapi":"https://api.dev.smarterproctoring.com/openapi.json put /v1/installs/{installSid}/users/{userSid}/profile","href":"/api-reference/user/update-user-profile"}]}]}]},{"tab":"SmarterElements","icon":"puzzle-piece","pages":[{"title":"SmarterElements","href":"/smarter-elements/overview"}]},{"tab":"Blog","icon":"book","href":"https://www.smarterservices.com/blog"}]},"basePath":"","title":"Reporting Integrations - SmarterServices Platform","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}