{"uid":"cap_XbAJFOiv3kdhM6L1wb0p0","slug":"fittings-profanity-filter-009ec127","name":"Fittings Profanity Filter","description":"Check text for profanity and obscenity, returning each match with its offset and a redacted copy of the text.","url":"https://fittings.sh/v1/text/profanity-filter","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"mask":{"type":"string","description":"Single character used for redaction, default *"},"text":{"type":"string","description":"Text to check, up to 20000 UTF-8 bytes"}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.0042","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.0042/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.0042","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.0042","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_UCGpnohOfVVMqDOxxlxbk","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.0042","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Scans text for profanity and obscenity, returning each match with its character offset and a redacted copy of the input text.","exampleAgentPrompt":"Check this user comment for profanity and give me a clean version with any bad words replaced by asterisks: 'What the hell were you thinking, you absolute idiot?'","exampleUseCases":[{"title":"User comment moderation pipeline","prompt":"Before posting this user review to our site, scan it for any profanity or obscene language and give me a redacted version with swear words replaced by asterisks: 'This product is absolute crap, what a bloody waste of money.'"},{"title":"Chat app message sanitizer","prompt":"I need to filter this chat message before displaying it to other users — check it for profanity and return a censored copy using '#' as the mask character: 'You stupid idiot, get the hell out of here!'"},{"title":"Crowdsourced content safety check","prompt":"Someone submitted this caption for a public photo gallery — scan it for offensive or obscene words so I know if it needs review before approval: 'That was one damn fine sunset, no bulls**t.'"}],"resultDescription":"Returns a list of profanity matches each with the matched word and its character offset in the original text, plus a fully redacted copy of the input text where each offensive word is replaced with the specified mask character (default '*').","failureModes":["Text exceeds 20000 UTF-8 bytes — request rejected","Invalid or multi-character mask value — validation error","Empty text input — may return empty match list","Payment failure via x402 protocol — 402 response before processing","Network timeout on large text near the byte limit"],"whenToPreferThis":"Choose this endpoint when you need both detection (with offsets) and redaction in a single call, especially for real-time content moderation pipelines. It is well-suited for agents that need to flag the exact location of each profanity match for downstream highlighting or logging, while also producing a publish-ready sanitized version of the text. Prefer it over regex-based local filters when you need a maintained, up-to-date profanity dictionary without managing it yourself.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T00:49:10.984Z","isFirstParty":false}