Flow
1
Create a session
Call
POST /v2/sessions with your pid, your internal clientId, and optional guildId.2
Redirect the user
Send the user to
data.verifyUrl.3
Wait for completion
Read
GET /v2/sessions/:id?wait=25 or open GET /v2/sessions/:id/stream.4
Store the result
When
status becomes completed, store result.discordId, result.robloxId, and your original clientId.Create a session
string
required
Public Identifier attached to your API key. The
pid must belong to the authenticated API key.string
required
Your internal user, session, or checkout ID. Dock returns it with the session so you can map completion back to your system.
string
Optional Discord guild ID for flows that need guild context.
string
Optional key for safely retrying session creation with the same body.
cURL
200 OK
Read a session
string
required
Session ID returned as
data.id by session creation.number
Optional long-poll wait in seconds. Maximum
25.Long-poll
Stream a session
session events. The connection closes when the session reaches a terminal state or after the stream limit.
Browser or Node SSE
Browser
EventSource cannot set custom Authorization headers. If you need API-key auth from a browser, proxy the stream through your backend.Session states
Completed result
Completed session
boolean
true when the same Discord user was previously linked to a different Roblox account in your PID dataset.string | null
Previous Roblox ID when
linkChanged is true.