Build around your community.
The group API connects your own server or automation to approved community information. Every credential belongs to one group and has only the scopes its admin selected.
Create a group credential
- Open Pilot from Telegram and choose a group where you are currently an admin.
- Open Community tools → Integrations. Choose a label, the minimum scopes you need and an expiry from 1 to 90 days.
- Confirm creation, then copy the token shown once into your server’s secret store or environment configuration.
- Send requests from your server. Keep the token out of chat messages, public code, browser bundles and URLs. Revoke it in Integrations when it is no longer needed.
Access is checked on every request.
Pilot stores a hash of the credential. Expired or revoked tokens stop working, and the creator must still be an admin of the bound group. Client-supplied group IDs do not select a different group.
Choose the operation and its scope
| Operation | Required scope | Result |
|---|---|---|
knowledge | knowledge:read | Approved FAQ entries, optionally filtered with a query. |
events | events:read | The group’s event information, without member RSVP identities. |
draft | drafts:write | An announcement draft placed in the group’s admin review queue. |
Make a request
Send JSON to the endpoint below with an Authorization header. YOUR_GROUP_TOKEN is a placeholder for your server-held credential.
POSThttps://pilot.sautilink.com/api/integrations
Search approved knowledge
curl https://pilot.sautilink.com/api/integrations \
--request POST \
--header 'Authorization: Bearer YOUR_GROUP_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"operation":"knowledge","input":{"query":"registration"}}'Create an announcement draft
{
"operation": "draft",
"requestId": "YOUR_UNIQUE_REQUEST_ID",
"input": {
"title": "Community update",
"text": "Our next community session is ready for review."
}
}Use a new random requestId of 16–80 letters, numbers, underscores or hyphens for each draft. Reuse the same ID and unchanged body when checking a retry. Changing the body with the same ID creates a conflict.
A draft is never sent automatically. An admin reviews it in Community tools → Integrations. Approval records the review; the admin deliberately chooses a separate posting or scheduling action.
Inputs and limits
knowledge | input: {} or {"query":"your question"}; query up to 200 characters. |
|---|---|
events | input: {}. |
draft | input: {"title":"Release title","text":"Announcement text"}; title up to 120 and text up to 3,500 characters. requestId is required. |
Requests | 60 requests per minute per token. |
Drafts | 20 new drafts per token in a rolling 24 hours; up to 50 pending drafts per group. |
Credentials | Expiry from 1–90 days; up to 10 active credentials per group. A current group admin can revoke a credential. |
Handle the response
A successful response uses {"ok":true,"data":...}. Errors use {"ok":false,"error":"code"}. Check the HTTP status before using the returned data.
401 | The credential is missing, invalid, expired or revoked. |
|---|---|
403 | The required scope is missing or the creator is no longer authorized. |
409 | A request conflicts with an earlier operation, is still pending, or a resource limit has been reached. |
429 | A request or draft rate limit has been reached. Pause before trying again. |
503 | Pilot could not verify authorization or complete the request. For a draft retry, preserve the same requestId and body. |
Need another integration?
Describe the system and the small set of data or actions it needs. The feedback tool is the place to propose additional scopes and connectors.