# Cybr Labs > Documentation for integrating Cybr Labs hands-on cybersecurity labs into your platform. > ## Agent Instructions > These docs cover learner integrations through Hosted Lab Pages, the SDK, and the REST API. Content management is outside this integration scope. > Read the setup page for the chosen approach before implementing it. Keep organization API keys and hosted mint secrets on the server. > The public SDK is coming soon. Check the SDK quickstart for current availability. Do not invent installation commands or direct readers to a private package. > Cybr provides completion tracking and CTF verification. The integrating platform decides whether to award points. - [Cybr Labs](https://docs.cybr.com/index.md): Implement Cybr Labs how you like: with Hosted Lab Pages, the SDK, or the REST API. - [How it works](https://docs.cybr.com/getting-started/how-it-works.md): Understand labs, deployments, learner identities, and the API boundary. - [Keys and access](https://docs.cybr.com/getting-started/api-keys.md): Understand the credentials for Hosted Lab Pages, the SDK, and the REST API. - [Hosted Lab Pages](https://docs.cybr.com/hosted/overview.md): Give learners a Cybr-provided lab interface with a signed launch-link integration. - [Hosted integration](https://docs.cybr.com/hosted/integration.md): Create signed launch links, embed a launch card, and receive browser notifications. - [SDK quickstart](https://docs.cybr.com/getting-started/quickstart.md): Preview the SDK integration flow and check public package availability. - [Launching labs](https://docs.cybr.com/guides/launching-labs.md): Launch, restore, and end a learner deployment. - [Lab lifecycle](https://docs.cybr.com/guides/lab-lifecycle.md): Understand readiness, deployment runs, expiration, and teardown. - [Learners and membership](https://docs.cybr.com/guides/learners-and-membership.md): Support signed-in users and guests with stable learner IDs. - [Lab guides and CTF](https://docs.cybr.com/guides/lab-guides-and-ctf.md): Show lab content and submit answers through the SDK. - [Completion and CTF verification](https://docs.cybr.com/guides/completion-and-scoring.md): Verify CTF flags, record learner completion, and read completion status. - [Browser terminals](https://docs.cybr.com/guides/terminals.md): Create a terminal session on the server and connect from your browser interface. - [Error handling](https://docs.cybr.com/guides/error-handling.md): Handle retries, unknown outcomes, and safe browser responses. - [Rate limits and concurrency](https://docs.cybr.com/guides/rate-limits.md): Handle learner launch limits and organization capacity. - [Security](https://docs.cybr.com/guides/security.md): Keep organization keys private and scope actions to the learner session. - [Client configuration](https://docs.cybr.com/reference/client.md): Create the server SDK client and understand its retry rules. - [Labs and deployments](https://docs.cybr.com/reference/labs-and-deployments.md): Named SDK methods, request fields, and matching REST operations. - [Terminal helper](https://docs.cybr.com/reference/terminal.md): Server session methods and the browser terminal controller. - [SDK errors](https://docs.cybr.com/reference/errors.md): Error categories and diagnostic fields. - [REST API](https://docs.cybr.com/api-reference/overview.md): Use the same Cybr Labs API through direct HTTP requests. - [REST quickstart](https://docs.cybr.com/api-reference/quickstart.md): Launch a lab from your application with direct API requests. - [List labs](https://docs.cybr.com/api-reference/list-labs.md): Returns the organization catalog with its customizations. SDK: `labs.list()`. - [Get lab](https://docs.cybr.com/api-reference/get-lab.md): Returns public content and optional learner-specific completion. SDK: `labs.get(labId, { learnerId })`. - [Launch deployment](https://docs.cybr.com/api-reference/launch-deployment.md): Starts a lab environment. Acceptance does not mean readiness. REST requires membership. SDK: `deployments.launch()`. - [Get deployment status](https://docs.cybr.com/api-reference/get-deployment.md): Returns deployment readiness. Status complete does not mean learner completion. SDK: `deployments.getStatus()`. - [Get deployment runs](https://docs.cybr.com/api-reference/get-runs.md): Returns build and teardown runs. An unknown deployment or one outside organization access returns an empty array. Run output can contain secrets. SDK: `deployments.getRuns()`. - [End deployment](https://docs.cybr.com/api-reference/end-deployment.md): Starts teardown. It does not record learner completion. SDK: `deployments.destroy()`. - [Create terminal session](https://docs.cybr.com/api-reference/create-terminal-session.md): Creates temporary WebSocket credentials. Keep the response private and request fresh credentials for each reconnect. SDK: `deployments.createTerminalSession()`. - [Submit flag](https://docs.cybr.com/api-reference/submit-flag.md): Grades the flag. A correct result records completion. Incorrect verdicts also use HTTP 200. SDK: `labs.submitFlag()`. - [Grade guide answer](https://docs.cybr.com/api-reference/grade-answer.md): Grades one knowledge check. It does not record lab completion. The learnerId field is accepted but currently unused. SDK: `labs.submitGuideAnswer()`. - [Record completion](https://docs.cybr.com/api-reference/record-completion.md): Records application-reported completion. Existing completion returns the same response. This is not a unique scoring event. SDK: `labs.markCompleted()`. - [List comments](https://docs.cybr.com/api-reference/list-comments.md): Returns organization-scoped discussion threads and replies. SDK: `labs.listComments()`. - [Create comment](https://docs.cybr.com/api-reference/create-comment.md): Creates a top-level comment or a reply to a top-level comment. SDK: `labs.createComment()`. - [Delete comment](https://docs.cybr.com/api-reference/delete-comment.md): Deletes a comment owned by the current learner. A top-level deletion also removes its replies. SDK: `labs.deleteComment()`. - [Terminal WebSocket protocol](https://docs.cybr.com/api-reference/terminal-protocol.md): Connect a direct WebSocket client with temporary terminal credentials. ## OpenAPI Specs - [openapi](/assets/openapi.json)