mirror of
https://github.com/m1k1o/neko.git
synced 2025-04-28 18:06:20 +02:00
.. | ||
schemas | ||
batch.api.mdx | ||
broadcast-start.api.mdx | ||
broadcast-status.api.mdx | ||
broadcast-stop.api.mdx | ||
clipboard-get-image.api.mdx | ||
clipboard-get-text.api.mdx | ||
clipboard-set-text.api.mdx | ||
control-give.api.mdx | ||
control-release.api.mdx | ||
control-request.api.mdx | ||
control-reset.api.mdx | ||
control-status.api.mdx | ||
control-take.api.mdx | ||
current-session.tag.mdx | ||
general.tag.mdx | ||
healthcheck.api.mdx | ||
keyboard-map-get.api.mdx | ||
keyboard-map-set.api.mdx | ||
keyboard-modifiers-get.api.mdx | ||
keyboard-modifiers-set.api.mdx | ||
login.api.mdx | ||
logout.api.mdx | ||
members-bulk-delete.api.mdx | ||
members-bulk-update.api.mdx | ||
members-create.api.mdx | ||
members-get-profile.api.mdx | ||
members-list.api.mdx | ||
members-remove.api.mdx | ||
members-update-password.api.mdx | ||
members-update-profile.api.mdx | ||
members.tag.mdx | ||
metrics.api.mdx | ||
profile.api.mdx | ||
README.mdx | ||
room-broadcast.tag.mdx | ||
room-clipboard.tag.mdx | ||
room-control.tag.mdx | ||
room-keyboard.tag.mdx | ||
room-screen.tag.mdx | ||
room-settings.tag.mdx | ||
room-upload.tag.mdx | ||
screen-cast-image.api.mdx | ||
screen-configuration-change.api.mdx | ||
screen-configuration.api.mdx | ||
screen-configurations-list.api.mdx | ||
screen-shot-image.api.mdx | ||
session-disconnect.api.mdx | ||
session-get.api.mdx | ||
session-remove.api.mdx | ||
sessions-get.api.mdx | ||
sessions.tag.mdx | ||
settings-get.api.mdx | ||
settings-set.api.mdx | ||
sidebar.ts | ||
stats.api.mdx | ||
upload-dialog-close.api.mdx | ||
upload-dialog.api.mdx | ||
upload-drop.api.mdx | ||
whoami.api.mdx |
--- id: neko-api title: "Neko API Reference" description: "Neko uses WebRTC and WebSocket besides REST API to provide real-time video streaming, interactive collaboration, and remote desktop functionality." sidebar_label: Introduction sidebar_position: 0 hide_title: true custom_edit_url: null --- import ApiLogo from "@theme/ApiLogo"; import Heading from "@theme/Heading"; import SchemaTabs from "@theme/SchemaTabs"; import TabItem from "@theme/TabItem"; import Export from "@theme/ApiExplorer/Export"; <Export url={"https://raw.githubusercontent.com/m1k1o/neko/refs/heads/master/server/openapi.yaml"} proxy={undefined} > </Export> <Heading as={"h1"} className={"openapi__heading"} children={"Neko API Reference"} > </Heading> Neko uses WebRTC and WebSocket besides REST API to provide real-time video streaming, interactive collaboration, and remote desktop functionality. ### Core Technologies - **Video Streaming over WebRTC** - Neko leverages **WebRTC** for real-time, low-latency, high-quality video and audio streaming. - Keyboard and mouse events are transmitted over the same WebRTC connection for seamless interaction. - **Real-Time Signaling and Communication over WebSocket** - **WebSocket** is used for sSignaling in WebRTC (e.g., session establishment, ICE candidate exchange). - Live chat, session updates, and keyboard/mouse fallback are handled over WebSocket. - **REST API for Everything Else** - **Authentication & Session Management** - Secure user authentication and session handling. - **Room and User Management** - Creating, modifying, and controlling user access to rooms. - **Desktop Controls** - Adjusting screen configurations, managing keyboard and mouse events. - **System Health & Metrics** - Retrieving system health checks and operational insights. ### How It All Works Together 1. **WebRTC** handles media streaming for **real-time video, audio and data**. 2. **WebSocket** ensures a **persistent, bidirectional** connection for low-latency interactions. 3. **REST API** provides **fine-grained control** over user access, and room configuration. For more details, refer to the full API documentation. <div style={{"marginBottom":"2rem"}} > <Heading id={"authentication"} as={"h2"} className={"openapi-tabs__heading"} children={"Authentication"} > </Heading><SchemaTabs className={"openapi-tabs__security-schemes"} > <TabItem label={"API Key: CookieAuth"} value={"CookieAuth"} > Authentication using a session cookie. <div> <table> <tbody> <tr> <th> Security Scheme Type: </th><td> apiKey </td> </tr><tr> <th> Header parameter name: </th><td> NEKO_SESSION </td> </tr> </tbody> </table> </div> </TabItem><TabItem label={"HTTP: Bearer Auth"} value={"BearerAuth"} > Authentication using a Bearer token. <div> <table> <tbody> <tr> <th> Security Scheme Type: </th><td> http </td> </tr><tr> <th> HTTP Authorization Scheme: </th><td> bearer </td> </tr> </tbody> </table> </div> </TabItem><TabItem label={"API Key: TokenAuth"} value={"TokenAuth"} > Authentication using a token passed as a query parameter. <div> <table> <tbody> <tr> <th> Security Scheme Type: </th><td> apiKey </td> </tr><tr> <th> Header parameter name: </th><td> token </td> </tr> </tbody> </table> </div> </TabItem> </SchemaTabs> </div><div style={{"marginBottom":"var(--ifm-paragraph-margin-bottom)"}} > <h3 style={{"marginBottom":"0.25rem"}} > License </h3><a href={"http://www.apache.org/licenses/LICENSE-2.0.html"} > Apache 2.0 </a> </div>