What TidyKB reads, and what it never reads
The exact Freshdesk endpoints TidyKB calls, what it stores about your help center, what it sends to a translation model, and how long any of it is kept.
Updated
TidyKB is a knowledge-base tool, so it calls knowledge-base endpoints and nothing else. That is not a promise in a policy document; it is a list in the code, checked before every single request, with a test that fails the build if a client method could ever reach anything outside it.
This page is the inventory: what we call, what we keep, what a model sees, and for how long.
The endpoint allowlist
Every request TidyKB makes to your Freshdesk account is matched against this list first. A request that is not on it is refused inside TidyKB before it goes out.
| Method | Path under /api/v2 | Why |
|---|---|---|
| GET | /agents/me | Check the key is a real agent key |
| GET | /settings/helpdesk | Your portal languages and the primary one |
| GET | /solutions/categories[/{lang}] | Walk the knowledge base |
| GET | /solutions/categories/{id}/folders[/{lang}] | Walk the knowledge base |
| GET | /solutions/folders/{id}/subfolders | Walk the knowledge base |
| GET | /solutions/folders/{id}/articles[/{lang}] | List articles |
| GET | /solutions/articles/{id}[/{lang}] | Read one article |
| PUT | /solutions/articles/{id}[/{lang}] | Apply a confirmed change, or undo one |
| POST | /solutions/articles/{id}/{lang} | Create a translation as a draft |
There is no endpoint for tickets, conversations, contacts, companies, automations, agents other than me, or account settings. There is also no delete endpoint of any kind — TidyKB cannot delete an article, a folder or a translation even if something went badly wrong.
The two write endpoints are used only after you have previewed a change and confirmed it, and only with a second key you add on purpose. See find & replace and translation sync.
The free audit needs no key at all
The public audit fetches your public help center the way a reader's browser would. It never touches the Freshdesk API, so it sees exactly what an anonymous visitor sees: published articles in public folders, and nothing else.
What a scan stores
A scan keeps a working copy of your knowledge base so that the next scan can tell what changed, and so the issue table has something to show without calling Freshdesk again:
- Articles: id, language, title, the article HTML, published or draft, the last-updated timestamp Freshdesk reports, and a content hash.
- Structure: categories, folders and subfolders, with their names and article counts.
- Findings: one row per issue, with what it is about and when it was first seen.
- Link results: for each URL your articles link to, what answered, and when it was last checked.
- Translation baselines: the hash of a primary article at the moment one of its translations was last in sync with it.
- Snapshots: for a change you applied, exactly what the article held before and after, which is what undo puts back.
Article bodies are in there, because the checks and the diffs are about the text. Nothing about your tickets or your customers ever enters TidyKB, because nothing ever asks Freshdesk for it.
Links we fetch outside Freshdesk
To tell you a link is broken, we have to try it. The link checker requests the URLs your articles point at, signed out, as an ordinary visitor, and records what came back: ok, broken, unknown — anything that proves nothing, such as a 401, a 403, a 429, a 5xx, a timeout or a sign-in wall — or skipped, for addresses we refuse to fetch at all.
Only broken becomes an issue. Everything else is listed separately under "Links we couldn't check", with the reason, and is never counted against your score.
What a translation model sees
Only when you ask for a translation batch, and only for the articles in it:
- The prose of the article, cut into chunks, with every tag, inline code element, comment, template variable and bare URL replaced by a numbered placeholder before it is sent.
- The article's title.
- Your glossary and style note for that language pair.
Never sent: pre and script blocks, embeds and iframes, SVG and math, attribute text such as alt and title, or anything at all from another article. A scan calls no model. Model calls go through one internal client, which records what was spent against your workspace so the word quota is measurable.
Your API keys
- Sealed before storage, with a public key that is all the web app holds. The web app can seal a key; it cannot open one. Only the worker that talks to Freshdesk holds the private half.
- Shown only as the last four characters, anywhere in the app.
- Never written to a log, an error report or the account export. Error reports are scrubbed of request bodies, cookies, query strings and authorization headers before they leave.
- Deleted immediately when you disconnect — both the read-only key and the edit key, in the same operation.
How long we keep it
| What | How long |
|---|---|
| The working copy after you disconnect | 30 days, then deleted automatically |
| Snapshots and the change record undo needs | 90 days from the last time that record changed |
| Everything, on request | Gone at once, via "Delete my data" on the connection page |
The 30-day window exists so that an accidental disconnect does not destroy an undo you still expect. If you would rather not wait, "Delete my data" removes the connection and everything under it immediately.
You can also export what TidyKB holds about you from the account page: connections and their status, audit history, scan and issue counts, job summaries, glossaries and settings, as JSON. It deliberately contains no key material, no article HTML, no drafts and no snapshots.
Freshdesk and Freddy are trademarks of Freshworks Inc. TidyKB is an independent product and is not affiliated with, endorsed or sponsored by any company named on this page.
FAQ
Questions, answered
Do you read our tickets?
No. TidyKB has a list of Freshdesk endpoints it is allowed to call, all of them under Solutions plus the agent and helpdesk-settings calls the connection test needs. The list is checked before every single request, and a test asserts that no client method can reach tickets, contacts or companies. A request outside the list fails inside TidyKB before it is sent.
Do you read draft articles?
A scan reads them, because Freshdesk returns them with the rest of the folder and because a draft left for months is worth telling you about. The checks skip drafts otherwise, and a draft never affects the health score. The only finding about a draft is “Draft never published”, for a draft untouched for more than 90 days.
What do you send to an AI model?
Only the articles you pick for a translation batch: the prose of the article, its title and your glossary for that language pair. Nothing else in TidyKB calls a model. Code blocks, scripts, embeds and attribute text are never even shown to it, and a scan never calls a model at all.
Can I get a copy of what you hold about me?
Yes. The account page exports the data TidyKB holds about you and your workspaces as JSON: connections and their status, audit and public-audit history, scan and issue counts, replace and translation job summaries, glossaries and settings. It never contains key material, article HTML, drafts or snapshots.
Related
- Connect Freshdesk with a KB-only agent Create a knowledge-base-only agent in Freshdesk, paste its API key into TidyKB, and understand what the connection test checks and what each error means.
- The scan and the health score What a TidyKB scan checks, how the health score is worked out, and the cases where a scan deliberately refuses to claim that something is broken or fixed.
- Freshdesk API key: read-only, KB-only access Where to find your Freshdesk API key, and how to create a dedicated agent with a knowledge-base-only role so third-party tools can’t touch your tickets.
See your help center’s score.
Paste a URL. No signup, no API key, no call.