model · available
Restyler 1
Takes the response from any model, including Claude, Gemini, GPT and your own fine-tunes, and rewrites it so it reads the way a person writes. It is trained to hold on to facts, meaning, names, numbers, links and formatting — see the measured retention rates below. Built to sit at the end of a generation pipeline: cleaning up drafts, tightening documentation, and making machine-assembled copy readable.
spec
- model id
- text-restyler-1
- openrouter id
- meragpt/text-restyler-1
- context
- 4,096 tokens
- max output
- 2,048 tokens
- input price
- $0.03 / 1M tokens
- output price
- $0.15 / 1M tokens
- sampling
- greedy (fixed)
- max request
- 6,000 characters
built for
- The last step of a generation pipeline, where a model has produced correct text that reads like a model produced it.
- Documentation, changelogs and support replies assembled from templates or generated fragments.
- Marketing and product copy drafted by a larger model and destined for a human reader.
not for
- Evading AI detectors. Naturalness under strict semantic preservation was the objective; evasion was never optimised for and is not measured. Detector scores also move with every detector release, so any guarantee there is one nobody can keep.
- Translation, summarisation or answering questions. It rewrites the text it is given and adds nothing to it.
- Text where the exact wording is the point — legal clauses, quoted material, licence terms.
calling it
One request, one passage.
curl https://meragpt.com/v1/restyle \
-H "Authorization: Bearer $MERAGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "text-restyler-1", "text": "..."}'Send up to 6,000 characters at a time and loop over your own sections for anything longer — you get results as you go, and a failure costs one section rather than the whole document. The document is split on blank lines and rejoined losslessly: blocks under 25 words, headings, tables and code are returned exactly as sent, and a block over 80 words is split at sentence boundaries first. There is also an OpenAI-compatible /v1/chat/completions shim, where temperature and top_p are accepted and ignored, because sampling is fixed.
evaluation
Measured on restyle-bench, n=800
Held out by document, so no block of an evaluated page appears in any training split. Every block contains at least one entity or number, because a block with nothing to lose cannot measure whether facts were kept.
| facts kept | 73% | entities and numbers of the input present in the output |
| perfect retention | 41% | share of blocks keeping every fact |
| length ratio | 0.86 | 64% land within 0.8–1.2 of the source |
| invented voice | 0% | never starts speaking as your company |
| repetition loops | 0% | any 6-gram repeated 3+ times |
| naturalness | 63.7 | human reference on the same blocks is 57.1 |
limits
What it does not do well.
- 73% is not "keeps every fact". A quarter of blocks still lose something, and only 41% keep everything. Review matters wherever accuracy does.
- Naturalness of 63.7 sits above the human reference of 57.1. Optimising for faithful and tight reads slightly more machine-like than the humans being imitated; that is the trade for +23 points of fact retention.
- Trained on blocks of roughly 15–120 words. Whole documents and one-line fragments are out of distribution, which is why the API splits your text and skips anything under 25 words.
- The human side of the training corpus is 2019 English web prose. Academic, literary, conversational and non-English registers are untested.
- It sometimes reformats prose into a bulleted list. The training data contains both flowing and structured targets, and the shipped model chooses between them on its own, so a paragraph can come back as bullets.
disclosure
Restyler 1 is our own model, built and trained in house for this one task. The weights are proprietary and are not published. What is published is the measurement: the benchmark above is held out by document, so no block of an evaluated page appears in any training split, and every number on this page comes from that run rather than from a demo. Model ids are stable and are never renamed — a change in behaviour ships as a new id, so an integration pinned to text-restyler-1 keeps the model it was tested against.
Calling it from your own code is in the API docs. Pricing and the credit model are on the homepage.