GREPPOOTALK DEVELOPERS
GreppooTalk REST API
Create meeting links, integrate authenticated joins, inspect active meetings, and end meetings from your backend.
Open the complete API reference ↗The reference includes request fields, response schemas, and an interactive request console. These endpoints affect the live service when executed. Availability is controlled by the server administrator.
Authentication
Base URL: https://www.greppootalk.com/api/v1. Ask your administrator for the server API key
(configured as API_KEY_SECRET). Send the raw key in the authorization header,
without a Bearer prefix. Keep it in your backend environment; never ship it in website JavaScript or a
mobile app. Send JSON request bodies with Content-Type: application/json.
Create a meeting link
Set GREPPOOTALK_API_KEY in your server environment, then run:
curl --request POST 'https://www.greppootalk.com/api/v1/meeting' \
--header "authorization: $GREPPOOTALK_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
{ "meeting": "https://www.greppootalk.com/join/generated-room-id" }
This generates a shareable URL. It does not start a call or reserve an active room; participants start the meeting by opening the URL.
Endpoint directory
| Method & path | Purpose / response |
|---|---|
| GET /stats |
Returns timestamp, totalRooms, and totalUsers.
|
| GET /meetings |
Returns meetings: active room IDs and peer details such as name, presenter,
audio/video/screen state, OS and browser.
|
| POST /meeting |
Returns meeting, a newly generated meeting URL. No body fields required.
|
| POST /join |
Returns join, a URL containing the requested room and participant options.
|
| POST /token |
Returns token, a signed token containing encrypted participant credentials.
|
| DELETE /meeting/{room} |
Ends an active room. Optional JSON body:
{"redirect":"https://www.greppoo.com"}. Returns success,
message, and room on success. Disconnects every participant.
|
| GET /activeRooms |
Public listing, available only when SHOW_ACTIVE_ROOMS is enabled. Returns
activeRooms with id, peers, and
join. Rate limited; no API key required.
|
Configure a participant join link
curl --request POST 'https://www.greppootalk.com/api/v1/join' \
--header "authorization: $GREPPOOTALK_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"room":"team-demo","name":"Alex","audio":true,"video":true,"screen":false,"notify":false}'
Response: {"join":"https://www.greppootalk.com/join?room=team-demo&..."}. Open that URL
in a browser or distribute it to the intended participant. Camera and microphone permissions are still
required.
| Field | Type / behavior |
|---|---|
| room | String room name; generated if omitted. Use a simple URL-safe name. |
| roomPassword | String password, or false to disable. |
| name | String display name; generated if omitted. |
| avatar | Avatar URL string, or false. |
| audio, video, screen | Booleans controlling requested initial media state; default false. Browser support, permission and moderator rules still apply. |
| chat, hide, notify | Booleans: open chat, hide own tile, or show the sharing prompt on join; default false. |
| duration | String in HH:MM:SS format or "unlimited" (default). |
| token | Optional object containing username, password, presenter and expire. The API creates a signed token and appends it to the join URL. |
Authenticated participants
For deployments with host/user authentication, supply credentials recognized by that deployment.
presenter requests a role; host and room authorization rules still apply.
expire is a token lifetime such as "1h". Treat generated tokens and
authenticated join URLs as credentials.
POST /api/v1/token
authorization: YOUR_SERVER_API_KEY
Content-Type: application/json
{
"username": "configured-user",
"password": "configured-user-password",
"presenter": false,
"expire": "1h"
}
Use the returned token in a direct /join?...&token=... URL. The
token field of the POST /join body instead takes the credentials object, not an already
encoded token.
Call from a Node.js backend
const response = await fetch('https://www.greppootalk.com/api/v1/join', {
method: 'POST',
headers: {
authorization: process.env.GREPPOOTALK_API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ room: 'team-demo', name: 'Alex', audio: true, video: true })
});
if (!response.ok) throw new Error(`GreppooTalk API: ${response.status}`);
const { join } = await response.json();
Errors and troubleshooting
- 403: missing/incorrect authorization, endpoint disabled, or active-room listing disabled. Check the response message and administrator settings.
- 404: DELETE requested a room that is not active. URL-encode the room path segment.
- 400: malformed JSON or invalid request data; check the reference for accepted fields.
- 429: rate limit reached. Wait before retrying and respect any Retry-After header.
- 500: server failure. Check server logs; do not blindly retry a destructive request.
- A generated link does not prove a call can connect. HTTPS, media ports, device permissions and network routing must all be configured.
Support: support@greppootalk.com · www.greppoo.com
Back to GreppooTalk