Concepts
Limits and warm-up
Read effective limits, warm-up levels, and how the action ledger records usage.
Limits are calculated separately for each account and action group. The value you enter may not be the value being enforced. The mode, warm-up week, and slowdown state can also change the result.
Safe baseline limits
The table below shows baseline values before warm-up or slowdown multipliers. Spacing is the interval between actions in the same group, not the time needed to complete a job. The full table, generated from code, is in the Limits reference.
| Action group | Actions/day | Spacing, seconds |
|---|---|---|
Message strangers — stranger_message |
20 | 120–420 |
Reply — reply_message |
300 | 3–15 |
Join a group — join_group |
5 | 900–2,700 |
Leave a group — leave_group |
5 | 600–1,800 |
Scan a group — scan_group |
10 | 20–90 |
Open a profile — open_profile |
100 | 5–20 |
Search for groups — search_groups |
20 | 30–120 |
React — react |
20 | 30–180 |
Edit a profile — edit_profile |
2 | 0–0 |
View a channel — view_channel |
30 | 60–300 |
Check SpamBot — spambot_check |
2 | 600–900 |
Create a group — create_group |
3 | 600–1,800 |
Invite to a group — group_invite |
20 | 60–300 |
View a story — view_story |
200 | 3–20 |
Post a story — post_story |
3 | 1,800–5,400 |
Create a bot — create_bot |
2 | 900–2,700 |
Edit a group — edit_group |
10 | 60–300 |
Create a topic — create_topic |
20 | 30–180 |
Moderate members — moderate_member |
30 | 10–60 |
Weekly limits are 5 times daily limits. Members collected through group scans have a separate cap of 2,000 members/day. Community reference values in the configuration are used only for warnings. They are not guaranteed limits.
null, zero, and missing values
These representations mean different things:
perDay value |
Meaning |
|---|---|
| Missing field | Inherit from the layer below |
null |
Explicitly set no cap (effective only in Free) |
0 |
Block the action group |
| Positive number | Daily action cap |
The resolver prioritizes account configuration, then workspace, platform, and baseline values. In Safe, null cannot be used to remove the cap.
Free has its own rule: if neither the workspace nor the account sets a limit or spacing, that group defaults to no cap and no spacing. Platform configuration still plays a role in Safe and during slowdown.
Warm-up by week and account age
Safe uses this default curve:
| Warm-up week | Limit percentage |
|---|---|
| 1 | 15% |
| 2 | 30% |
| 3 | 50% |
| 4 | 75% |
| 5 onward | 100% |
The new age group starts at week 1; mid at week 2; old at week 3. Every 7 days from the warm-up start adds another week. This is elapsed time from the warm-up start, not calendar weeks.
Week 1 blocks messages to strangers and group invitations. Its separate daily caps are 2 group joins, 1 group creation, and 1 story post.
When Slowed down, the limit multiplier is 0.5 and spacing is 2 times the normal interval. Do not look only at baseline numbers to predict whether a job can run.
Where does usage come from?
Usage is counted only from the append-only action ledger (action_events). Records are added, not edited. The messages visible in Inbox are not the counter, and deleting displayed content does not reset usage.
An action whose execution on Telegram is uncertain still counts as a precaution. If confirmation arrives late, the system reconciles it rather than counting the same send again.
Day boundaries follow each account’s time zone, not your browser’s clock. If reading the ledger fails, the system does not treat that as zero usage.