# Syncode ## API Docs - Root > Auth [Create a new account](https://apidog.syncode.anggita.org/create-a-new-account-30538470e0.md): - Root > Auth [Authenticate and get tokens](https://apidog.syncode.anggita.org/authenticate-and-get-tokens-30538471e0.md): - Root > Auth [Refresh access token](https://apidog.syncode.anggita.org/refresh-access-token-30538472e0.md): No request body. The refresh token is read from the refreshToken HTTP-only cookie sent automatically by the browser. - Root > Auth [Invalidate refresh token](https://apidog.syncode.anggita.org/invalidate-refresh-token-30538473e0.md): No request body. The refresh token is read from the refreshToken HTTP-only cookie. - Root > Auth [Change current user's password](https://apidog.syncode.anggita.org/change-current-users-password-30538474e0.md): All existing refresh tokens are revoked (forces re-login on other devices). - Root > Auth [Request password reset email](https://apidog.syncode.anggita.org/request-password-reset-email-30538475e0.md): Always returns 204 regardless of whether the email exists (prevents enumeration). If the email is registered, a reset link is sent with a 1-hour expiry token. - Root > Auth [Reset password with token](https://apidog.syncode.anggita.org/reset-password-with-token-30538476e0.md): All existing refresh tokens for the user are revoked. - Root > Users [Get current user profile](https://apidog.syncode.anggita.org/get-current-user-profile-30538477e0.md): - Root > Users [Update current user profile](https://apidog.syncode.anggita.org/update-current-user-profile-30538478e0.md): - Root > Users [Soft-delete account](https://apidog.syncode.anggita.org/soft-delete-account-30538479e0.md): Soft-deletes the account. User data is anonymized after 30 days. - Root > Users [Get public profile of another user](https://apidog.syncode.anggita.org/get-public-profile-of-another-user-30538480e0.md): - Root > Users [Upload avatar (presigned URL)](https://apidog.syncode.anggita.org/upload-avatar-presigned-url-30538481e0.md): Returns a presigned S3 PUT URL for the client to upload the avatar image directly. The presigned URL includes a Content-Length-Range condition. - Root > Users [Get usage quotas and limits](https://apidog.syncode.anggita.org/get-usage-quotas-and-limits-30538482e0.md): - Root > Users [Get current active room (for reconnection)](https://apidog.syncode.anggita.org/get-current-active-room-for-reconnection-30538483e0.md): - Root > Users [Get time-series training statistics](https://apidog.syncode.anggita.org/get-time-series-training-statistics-30538484e0.md): Training statistics over time for dashboard progress charts. No pagination — bounded by weeks parameter (max 52 entries). - Root > Rooms > Participants [List all participants in a room](https://apidog.syncode.anggita.org/list-all-participants-in-a-room-30538496e0.md): - Root > Rooms > Participants [Update participant (role, mute)](https://apidog.syncode.anggita.org/update-participant-role-mute-30538497e0.md): - Root > Rooms > Participants [Kick a participant from the room](https://apidog.syncode.anggita.org/kick-a-participant-from-the-room-30538498e0.md): - Root > Rooms > Control [Advance room phase](https://apidog.syncode.anggita.org/advance-room-phase-30538499e0.md): - Root > Rooms > Control [Select or change the problem](https://apidog.syncode.anggita.org/select-or-change-the-problem-30538500e0.md): - Root > Rooms > Control [Update room settings](https://apidog.syncode.anggita.org/update-room-settings-30538501e0.md): - Root > Rooms > Control [Lock code editor, run, and submit](https://apidog.syncode.anggita.org/lock-code-editor-run-and-submit-30538502e0.md): - Root > Rooms > Control [Unlock code editor, run, and submit](https://apidog.syncode.anggita.org/unlock-code-editor-run-and-submit-30538503e0.md): - Root > Rooms > Control [Pause the coding timer](https://apidog.syncode.anggita.org/pause-the-coding-timer-30538504e0.md): - Root > Rooms > Control [Resume the coding timer](https://apidog.syncode.anggita.org/resume-the-coding-timer-30538505e0.md): - Root > Rooms > Control [Request a role swap (peer mode)](https://apidog.syncode.anggita.org/request-a-role-swap-peer-mode-30538506e0.md): - Root > Rooms > Control [Accept or decline a role swap request](https://apidog.syncode.anggita.org/accept-or-decline-a-role-swap-request-30538507e0.md): - Root > Rooms > Media [Generate LiveKit access token](https://apidog.syncode.anggita.org/generate-livekit-access-token-30538508e0.md): - Root > Rooms > Media [Record participant's recording consent](https://apidog.syncode.anggita.org/record-participants-recording-consent-30538509e0.md): - Root > Rooms > Media [Start session recording](https://apidog.syncode.anggita.org/start-session-recording-30538510e0.md): - Root > Rooms > Media [Stop session recording](https://apidog.syncode.anggita.org/stop-session-recording-30538511e0.md): - Root > Rooms > AI [Send a message to AI interviewer](https://apidog.syncode.anggita.org/send-a-message-to-ai-interviewer-30538512e0.md): - Root > Rooms > AI [Poll AI message result](https://apidog.syncode.anggita.org/poll-ai-message-result-30538513e0.md): - Root > Rooms > AI [Get AI conversation history](https://apidog.syncode.anggita.org/get-ai-conversation-history-30538514e0.md): - Root > Rooms > AI [Request a targeted hint](https://apidog.syncode.anggita.org/request-a-targeted-hint-30538515e0.md): - Root > Rooms > AI [Get hint result](https://apidog.syncode.anggita.org/get-hint-result-30538516e0.md): - Root > Rooms > AI [Request code review](https://apidog.syncode.anggita.org/request-code-review-30538517e0.md): - Root > Rooms > AI [Get review result](https://apidog.syncode.anggita.org/get-review-result-30538518e0.md): - Root > Rooms > AI [Get cross-session weakness tracking](https://apidog.syncode.anggita.org/get-cross-session-weakness-tracking-30538519e0.md): - Root > Rooms > StaticAnalysis [Request static analysis](https://apidog.syncode.anggita.org/request-static-analysis-30538520e0.md): - Root > Rooms > StaticAnalysis [Get analysis result](https://apidog.syncode.anggita.org/get-analysis-result-30538521e0.md): - Root > Rooms > Feedback [Submit peer evaluation](https://apidog.syncode.anggita.org/submit-peer-evaluation-30538522e0.md): Submit a peer evaluation for another participant. Only available after room reaches `wrapup` or `finished` status. Each user may submit one feedback per target per room. - Root > Rooms > Feedback [Get all feedback for this room](https://apidog.syncode.anggita.org/get-all-feedback-for-this-room-30538523e0.md): Returns all feedback for the room. Data is withheld (empty array) until all expected parties have submitted to prevent bias. Returns 200 with `allSubmitted: false` in that case. - Root > Rooms > Feedback [Get my submitted feedback](https://apidog.syncode.anggita.org/get-my-submitted-feedback-30538524e0.md): Returns the current user's own submitted feedback for this room. Always visible to the submitter regardless of whether all parties have submitted. - Root > Rooms [Create a new room](https://apidog.syncode.anggita.org/create-a-new-room-30538485e0.md): - Root > Rooms [List rooms for current user](https://apidog.syncode.anggita.org/list-rooms-for-current-user-30538486e0.md): - Root > Rooms [Get room details](https://apidog.syncode.anggita.org/get-room-details-30538487e0.md): - Root > Rooms [Destroy a room (host only)](https://apidog.syncode.anggita.org/destroy-a-room-host-only-30538488e0.md): - Root > Rooms [Join a room via room code](https://apidog.syncode.anggita.org/join-a-room-via-room-code-30538489e0.md): - Root > Rooms [Leave a room](https://apidog.syncode.anggita.org/leave-a-room-30538490e0.md): - Root > Rooms [Lookup room by invite code](https://apidog.syncode.anggita.org/lookup-room-by-invite-code-30538491e0.md): - Root > Rooms [Execute code (interactive run)](https://apidog.syncode.anggita.org/execute-code-interactive-run-30538492e0.md): - Root > Rooms [Submit code against test cases](https://apidog.syncode.anggita.org/submit-code-against-test-cases-30538493e0.md): - Root > Rooms [List past runs in this room](https://apidog.syncode.anggita.org/list-past-runs-in-this-room-30538494e0.md): - Root > Rooms [List past submissions in this room](https://apidog.syncode.anggita.org/list-past-submissions-in-this-room-30538495e0.md): - Root > Problems [List and search problems](https://apidog.syncode.anggita.org/list-and-search-problems-30538525e0.md): - Root > Problems [Create a problem (admin)](https://apidog.syncode.anggita.org/create-a-problem-admin-30538526e0.md): - Root > Problems [List all available tags](https://apidog.syncode.anggita.org/list-all-available-tags-30538527e0.md): - Root > Problems [Get problem details](https://apidog.syncode.anggita.org/get-problem-details-30538528e0.md): - Root > Problems [Update a problem (admin)](https://apidog.syncode.anggita.org/update-a-problem-admin-30538529e0.md): - Root > Problems [Delete a problem (admin)](https://apidog.syncode.anggita.org/delete-a-problem-admin-30538530e0.md): - Root > Bookmarks [List bookmarked problems](https://apidog.syncode.anggita.org/list-bookmarked-problems-30538531e0.md): - Root > Bookmarks [Bookmark a problem](https://apidog.syncode.anggita.org/bookmark-a-problem-30538532e0.md): - Root > Bookmarks [Remove bookmark](https://apidog.syncode.anggita.org/remove-bookmark-30538533e0.md): - Root > Execution [Get execution result (single run)](https://apidog.syncode.anggita.org/get-execution-result-single-run-30538534e0.md): - Root > Execution [Get submission status and aggregated results](https://apidog.syncode.anggita.org/get-submission-status-and-aggregated-results-30538535e0.md): - Root > Sessions [List my session history](https://apidog.syncode.anggita.org/list-my-session-history-30538536e0.md): Returns the current user's session history with cursor-based pagination. Supports filtering by mode, date range, and problem, as well as sorting. - Root > Sessions [Get session details](https://apidog.syncode.anggita.org/get-session-details-30538537e0.md): Returns full session details including participants, runs, and submissions. - Root > Sessions [Soft-delete a session](https://apidog.syncode.anggita.org/soft-delete-a-session-30538538e0.md): Soft-deletes a session from the requesting user's history. The session data is retained for other participants. - Root > Sessions [Get training report](https://apidog.syncode.anggita.org/get-training-report-30538539e0.md): Returns the AI-generated training report for this session. Reports are generated asynchronously and may take up to 60 seconds after session ends. - Root > Sessions [Get session event timeline](https://apidog.syncode.anggita.org/get-session-event-timeline-30538540e0.md): Returns the event timeline for this session with cursor-based pagination. Events include phase changes, participant joins/leaves, code runs, AI interactions, and more. - Root > Sessions [Get code snapshots](https://apidog.syncode.anggita.org/get-code-snapshots-30538541e0.md): Returns all code snapshots for this session. No pagination — snapshots are bounded by session events (typically fewer than 20). - Root > Sessions [Get recording download URL](https://apidog.syncode.anggita.org/get-recording-download-url-30538542e0.md): Returns a presigned S3 download URL for the session recording. The URL expires in 1 hour. - Root > Sessions [Get peer feedback for this session](https://apidog.syncode.anggita.org/get-peer-feedback-for-this-session-30538543e0.md): Returns peer feedback for this session. Works after the room is destroyed. Same visibility rules as room feedback — hidden until all parties submit. - Root > Sessions [Get whiteboard export](https://apidog.syncode.anggita.org/get-whiteboard-export-30538544e0.md): Returns a presigned S3 download URL for the whiteboard export image. Captured as PNG on room finalization. The URL expires in 1 hour. - Root > Sessions [Get AI conversation history](https://apidog.syncode.anggita.org/get-ai-conversation-history-30538545e0.md): Returns the AI conversation history for an AI-mode session with cursor-based pagination. Post-session equivalent of the live room AI messages endpoint. - Root > Sessions [Compare multiple session reports](https://apidog.syncode.anggita.org/compare-multiple-session-reports-30538546e0.md): Compare reports from multiple sessions side-by-side. Returns dimension scores and trend analysis. Maximum 5 session IDs. - Root > Matchmaking [Enter the matchmaking queue](https://apidog.syncode.anggita.org/enter-the-matchmaking-queue-30538547e0.md): Adds the current user to the matchmaking queue with optional preferences. The matching algorithm runs as a periodic server-side job. - Root > Matchmaking [Cancel matchmaking](https://apidog.syncode.anggita.org/cancel-matchmaking-30538548e0.md): Removes the current user from the matchmaking queue. - Root > Matchmaking [Get current match status](https://apidog.syncode.anggita.org/get-current-match-status-30538549e0.md): Returns the current matchmaking status. When a match is found, includes opponent details and an accept/decline deadline (30s timeout). Client should poll every 2-3 seconds. - Root > Matchmaking [Accept a proposed match](https://apidog.syncode.anggita.org/accept-a-proposed-match-30538550e0.md): Accepts the proposed match. When both users accept, a room is auto-created and both are joined. - Root > Matchmaking [Decline a proposed match](https://apidog.syncode.anggita.org/decline-a-proposed-match-30538551e0.md): Declines the proposed match. Both users are returned to the matchmaking queue. - Root > Admin [System overview stats](https://apidog.syncode.anggita.org/system-overview-stats-30538552e0.md): Returns aggregated system statistics for the admin dashboard. Includes user, room, problem, execution, AI, and system metrics. Fixed time windows: today and last 7 days. - Root > Admin [List all users](https://apidog.syncode.anggita.org/list-all-users-30538553e0.md): Returns a paginated list of all users with search, role, and ban status filtering. - Root > Admin [Get user details (admin view)](https://apidog.syncode.anggita.org/get-user-details-admin-view-30538554e0.md): Returns detailed user information including stats and active room status. - Root > Admin [Update user (ban, role change)](https://apidog.syncode.anggita.org/update-user-ban-role-change-30538555e0.md): Updates a user's role or ban status. When banning a user, `bannedReason` is required. Banning immediately invalidates all refresh tokens. - Root > Admin [List all rooms](https://apidog.syncode.anggita.org/list-all-rooms-30538556e0.md): Returns a paginated list of all rooms with status and mode filtering. - Root > Admin [Force-close a room](https://apidog.syncode.anggita.org/force-close-a-room-30538557e0.md): Force-closes a room regardless of status. Triggers the same session finalization pipeline as a normal room finish. - Root > Admin [Query audit logs](https://apidog.syncode.anggita.org/query-audit-logs-30538558e0.md): Returns a paginated list of audit log entries. Supports filtering by action type, actor, target, and date range. - Root > Health [Deep health check](https://apidog.syncode.anggita.org/deep-health-check-30538559e0.md): Returns the health status of all services. Always returns 200. Individual service failures are reported as `fail` with overall status `degraded`. - Root > Documents [Create a Yjs document](https://apidog.syncode.anggita.org/create-a-yjs-document-30540099e0.md): Initializes a new Yjs document for a room. Called by the control-plane when a room - Root > Documents [Destroy a Yjs document](https://apidog.syncode.anggita.org/destroy-a-yjs-document-30540100e0.md): Tears down the Yjs document for a room. Called by the control-plane when a room - Root > Documents [Kick a user from the document](https://apidog.syncode.anggita.org/kick-a-user-from-the-document-30540101e0.md): Forcibly disconnects a user's WebSocket connection to the Yjs document. - Root > Health [Health check](https://apidog.syncode.anggita.org/health-check-30540102e0.md): Returns service health status. Used by the control-plane to monitor collab-plane - Root > Callbacks [[Callback] Snapshot ready](https://apidog.syncode.anggita.org/callback-snapshot-ready-30540103e0.md): **Collab-plane → Control-plane callback.** - Root > Callbacks [[Callback] User disconnected](https://apidog.syncode.anggita.org/callback-user-disconnected-30540104e0.md): **Collab-plane → Control-plane callback.** ## Schemas - Root [RoomStatus](https://apidog.syncode.anggita.org/roomstatus-13444255d0.md): - Root [RoomRole](https://apidog.syncode.anggita.org/roomrole-13444256d0.md): - Root [RoomMode](https://apidog.syncode.anggita.org/roommode-13444257d0.md): - Root [SupportedLanguage](https://apidog.syncode.anggita.org/supportedlanguage-13444258d0.md): - Root [Difficulty](https://apidog.syncode.anggita.org/difficulty-13444259d0.md): - Root [UserRole](https://apidog.syncode.anggita.org/userrole-13444260d0.md): - Root [ErrorResponse](https://apidog.syncode.anggita.org/errorresponse-13444261d0.md): - Root [Pagination](https://apidog.syncode.anggita.org/pagination-13444262d0.md): - Root [UserProfile](https://apidog.syncode.anggita.org/userprofile-13444263d0.md): - Root [PublicProfile](https://apidog.syncode.anggita.org/publicprofile-13444264d0.md): - Root [RoomConfig](https://apidog.syncode.anggita.org/roomconfig-13444265d0.md): - Root [RoomParticipantSummary](https://apidog.syncode.anggita.org/roomparticipantsummary-13444266d0.md): - Root [RoomSummary](https://apidog.syncode.anggita.org/roomsummary-13444267d0.md): - Root [RoomDetail](https://apidog.syncode.anggita.org/roomdetail-13444268d0.md): - Root [RoomPreview](https://apidog.syncode.anggita.org/roompreview-13444269d0.md): - Root [ProblemSummary](https://apidog.syncode.anggita.org/problemsummary-13444270d0.md): - Root [ProblemDetail](https://apidog.syncode.anggita.org/problemdetail-13444271d0.md): - Root [ProblemExample](https://apidog.syncode.anggita.org/problemexample-13444272d0.md): - Root [TestCase](https://apidog.syncode.anggita.org/testcase-13444273d0.md): - Root [TagInfo](https://apidog.syncode.anggita.org/taginfo-13444274d0.md): - Root [AiMessage](https://apidog.syncode.anggita.org/aimessage-13444275d0.md): - Root [WeaknessEntry](https://apidog.syncode.anggita.org/weaknessentry-13444276d0.md): - Root [PeerFeedbackRatings](https://apidog.syncode.anggita.org/peerfeedbackratings-13444277d0.md): - Root [PeerFeedbackEntry](https://apidog.syncode.anggita.org/peerfeedbackentry-13444278d0.md): - Root [SessionSummary](https://apidog.syncode.anggita.org/sessionsummary-13444279d0.md): - Root [SessionDetail](https://apidog.syncode.anggita.org/sessiondetail-13444280d0.md): - Root [SessionParticipant](https://apidog.syncode.anggita.org/sessionparticipant-13444281d0.md): - Root [SessionEvent](https://apidog.syncode.anggita.org/sessionevent-13444282d0.md): - Root [CodeSnapshot](https://apidog.syncode.anggita.org/codesnapshot-13444283d0.md): - Root [Evidence](https://apidog.syncode.anggita.org/evidence-13444284d0.md): - Root [ReportDimension](https://apidog.syncode.anggita.org/reportdimension-13444285d0.md): - Root [AdminDashboard](https://apidog.syncode.anggita.org/admindashboard-13444286d0.md): - Root [AdminUserEntry](https://apidog.syncode.anggita.org/adminuserentry-13444287d0.md): - Root [AdminUserDetail](https://apidog.syncode.anggita.org/adminuserdetail-13444288d0.md): - Root [AdminRoomEntry](https://apidog.syncode.anggita.org/adminroomentry-13444289d0.md): - Root [AuditLogEntry](https://apidog.syncode.anggita.org/auditlogentry-13444290d0.md): - Root [HealthResponse](https://apidog.syncode.anggita.org/healthresponse-13444291d0.md): - Root [MatchOpponent](https://apidog.syncode.anggita.org/matchopponent-13444292d0.md): - Root [CreateDocumentRequest](https://apidog.syncode.anggita.org/createdocumentrequest-13444549d0.md): - Root [CreateDocumentResponse](https://apidog.syncode.anggita.org/createdocumentresponse-13444550d0.md): - Root [DestroyDocumentResponse](https://apidog.syncode.anggita.org/destroydocumentresponse-13444551d0.md): - Root [KickUserRequest](https://apidog.syncode.anggita.org/kickuserrequest-13444552d0.md): - Root [KickUserResponse](https://apidog.syncode.anggita.org/kickuserresponse-13444553d0.md): - Root [SnapshotReadyPayload](https://apidog.syncode.anggita.org/snapshotreadypayload-13444554d0.md): - Root [UserDisconnectedPayload](https://apidog.syncode.anggita.org/userdisconnectedpayload-13444555d0.md): - Root [CallbackAckResponse](https://apidog.syncode.anggita.org/callbackackresponse-13444556d0.md): - Root [ErrorResponse](https://apidog.syncode.anggita.org/errorresponse-13444557d0.md):