DSA compliance
The statement of reasons, written with every block
The Digital Services Act asks every hosting service to tell the author what was done, why, whether it was automated and how to contest it. ToxicFilter writes that statement with each decision, quoting your own rules as they read that day, and files it with the Commission when you need it to.
How it works
-
A rule decides
Your policy blocks a listing for a scam, a slur or a payment taken outside. Each rule can carry the words it asks of people and what happens when it acts: removal, reduced visibility, a suspended account, in which countries.
-
The statement is written
The answer carries the statement already composed: the measure, the facts, the rule quoted from the version in force, whether detection and decision were automated, and the ways to contest it. In the author's language, among eight.
-
The author can appeal
An appeal against the decision is filed through the API and decided by a person, never by the model, with a reasoned answer written for the person who appealed.
-
It reaches the Commission
If your platform has to, each statement is filed to the DSA Transparency Database in the background, with no personal data, and the panel shows the ones that did not go through.
A real one, written just now
A listing refused for a payment off the platform. Written by the same code the API runs, for an example project, in this page's language.
We have removed your content. Why: it was identified as spam. It breaks our rule "4.2 Payments off the platform": Agreeing to pay or be paid outside Swamp Market is not allowed: it leaves the buyer without the protection the platform gives. Our rules: https://toxicfilter.com/rules/prj_example/listings/3#spam Our terms: https://example.com/terms How it was decided: the content was detected by automated means and the decision was taken automatically. Where it applies: everywhere. What you can do: you can ask us to review this decision at appeals@example.com. You can also refer the decision to a certified out-of-court dispute settlement body, or take it to court. Reference: mod_01JA2B3C4D5E6F7G8H9J0K1M2N
The same statement, as the API returns it
{
"restrictions": [
"removal"
],
"territories": [],
"duration": null,
"facts": {
"flagged": [
"spam"
],
"reasons": [
"Proposes taking the payment outside the platform, where neither side is protected by it."
],
"source": "own_initiative"
},
"automated": {
"detection": true,
"decision": true
},
"ground": {
"type": "terms",
"policy": {
"slug": "listings",
"version": 3
},
"clauses": [
{
"key": "spam",
"title": "4.2 Payments off the platform",
"body": "Agreeing to pay or be paid outside Swamp Market is not allowed: it leaves the buyer without the protection the platform gives.",
"url": "https://toxicfilter.com/rules/prj_example/listings/3#spam"
}
],
"terms_url": "https://example.com/terms"
},
"redress": {
"internal": "appeals@example.com",
"out_of_court": true,
"judicial": true
},
"locale": "en"
}
Statements of reasons under the DSA, explained
What the regulation asks for, who it applies to, and how each part is covered.
What a statement of reasons is
It is the explanation the Digital Services Act owes to the person whose content you restricted. Article 17 of Regulation (EU) 2022/2065 applies to every hosting service that removes, disables, demotes or restricts what a user posted, or suspends their account, because the content is illegal or incompatible with its terms. Since 17 February 2024 that includes every platform in the EU, not only the very large ones.
What it has to say
A clear and specific account of the restriction and its scope, the facts it rests on, whether automated means detected the content or took the decision, the ground (a law, or the clause of your terms), and the ways to contest it: your internal complaint system, out-of-court dispute settlement and the courts. "This violates our community guidelines" fails on almost every count; the statement has to name the rule.
How ToxicFilter writes it
Each rule of your policy can carry a message: what it asks of people, in your words. When that rule blocks something, the answer carries the statement already composed, quoting the message from the policy version in force that day, with the measure the rule says to apply. The text is deterministic: the same verdict, version and language always give the same words, and the statement can be rebuilt from the record months later in any of the eight languages.
Appeals, decided by a person
Article 20 gives the users of online platforms an internal complaint system against these decisions, and requires that it is not decided solely by automated means. Appeals are filed through the API, refused when there is nothing left to contest or the six months have passed, and resolved by a named moderator with an explanation, which ToxicFilter turns into a reasoned decision for the person who appealed.
Filing to the Commission's Transparency Database
Online platforms that are not micro or small enterprises also have to send every statement to the Commission, which publishes it in a public, machine-readable database (article 24(5)). With the switch on and your platform's token pasted, each statement is filed in the background a few seconds after the verdict, without personal data, retried when the Commission is down, and listed with its status so a refused or failed filing never goes unnoticed.
How the work is split
The instant checks settle the clear cases in about a millisecond, the model reads what depends on context, and your rules and your people have the last word.
-
Your terms are the ground
Every statement rests on your own terms and conditions, quoting the rule that acted. Whether something is illegal stays your judgement, so nothing is ever claimed on your behalf.
-
Your platform, your filing
Whether your service is an online platform or a small enterprise decides who has to file. You say so with one switch, and from then on every statement is filed and tracked for you.
-
Ready to send, your way
The statement arrives as text and as structure, in the author's language. Your site delivers it where your users already read you, by email or in your app.
Frequently asked questions
What must a DSA statement of reasons include?
Article 17(3) lists it: what restriction was applied and its scope, the facts and circumstances relied on, whether automated means were used to detect or decide, the legal ground or the contractual clause relied on, and the redress available (the internal complaint system, out-of-court dispute settlement and the courts). It has to be clear and specific, which is why ToxicFilter quotes the rule that acted rather than the terms in general.
Who has to send statements of reasons?
Every provider of a hosting service that restricts what a user posted, whatever its size: the small-business exemption in article 19 covers the obligations of online platforms, not article 17. If you store content your users submit and you remove it, hide it or suspend the account, you owe them the statement.
Do I have to send my statements to the Commission?
Providers of online platforms have to submit them to the DSA Transparency Database without undue delay (article 24(5)). Micro and small enterprises are excluded from that section by article 19, unless they are designated very large online platforms. ToxicFilter files them for you when you turn it on and paste the token the Commission gives you.
Can a statement of reasons be generated automatically?
Yes, and it has to say so: whether the content was detected by automated means and whether the decision itself was automated are part of what article 17 requires. When a person rejects a held item in the review queue, the statement says the decision was taken by a person.
In which languages is the statement written?
English, Spanish, Portuguese, French, Italian, German, Catalan and Dutch. You choose the language per call or rebuild the statement later in another one.
Is a DSA template enough?
A template gives you the headings. What makes a statement clear and specific is the content: the rule that applied, quoted as it read that day, and the facts of that decision. A statement rebuilt months later from the record quotes the same version, because every policy version is kept.
Keep reading
Try it on your own traffic
2,000 credits a month on the free plan, no card. Enough to send a week of your own content and see what it says about it.