API Reference
Realtime
Notifications, server-sent events, and socket metadata routes.
Lists current-user notifications.
Authentication
Session or actor-linked API key.
Modes: logged-in user, API key
API key: users:read
Permissions or Scopes
Request Headers
| Header | Value | Description |
|---|---|---|
| Authorization | Bearer prapi_your_key | Preferred API-key header. Never send API keys in URLs. |
| x-api-key | prapi_your_key | Alternative API-key header. |
| x-api-token | prapi_your_key | Legacy API-key header kept for backward compatibility. |
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| No path, query, or body parameters. | |||
Validation
- Request parameters and JSON payloads are validated server-side.
- Mutating session-authenticated requests require CSRF validation.
- Permission checks run before privileged data is returned or modified.
Errors
400 Invalid input, missing parameters, or validation failure.
401 Authentication is missing or invalid.
403 The authenticated principal lacks the required permission or scope.
404 The requested resource was not found.
500 Unexpected server error.
Rate Limits
No endpoint-specific public rate limit is documented. Authentication and abuse controls still apply.
Examples and Try It
Request examples, sample output, and the live tester below apply only to this endpoint.
cURL
curl -H "Authorization: Bearer prapi_your_key" "https://playroom.date/api/notifications"JavaScript / TypeScript
const response = await fetch('https://playroom.date/api/notifications', {
method: 'GET',
headers: {
"Authorization": "Bearer prapi_your_key"
},
});
const data = await response.json();Python
import requests
headers = {"Authorization": "Bearer prapi_your_key"}
response = requests.get('https://playroom.date/api/notifications', headers=headers)
print(response.json())Example Output
{
"success": true,
"data": {
"notifications": []
},
"error": null
}Try It
Checking sign-in state...
This request has no editable path, query, or body fields.
Request
GET /api/notificationscurl Equivalent
curl "https://playroom.date/api/notifications"Sample Response Body
{
"success": true,
"data": {
"notifications": []
},
"error": null
}Marks notifications read or updates notification state.
Authentication
Session + CSRF or actor-linked API key.
Modes: logged-in user, API key
API key: users:write
Permissions or Scopes
Request Headers
| Header | Value | Description |
|---|---|---|
| Cookie | session=<session_cookie> | Session cookie set by the login flow. |
| x-csrf-token | <csrfToken> | Required for mutating session-authenticated requests. |
| Content-Type | application/json | Required when sending a JSON body. |
| Authorization | Bearer prapi_your_key | Preferred API-key header. Never send API keys in URLs. |
| x-api-key | prapi_your_key | Alternative API-key header. |
| x-api-token | prapi_your_key | Legacy API-key header kept for backward compatibility. |
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| id | body | No | Notification ID. |
| read | body | No | Read state. |
Validation
- Request parameters and JSON payloads are validated server-side.
- Mutating session-authenticated requests require CSRF validation.
- Permission checks run before privileged data is returned or modified.
Errors
400 Invalid input, missing parameters, or validation failure.
401 Authentication is missing or invalid.
403 The authenticated principal lacks the required permission or scope.
404 The requested resource was not found.
500 Unexpected server error.
Rate Limits
No endpoint-specific public rate limit is documented. Authentication and abuse controls still apply.
Examples and Try It
Request examples, sample output, and the live tester below apply only to this endpoint.
cURL
curl -X PUT -H "Authorization: Bearer prapi_your_key" -H "Content-Type: application/json" -d '{"id":"resource_id","read":true}' "https://playroom.date/api/notifications"JavaScript / TypeScript
const response = await fetch('https://playroom.date/api/notifications', {
method: 'PUT',
headers: {
"Authorization": "Bearer prapi_your_key",
"Content-Type": "application/json"
},
body: JSON.stringify({
"id": "resource_id",
"read": true
}),
});
const data = await response.json();Python
import requests
headers = {"Authorization": "Bearer prapi_your_key"}
response = requests.put('https://playroom.date/api/notifications', headers=headers, json={"id": "resource_id", "read": True})
print(response.json())Example Output
{
"success": true,
"data": {
"notifications": []
},
"error": null
}Try It
Checking sign-in state...
Request
PUT /api/notificationsRequest Payload
{}curl Equivalent
curl -X PUT -H "Content-Type: application/json" -d '{}' "https://playroom.date/api/notifications"Sample Response Body
{
"success": true,
"data": {
"notifications": []
},
"error": null
}Returns realtime transport guidance for the WebSocket stream.
Authentication
Public metadata.
Modes: public
Permissions or Scopes
Request Headers
| Header | Value | Description |
|---|---|---|
| No special headers. | ||
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| No path, query, or body parameters. | |||
Validation
- Request parameters and JSON payloads are validated server-side.
- Mutating session-authenticated requests require CSRF validation.
- Permission checks run before privileged data is returned or modified.
Errors
400 Invalid input, missing parameters, or validation failure.
401 Authentication is missing or invalid.
403 The authenticated principal lacks the required permission or scope.
404 The requested resource was not found.
500 Unexpected server error.
Rate Limits
No endpoint-specific public rate limit is documented. Authentication and abuse controls still apply.
Examples and Try It
Request examples, sample output, and the live tester below apply only to this endpoint.
cURL
curl "https://playroom.date/api/realtime/subscribe"JavaScript / TypeScript
const response = await fetch('https://playroom.date/api/realtime/subscribe', {
method: 'GET',
});
const data = await response.json();Python
import requests
headers = {}
response = requests.get('https://playroom.date/api/realtime/subscribe', headers=headers)
print(response.json())Example Output
{
"success": true,
"data": {
"stream": []
},
"error": null
}Try It
Checking sign-in state...
This request has no editable path, query, or body fields.
Request
GET /api/realtime/subscribecurl Equivalent
curl "https://playroom.date/api/realtime/subscribe"Sample Response Body
{
"success": true,
"data": {
"stream": []
},
"error": null
}Returns metadata for the realtime channel endpoint.
Authentication
Public metadata.
Modes: public
Permissions or Scopes
Request Headers
| Header | Value | Description |
|---|---|---|
| No special headers. | ||
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| No path, query, or body parameters. | |||
Validation
- Request parameters and JSON payloads are validated server-side.
- Mutating session-authenticated requests require CSRF validation.
- Permission checks run before privileged data is returned or modified.
Errors
400 Invalid input, missing parameters, or validation failure.
401 Authentication is missing or invalid.
403 The authenticated principal lacks the required permission or scope.
404 The requested resource was not found.
500 Unexpected server error.
Rate Limits
No endpoint-specific public rate limit is documented. Authentication and abuse controls still apply.
Examples and Try It
Request examples, sample output, and the live tester below apply only to this endpoint.
cURL
curl "https://playroom.date/api/socket"JavaScript / TypeScript
const response = await fetch('https://playroom.date/api/socket', {
method: 'GET',
});
const data = await response.json();Python
import requests
headers = {}
response = requests.get('https://playroom.date/api/socket', headers=headers)
print(response.json())Example Output
{
"success": true,
"data": {
"socket": []
},
"error": null
}Try It
Checking sign-in state...
This request has no editable path, query, or body fields.
Request
GET /api/socketcurl Equivalent
curl "https://playroom.date/api/socket"Sample Response Body
{
"success": true,
"data": {
"socket": []
},
"error": null
}