[{"data":1,"prerenderedAt":399},["ShallowReactive",2],{"content:\u002Fprofanity-filter-api":3,"page-dates":361},{"kind":4,"path":5,"locale":6,"title":7,"htmlTitle":8,"description":9,"navTitle":10,"published":11,"updated":11,"alternates":12,"breadcrumbs":13,"indexable":21,"twin":22,"collection":23,"slug":24,"file":25,"hub":19,"data":26},"template","\u002Fprofanity-filter-api","en","Profanity filter API: find swear words in ten languages without keeping a word list.","Profanity Filter API for Chat and Comments · Detectivision","Find swear words in chat, comments and usernames in ten languages with one API call: separate flags for profanity and insults, no word list to maintain.","Profanity filter","2026-10-16T18:00:00+03:00",[],[14,17,20],{"name":15,"path":16},"Home","\u002F",{"name":18,"path":19},"Detection","\u002Fdetection",{"name":10,"path":5},true,"\u002Fprofanity-filter-api.md","detection","profanity-filter-api","content\u002Fen\u002Fdetection\u002Fprofanity-filter-api.yml",{"status":27,"published":11,"noindex":28,"navTitle":10,"author":29,"reviewer":30,"pillar":28,"keywords":31,"sources":34,"related":107,"relatedExclude":113,"requires":114,"availabilityNotice":28,"reviewAfter":122,"redirectFrom":123,"mergedFrom":124,"featured":28,"aiAssisted":21,"faq":125,"nature":126,"seoTitle":127,"description":9,"hero":128,"sections":138},"published",false,"detectivision","owner",{"primary":32,"intent":33},"profanity filter api","commercial",[35,41,45,49,53,57,61,65,69,73,78,82,86,90,94,98,102],{"id":36,"title":37,"url":38,"publisher":39,"accessed":40},"api-status","Detectivision API status (text_moderation lists profanity as available)","https:\u002F\u002Fapi.detectivision.ai\u002Fapi\u002Fv1\u002Fstatus","Detectivision","2026-10-16",{"id":42,"title":43,"url":44,"publisher":39,"accessed":40},"docs-text","Text moderation","https:\u002F\u002Fdetectivision.ai\u002Fdocs\u002Ftext",{"id":46,"title":47,"url":48,"publisher":39,"accessed":40},"docs-flags","Flags","https:\u002F\u002Fdetectivision.ai\u002Fdocs\u002Fflags",{"id":50,"title":51,"url":52,"publisher":39,"accessed":40},"docs-responses","Responses","https:\u002F\u002Fdetectivision.ai\u002Fdocs\u002Fresponses",{"id":54,"title":55,"url":56,"publisher":39,"accessed":40},"docs-credits","Credits and billing","https:\u002F\u002Fdetectivision.ai\u002Fdocs\u002Fcredits",{"id":58,"title":59,"url":60,"publisher":39,"accessed":40},"docs-async","Async requests","https:\u002F\u002Fdetectivision.ai\u002Fdocs\u002Fasync",{"id":62,"title":63,"url":64,"publisher":39,"accessed":40},"docs-actions","Metadata and actions","https:\u002F\u002Fdetectivision.ai\u002Fdocs\u002Factions",{"id":66,"title":67,"url":68,"publisher":39,"accessed":40},"docs-authentication","Authentication","https:\u002F\u002Fdetectivision.ai\u002Fdocs\u002Fauthentication",{"id":70,"title":71,"url":72,"publisher":39,"accessed":40},"pricing","Content moderation API pricing","https:\u002F\u002Fdetectivision.ai\u002Fpricing",{"id":74,"title":75,"url":76,"publisher":77,"accessed":40},"frequencywords-tr-2018","FrequencyWords, Turkish 50k list (2018, from OpenSubtitles)","https:\u002F\u002Fgithub.com\u002Fhermitdave\u002FFrequencyWords\u002Fblob\u002Fmaster\u002Fcontent\u002F2018\u002Ftr\u002Ftr_50k.txt","Hermit Dave (CC BY-SA 4.0)",{"id":79,"title":80,"url":81,"publisher":77,"accessed":40},"frequencywords-en-2018","FrequencyWords, English 50k list (2018, from OpenSubtitles)","https:\u002F\u002Fgithub.com\u002Fhermitdave\u002FFrequencyWords\u002Fblob\u002Fmaster\u002Fcontent\u002F2018\u002Fen\u002Fen_50k.txt",{"id":83,"title":84,"url":85,"publisher":77,"accessed":40},"frequencywords-es-2018","FrequencyWords, Spanish 50k list (2018, from OpenSubtitles)","https:\u002F\u002Fgithub.com\u002Fhermitdave\u002FFrequencyWords\u002Fblob\u002Fmaster\u002Fcontent\u002F2018\u002Fes\u002Fes_50k.txt",{"id":87,"title":88,"url":89,"publisher":77,"accessed":40},"frequencywords-pt-2018","FrequencyWords, Portuguese 50k list (2018, from OpenSubtitles)","https:\u002F\u002Fgithub.com\u002Fhermitdave\u002FFrequencyWords\u002Fblob\u002Fmaster\u002Fcontent\u002F2018\u002Fpt\u002Fpt_50k.txt",{"id":91,"title":92,"url":93,"publisher":77,"accessed":40},"frequencywords-fr-2018","FrequencyWords, French 50k list (2018, from OpenSubtitles)","https:\u002F\u002Fgithub.com\u002Fhermitdave\u002FFrequencyWords\u002Fblob\u002Fmaster\u002Fcontent\u002F2018\u002Ffr\u002Ffr_50k.txt",{"id":95,"title":96,"url":97,"publisher":77,"accessed":40},"frequencywords-de-2018","FrequencyWords, German 50k list (2018, from OpenSubtitles)","https:\u002F\u002Fgithub.com\u002Fhermitdave\u002FFrequencyWords\u002Fblob\u002Fmaster\u002Fcontent\u002F2018\u002Fde\u002Fde_50k.txt",{"id":99,"title":100,"url":101,"publisher":77,"accessed":40},"frequencywords-ru-2018","FrequencyWords, Russian 50k list (2018, from OpenSubtitles)","https:\u002F\u002Fgithub.com\u002Fhermitdave\u002FFrequencyWords\u002Fblob\u002Fmaster\u002Fcontent\u002F2018\u002Fru\u002Fru_50k.txt",{"id":103,"title":104,"url":105,"publisher":106,"accessed":40},"wikipedia-scunthorpe-problem","Scunthorpe problem","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FScunthorpe_problem","Wikipedia",[108,109,110,111,112],"\u002Fturkish-offensive-language-detection-api","\u002Ftoxicity-detection-api","\u002Fglossary\u002Fscunthorpe-problem","\u002Fuse-cases\u002Fgaming","\u002Fuse-cases\u002Fonline-communities",[],[115,116,117,118,119,120,121],"text_moderation","text_moderation:profanity","text_moderation:insult","text_moderation:hate","text_moderation:racism","text_moderation:sexism","text_moderation:sexual","2027-04-14",[],[],[],"service","Profanity Filter API for Chat and Comments",{"eyebrow":129,"title":130,"lead":134,"more":135},"Profanity detection",{"before":131,"em":132,"after":133},"Profanity filter API: find swear words in ","ten languages"," without keeping a word list.","Detectivision’s profanity flag tells you whether a message in English, Spanish, Portuguese, French, German, Italian, Turkish, Arabic, Russian or Hindi contains swear words, and how sure it is, in one API call. It judges the whole message, and insults have a flag of their own, so your rules can treat swearing and name-calling apart. You decide what happens next: block the message, hold it for review or ask the writer to rephrase.",{"label":136,"to":137},"Read the docs","\u002Fdocs\u002Ftext",[139,166,217,229,243,266,279,301,326,344],{"kind":140,"eyebrow":141,"title":142,"lead":143,"head":144,"rows":148,"note":165},"table","What it finds","What the profanity flag finds, and what goes to other flags","Swearing, insults, hate and sexual talk each have a flag of their own. This is how Detectivision defines them. The public status endpoint lists profanity as an available text flag (read on 16 Oct 2026). Flags depend on the plan: GET \u002Fapi\u002Fv1\u002Fflags shows the ones your account has.",[145,146,147],"Flag","What it covers","What it leaves out",[149,153,157,161],[150,151,152],"profanity","Swear words and vulgar slang in English, Spanish, Portuguese, French, German, Italian, Turkish, Arabic, Russian or Hindi, including friendly swearing and swearing aimed at no one.","Rude words that are not swear words, such as “idiot”: those are insults.",[154,155,156],"insult","An attack on one person: name-calling, belittling, cursing at someone.","Remarks about a whole group, criticism without name-calling, and swearing aimed at no one, which is profanity only.",[158,159,160],"hate","Hostility, slurs or negative generalizations about a group defined by race, ethnicity, nationality, religion, gender, sexual orientation or disability. Two narrower flags, racism and sexism, sit next to it.","Neutral mentions of a group, such as news, and swear words aimed at one person, which are insults.",[162,163,164],"sexual","Sexual acts or body parts described or asked for, requests for nude photos, and sexual harassment.","Swear words of sexual origin used only to curse, which are profanity, and romantic text that is not sexual.","One message can raise several flags: swearing at someone is profanity and an insult. The definitions say what each flag is for. Before you automate a decision, send messages from your own platform through the dashboard’s playground and look at what comes back.",{"kind":140,"eyebrow":167,"title":168,"lead":169,"head":170,"rows":175,"note":216},"Why not a word list","Everyday words a word-part list would block","A list that matches parts of words blocks everyday words that contain a short swear word, and every language has some; with English it is known as the Scunthorpe problem. A list of whole swear words has the opposite trouble: it misses a swear word that takes an ending. Rank is a word’s place among the 50,000 most frequent words of its language in film and TV subtitles: 11 means the 11th most frequent.",[171,172,173,174],"Word","Language and meaning","Rank","Why a word-part list blocks it",[176,181,186,191,196,201,206,211],[177,178,179,180],"ama · tamam · zaman","Turkish: but · okay · time","11 · 28 · 37","Each contains a two-letter Turkish vulgar word, so a word-part list blocks three of the 40 most frequent Turkish words.",[182,183,184,185],"ridículo · artículo · vehículo","Spanish: ridiculous · article · vehicle","1,452 · 2,438 · 2,954","Each contains a four-letter Spanish vulgar word.",[187,188,189,190],"computador · reputação","Portuguese: computer · reputation","1,156 · 2,882","Each contains a four-letter Portuguese vulgar word.",[192,193,194,195],"ridicule · particulier · véhicule","French: ridiculous · particular · vehicle","1,213 · 2,353 · 2,715","Each contains a three-letter French vulgar word.",[197,198,199,200],"Nachbarschaft · Marsch","German: neighbourhood · march","4,848 · 5,271","Each contains a five-letter German vulgar word.",[202,203,204,205],"корабля","Russian: of the ship","2,841","Contains a three-letter Russian vulgar word.",[207,208,209,210],"pass · class","English","741 · 743","Each contains a three-letter English vulgar word.",[212,213,214,215],"Scunthorpe","English: a town in England","not in the list","Contains a four-letter vulgar word; the town gave the Scunthorpe problem its name.","Ranks from the FrequencyWords 2018 lists for each language, built from OpenSubtitles (CC BY-SA 4.0), read on 16 Oct 2026. The profanity flag judges the whole message instead of matching parts of words; run these words through the playground to see how it treats them.",{"kind":218,"eyebrow":219,"title":220,"blocks":221,"note":228},"code","In code","Check a message",[222,225],{"label":223,"code":224},"Request","curl https:\u002F\u002Fapi.detectivision.ai\u002Fapi\u002Fv1\u002Fmoderation \\\n  -H \"Api-Key: $DETECTIVISION_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"type\": \"text_moderation\",\n    \"input\": \"Fix this damn update already.\",\n    \"mode\": \"detect\",\n    \"flags\": [\"profanity\", \"insult\"],\n    \"metadata\": { \"messageId\": \"m_20931\" }\n  }'",{"label":226,"code":227},"Example response (format from the API reference; values illustrative)","{\n  \"id\": 5120,\n  \"type\": \"text_moderation\",\n  \"mode\": \"detect\",\n  \"status\": \"completed\",\n  \"flagged\": true,\n  \"flags\": [{ \"flag\": \"profanity\", \"confidence\": 0.94 }],\n  \"checked\": [\"insult\", \"profanity\"],\n  \"unchecked\": [],\n  \"tookMs\": 700,\n  \"usage\": { \"charged\": 2, \"remaining\": 4180 },\n  \"metadata\": { \"messageId\": \"m_20931\" }\n}","The message swears at no one, which the flags define as profanity, not an insult. flagged is true when any flag you asked for was raised, checked lists the flags that were looked for, and usage.charged is what the check cost: an answer at once costs twice the webhook price. Every value in the example response is illustrative, tookMs included.",{"kind":218,"eyebrow":230,"title":231,"blocks":232,"note":242},"Server side","In your code: Node.js, Python and PHP",[233,236,239],{"label":234,"code":235},"Node.js","\u002F\u002F Node.js 18 or later, on your server: the key must never reach a browser or an app.\nasync function checkMessage(text, messageId) {\n  const res = await fetch(\"https:\u002F\u002Fapi.detectivision.ai\u002Fapi\u002Fv1\u002Fmoderation\", {\n    method: \"POST\",\n    headers: {\n      \"Api-Key\": process.env.DETECTIVISION_API_KEY,\n      \"Content-Type\": \"application\u002Fjson\",\n    },\n    body: JSON.stringify({\n      type: \"text_moderation\",\n      input: text,\n      mode: \"detect\",\n      flags: [\"profanity\", \"insult\"],\n      metadata: { messageId },\n    }),\n  });\n  if (!res.ok) throw new Error(`Detectivision: ${res.status} ${await res.text()}`);\n  const result = await res.json();\n  if (result.unchecked.length > 0) return \"retry\"; \u002F\u002F partial: free, try again later\n  const raised = result.flags.map((f) => f.flag);\n  if (raised.includes(\"insult\")) return \"hold\";\n  if (raised.includes(\"profanity\")) return \"rephrase\";\n  return \"allow\";\n}",{"label":237,"code":238},"Python","# Python with requests, on your server: the key must never reach a browser or an app.\nimport os\nimport requests\n\ndef check_message(text, message_id):\n    r = requests.post(\n        \"https:\u002F\u002Fapi.detectivision.ai\u002Fapi\u002Fv1\u002Fmoderation\",\n        headers={\"Api-Key\": os.environ[\"DETECTIVISION_API_KEY\"]},\n        json={\n            \"type\": \"text_moderation\",\n            \"input\": text,\n            \"mode\": \"detect\",\n            \"flags\": [\"profanity\", \"insult\"],\n            \"metadata\": {\"messageId\": message_id},\n        },\n        timeout=30,\n    )\n    r.raise_for_status()\n    result = r.json()\n    if result[\"unchecked\"]:\n        return \"retry\"  # partial: free, try again later\n    raised = {f[\"flag\"] for f in result[\"flags\"]}\n    if \"insult\" in raised:\n        return \"hold\"\n    if \"profanity\" in raised:\n        return \"rephrase\"\n    return \"allow\"",{"label":240,"code":241},"PHP","\u003C?php\n\u002F\u002F PHP with the curl extension, on your server: the key must never reach a browser or an app.\nfunction check_message(string $text, string $messageId): string\n{\n    $ch = curl_init('https:\u002F\u002Fapi.detectivision.ai\u002Fapi\u002Fv1\u002Fmoderation');\n    curl_setopt_array($ch, [\n        CURLOPT_POST => true,\n        CURLOPT_RETURNTRANSFER => true,\n        CURLOPT_TIMEOUT => 30,\n        CURLOPT_HTTPHEADER => [\n            'Api-Key: ' . getenv('DETECTIVISION_API_KEY'),\n            'Content-Type: application\u002Fjson',\n        ],\n        CURLOPT_POSTFIELDS => json_encode([\n            'type' => 'text_moderation',\n            'input' => $text,\n            'mode' => 'detect',\n            'flags' => ['profanity', 'insult'],\n            'metadata' => ['messageId' => $messageId],\n        ]),\n    ]);\n    $body = curl_exec($ch);\n    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n    if ($body === false || $status !== 200) {\n        throw new RuntimeException(\"Detectivision: HTTP $status\");\n    }\n    $result = json_decode($body, true);\n    if (count($result['unchecked']) > 0) {\n        return 'retry'; \u002F\u002F partial: free, try again later\n    }\n    $raised = array_column($result['flags'], 'flag');\n    if (in_array('insult', $raised, true)) {\n        return 'hold';\n    }\n    if (in_array('profanity', $raised, true)) {\n        return 'rephrase';\n    }\n    return 'allow';\n}","Each function checks one message and returns what to do with it: allow, rephrase, hold or retry. Call it from your server: browsers are refused, which also keeps your key out of your pages. Checked line by line against the API reference on 16 Oct 2026. The Node.js version (on Node.js 22) and the Python version (Python 3.9, requests 2.32) also ran against a local stand-in that returns the documented response; the PHP version was syntax-checked, not run.",{"kind":244,"eyebrow":245,"title":246,"lead":247,"items":248},"list","After the answer","What to do with a flagged message","The answer is about the whole message, not a word in it, so act on the whole message.",[249,252,255,259,262],{"name":250,"text":251},"Block it","Check before the message is shown and refuse it with a short reason. This suits places everyone sees, such as usernames.",{"name":253,"text":254},"Ask to rephrase","Send the message back to the writer and ask for a version without swearing. Each new version is a new check.",{"name":256,"text":257,"to":258},"Hold it for review","Keep the message back until a moderator decides. A moderator opens the request in the dashboard’s Logs and takes one of your own actions, such as Approve or Delete; your system gets each one by webhook.","\u002Fdocs\u002Factions",{"name":260,"text":261},"Replace it","Show a notice such as “Message removed” in place of the whole message.",{"name":263,"text":264,"to":265},"Draw your own line","Act on flagged first. To let your system act alone only when the flag is surer, pick a higher confidence of your own, such as 0.7, and send the band between 0.5 and that line to a person.","\u002Fdocs\u002Fflags",{"kind":244,"eyebrow":267,"title":268,"items":269},"Where it helps","Chat, comments and usernames",[270,273,276],{"name":271,"text":272,"to":111},"Chat","Check a message before it is delivered, with the answer at once. Name only the flags you act on, such as profanity and insult: the models that feed none of them are not run, so the answer comes faster.",{"name":274,"text":275,"to":112},"Comments","A comment that can wait goes with \"async\": true. Its result comes by webhook at half the price, with your comment’s id from metadata, so it finds its way back.",{"name":277,"text":278},"Usernames","Check a username or a display name once, when it is chosen, before anyone else sees it. Any text from 1 to 10,000 characters can be checked, so a short name is checked like a message.",{"kind":244,"eyebrow":280,"title":281,"items":282},"Price","What a check costs",[283,287,291,294,297],{"name":284,"text":285,"to":286},"By length","A text costs a credit per started 2,500 characters when the answer comes by webhook, so a short message or a username costs one.","\u002Fdocs\u002Fcredits",{"name":288,"text":289,"to":290},"At once costs twice","An answer given at once, the default, costs twice that. Checks that can wait go with \"async\": true and pay the webhook price.","\u002Fdocs\u002Fasync",{"name":292,"text":293},"Fewer flags never cost more","Asking only for profanity, or for profanity and insult, never costs more than asking for every flag, and text costs the same in every mode.",{"name":295,"text":296},"Free when it fails","Errors cost nothing, and neither do partial results, where a flag could not be checked.",{"name":298,"text":299,"to":300},"Plans","Credits come with a plan. The Basic plan’s 10,000 text credits pay for that many messages of up to 2,500 characters checked by webhook, or half as many checked at once. The plans and the free trial are on the pricing page.","\u002Fpricing",{"kind":244,"eyebrow":302,"title":303,"items":304},"Limits","What this does not do",[305,308,311,314,317,320,323],{"name":306,"text":307},"No word positions or masking","The flag judges the whole message. It does not say which word it found, and it returns no masked copy.",{"name":309,"text":310,"to":137},"Other languages","Results are reliable in English, Spanish, Portuguese, French, German, Italian, Turkish, Arabic, Russian and Hindi. Text in other languages is checked, but the results are not reliable.",{"name":312,"text":313,"to":265},"No findings below 0.5","A flag is raised from a confidence of 0.5, and findings below that never come back. You can act above your own line, not below 0.5.",{"name":315,"text":316},"No voice chat yet","Audio moderation is coming soon, so swearing in voice chat is not checked.",{"name":318,"text":319},"No swearing inside images","Image moderation has no profanity flag, so swearing written on a picture is not looked for.",{"name":321,"text":322,"to":258},"No action on your platform","Detectivision answers and your system acts. It never deletes, hides or bans anything itself.",{"name":324,"text":325},"Not a legal verdict","A flag says what a message contains, not whether it breaks the law or your rules. Your rules decide.",{"kind":244,"eyebrow":327,"items":328},"Related",[329,332,335,338,341],{"name":330,"text":331,"to":108},"Turkish offensive language detection","Every text flag, for Turkish comments and messages.",{"name":333,"text":334,"to":109},"Toxicity detection","Insults, hate, harassment and self-harm, each a flag of its own.",{"name":336,"text":337,"to":110},"The Scunthorpe problem","Why word filters block innocent words.",{"name":339,"text":340,"to":137},"Text moderation in the docs","The request in full, with its limits and languages.",{"name":342,"text":343,"to":265},"Flags in the docs","Your account’s flags, choosing flags, and how a flag is raised.",{"kind":345,"eyebrow":346,"title":347,"items":348},"faq","Questions","Frequently asked",[349,352,355,358],{"q":350,"a":351},"Does it mask the swear words?","No. The profanity flag judges the whole message and does not say which word it found, so there is nothing to mask word by word. Hide or replace the whole message, hold it for review, or ask the writer to rephrase.",{"q":353,"a":354},"How do I know my account has the profanity flag?","Call GET \u002Fapi\u002Fv1\u002Fflags with your API key: it lists the flags your account may send for each type, and the dashboard’s playground shows the same. A flag that is not on your list is refused with 400 invalid_flags before anything is charged.",{"q":356,"a":357},"Does it catch spellings like “sh1t”?","We have not published a test of spellings like this yet, so we make no promise about them. Send the spellings your users really type through the playground or the API, and set your rules on what comes back.",{"q":359,"a":360},"Can I add my own words?","Not to the profanity flag: it has no word list to add to. Flags depend on the plan, and some are set up for one account only, so talk to us if your platform needs a rule of its own. A short list of your own, such as banned names, can run next to the flag.",{"\u002F":362,"\u002Ftr":365,"\u002Ftext-moderation":366,"\u002Fimage-moderation":368,"\u002Fvideo-moderation":370,"\u002Faudio-moderation":371,"\u002Flive-stream-moderation":372,"\u002Fnsfw-detection-api":373,"\u002Fhate-speech-detection-api":375,"\u002Ftoxicity-detection-api":376,"\u002Fviolence-detection-api":377,"\u002Fself-harm-detection-api":379,"\u002Fturkish-offensive-language-detection-api":380,"\u002Fuse-cases\u002Fdating-apps":381,"\u002Fuse-cases\u002Fmarketplaces":382,"\u002Fuse-cases\u002Fonline-communities":384,"\u002Fuse-cases\u002Fgaming":385,"\u002Falternatives\u002Fperspective-api":386,"\u002Falternatives\u002Fazure-content-moderator":387,"\u002Fpricing":388,"\u002Fmanifesto":390,"\u002Fprivacy":393,"\u002Fterms":396,"\u002Fcookies":397},{"published":363,"modified":364},"2026-10-14T12:53:52+03:00","2026-10-16T18:51:05+03:00",{"published":363,"modified":364},{"published":367,"modified":364},"2026-10-08T17:33:40+03:00",{"published":367,"modified":369},"2026-10-16T10:05:01+03:00",{"published":367,"modified":367},{"published":367,"modified":364},{"published":367,"modified":367},{"published":374,"modified":364},"2026-10-09T01:21:35+03:00",{"published":374,"modified":364},{"published":374,"modified":364},{"published":374,"modified":378},"2026-10-16T10:03:00+03:00",{"published":374,"modified":364},{"published":374,"modified":364},{"published":374,"modified":364},{"published":374,"modified":383},"2026-10-16T18:26:12+03:00",{"published":374,"modified":364},{"published":374,"modified":364},{"published":374,"modified":364},{"published":374,"modified":364},{"published":367,"modified":389},"2026-10-16T10:00:15+03:00",{"published":391,"modified":392},"2026-09-28T16:37:00+03:00","2026-10-16T10:06:42+03:00",{"published":394,"modified":395},"2026-10-04T16:45:35+03:00","2026-10-16T17:37:06+03:00",{"published":394,"modified":394},{"published":394,"modified":398},"2026-10-15T23:48:27+03:00",1792166154166]