AI text review and rewrites
Check current availability on the settings page. Choose Open AI text assistance, then Refresh AI availability to see the configured provider/model. AI actions need both an available configuration and your consent for the current request. Technical Check before launch works independently. Existing demonstration videos cover technical checks.
Dev verification on 2026-09-17 used openai / gpt-5.4-mini: a synthetic Analyze/Rewrite smoke succeeded. In the separate 12-case labelled run, 10 cases passed the automated expectations; two returned AI_INVALID_RESPONSE and were blocked. Those cases covered unsupported medical claims and a prohibited purpose disclosed in product context. These are recorded limitations of this pilot, not successful policy assessments. Language, factual fidelity and policy reasoning still require review.
Review the current Telegram Ads form
Version 1.5.0 adds a panel beside Save/Create. It uses the same assistant and per-request consent, with an explicit before/after Застосувати до форми action to replace only the current form text and recheck it. See the ad-page workflow.
Review a draft on the options page
- Connect Telegram Ads, open the toolbar popup, choose Open settings and select your connection/account.
- Set the separate Assistant origin to
https://tgads-assistant.tlmtr.dev. Choose Approve assistant access and accept Chrome's host permission. The assistant uses your personal API bearer to verify account access; it does not receive Telegram API tokens. - Enter or import your ad text. Optionally add product context and confirmed facts. These are facts you supply, not independently verified evidence.
- Choose Open AI text assistance and review the provider/model shown by the settings page, then explicitly consent to sending the text, context and facts to them. Assistant host permission alone is not AI consent. If no model is connected, these actions stay unavailable.
- Choose Analyze text for findings, or Rewrite text to request a minimal rewrite and an alternative. These are separate actions; analysis does not automatically request rewrites. Consent is consumed by each request, so confirm it again before the next action.
- Compare the original and proposed text. A usable variant can replace only the options-page draft, then runs the technical preflight again. It does not edit the Telegram Ads form, save an ad, activate a campaign or change a budget.
Changing the text, context, facts or selected connection invalidates the previous result. If the configured provider/model changes, refresh their details and consent again before retrying.
Understand the findings
The assessment separates policy risks, claims needing evidence and editorial suggestions. Each finding quotes the original ad and explains a suggested change. Quotes are checked against the visible text and mapped back to the exact original field substring using UTF-16 positions. Repeated visible quotes use their first occurrence; raw offsets and the original request fingerprint remain suitable for stale-draft checks.
Policy references come from a server-owned catalogue dated 2026-09-17, with short summaries and links to Telegram Ad Policies. The model cannot invent a rule link. Editorial advice and evidence requests may have no policy citation. An unfamiliar rule ID, invented quote or malformed response is rejected instead of appearing as a clean assessment.
The response identifies the provider/model, rule version, check time, input fingerprint and coverage. Moderation approval is always not assessed. If the problem concerns the promoted product itself, rewriting can be declined with a reason and no variants.
Custom emoji markup
With extension 1.6.0 and the updated assistant, recognized Telegram custom emoji such as  are presented to the model as ⭐. The service also uses visible text for local length, punctuation, numeric-value and inline-link checks. The numeric emoji ID and tg://emoji reference are not treated as advertising claims or destination links. Ordinary links and numbers remain subject to the same checks.
The original form text and Telegram preview requests retain the original markup. The extension displays readable emoji in findings and before/after comparisons. When a rewrite is applied, the assistant restores the original custom-emoji markup and IDs only where the mapping is unambiguous. Missing or ambiguous emoji, or custom markup invented by the model, makes the variant unusable rather than silently removing or replacing an emoji.
Only the known custom-emoji syntax with a single emoji fallback is recognized. Malformed, escaped and unrelated Markdown/HTML are not broadly stripped. The model reviews the fallback emoji; it does not inspect the custom sticker artwork. Telegram describes these as custom emoji entities associated with an ordinary emoji.
Compare rewrites carefully
Both variants show their text, explanation and character counts. A variant is marked unusable if deterministic validation fails; the service does not silently repair it.
- Numbers are compared with the original ad as a unique set. Context or confirmed facts do not authorize adding new numbers to a rewrite.
- Recognized link destinations must be preserved, including Telegram post IDs and bot parameters. This does not check whether a destination is accessible. Arbitrary bare domains and email addresses are not all recognized.
- Visible text must fit the smaller of 160 UTF-16 units and the account's text limit. Code-point and UTF-16 counts exclude recognized custom-emoji service markup; a visible emoji can still use more than one UTF-16 unit. Length is checked deterministically; the model is instructed not to guess it.
- Existing local text checks still run. The AI input has no button destination, so it cannot establish that an inline link matches the ad button. The subsequent technical preflight checks that relationship.
These checks do not prove that every fact, brand name, unit, claim or meaning is preserved. Review these yourself, including the language and tone. A number appearing in both versions may refer to different things. The AI does not inspect the destination page, channel content, targeting, media or account budgets. Telegram makes the final moderation decision.
Service access and limits
AI routes are on the separate assistant service, not the cabinet API:
| Route | Purpose |
|---|---|
GET /v1/text/capabilities | Returns availability, provider, model and policy version without invoking AI. |
POST /v1/text/analyze | Assesses wording with explicit consent. |
POST /v1/text/rewrite | Assesses wording and returns two variants when rewriting is allowed. |
POST requests need your extension session bearer and accessible connection/account. They include text, optional productContext and confirmedFacts, consent: true, and expectedProvider / expectedModel copied from capabilities. A mismatch returns HTTP 409, requiring refreshed provider details and consent. The model receives only the text, context, facts and the service's instructions/rule catalogue; it does not receive the bearer, connection/account IDs or Telegram API tokens.
Default limits are 20 attempts per credential per UTC day, 100 total per UTC day, and 2 concurrent AI requests per process. Failed provider attempts also count. Provider requests have a 25-second timeout, up to 4096 output tokens, and no automatic retries. Daily limits may be changed by the operator. These are request limits, not a guaranteed monetary spending cap.
The dev deployment is configured for 100 attempts per credential and 100 total per UTC day as of 2026-09-17. The values above are service defaults; operators can override them with ASSISTANT_AI_DAILY_PER_TOKEN and ASSISTANT_AI_DAILY_TOTAL.
AI_QUOTA_EXCEEDED means the assistant's own daily allowance was exhausted before calling the model. It does not report your OpenAI balance. Counters use UTC dates, so the next allowance starts at 00:00 UTC. Technical preflight remains available, and its existing report is kept when an AI request is rejected. Increasing the configured allowance preserves already-used attempts.
Quota storage contains counters and SHA-256 credential hashes, without ad text or cookies. It persists across restarts when the operator provides persistent storage. Provider data-handling terms are separate from the assistant's no-store responses.
An unavailable model, exhausted quota or failed provider request leaves your draft intact. Continue with technical preflight or ask your operator about model availability.