Changelog

What changed in the Silvertext API and these docs, newest first.

October 2026

  • Paging on GET /v1/checks. limit (1 to 100, default 50) and cursor walk the whole history, newest first; each page answers nextCursor, null on the last. Before this the list stopped at the 50 most recent.
  • Unknown options keys are refused. A key the API does not know (plagarism) now answers 400 invalid_options naming it. It used to be ignored, so the pass it meant to turn off ran, and was billed. A wrong type names its field too (options.plagiarism: Expected boolean).
  • A pass that did not run reports null. With plagiarism: false, originalityScore, similarityScore, scores.plagiarism and composition are null instead of 100 and 0; with citations: false, scores.citation is null. This is what Reading the report always said.
  • Clearer 401s. A key that is truncated or mistyped answers 401 invalid_api_key (it read "Invalid session" before), a request with no key says how to send one, both carry WWW-Authenticate, and the Bearer scheme is accepted in any case.
  • Failed passes are not billed. When the AI detector or the language model cannot answer, the report already said "not checked" (passes.aiContent or passes.language is failed); the check is now settled without that pass's rate.
  • Clearer file refusals. A scan or image with no readable text ends rejected with unreadable_file and costs nothing (a blank image used to be checked as the OCR model's own reply). A damaged or truncated .docx or .xlsx answers 400 unreadable_file (it read as 413 too large), a password-protected PDF says so, and an oversized file answers 413 file_too_large with the cap in every upload shape.
  • Docs clients. The PHP client failed on construction (a readonly property assigned twice) and is fixed. Every client now sends an Idempotency-Key on every submit, so its own retries never start a second check; the Python client resends the whole file on a retry; the Go client reads a null plagiarism score as nil; the batch runner waits for a slot on 409 concurrent_limit instead of dropping the file.
  • MCP. The verdict line states the similarity figure (it read "n/a"), leaves out plagiarism when the pass was off, and a submit whose follow-up read fails still returns its check_id; a mistyped option is a tool error instead of a full-price check.

September 2026

  • Source rules. Control which web sources a plagiarism check may cite: GET, POST and PUT /v1/source-rules and GET, PATCH and DELETE /v1/source-rules/{id} manage the account's include and exclude rules (the same list the app's Settings page edits, every rule with an id), and sourceRules on POST /v1/checks adds rules for one check. A finished check carries the rules it ran with. Guide: Excluding and including sources.
  • GET /v1/capabilities replaces GET /v1/config in the reference. It carries what an integration needs and nothing else: the credit schedule (credits), the document limits, accepted file types and languages, the vocabulary options accepts, the source-rule limits and the per-key rate limits. /v1/config was the Silvertext site's own configuration endpoint and keeps answering, but it is not part of the API and will not be documented; read credits.passes from /v1/capabilities instead.
  • Cost calculator. The API page prices any combination of checks, document length, batch size and pack, and prints the options body that runs exactly that. Reminder while you are there: an option you leave out defaults to on (Choosing which checks run).
  • Per-pass pricing. A check is billed by the passes it runs: 40 credits per 250 words for every check plus 70 for plagiarism, 20 for grammar and spelling, 10 for citations and 10 for AI content, so a plagiarism-only check costs 110 credits per 250 words and everything on still costs 150. POST /v1/checks answers estimatedCredits beside the id, a finished check carries creditsCharged and its options, and the live schedule is credits.passes on GET /v1/capabilities. Details in Credits and limits.
  • MCP server. The API as tools at https://api.silvertext.com/mcp (Streamable HTTP, Bearer key on the connection): silvertext_submit_check waits for the result, silvertext_get_check, silvertext_list_checks, silvertext_get_usage, and since the source-rules release silvertext_source_rules. Setup per client in AI agents and MCP.
  • API keys are live. Keys are created under Account, then API, with checks:read, checks:write and usage:read scopes, up to five per account, and 1,500 starter credits on the first key.
  • Developer credit packs. Two larger pay-as-you-go packs beside the existing ones; see the API page.
  • Per-key rails. 120 requests a minute and 300 check starts an hour per key; five checks in flight per account for API submissions.
  • Idempotency-Key on POST /v1/checks, with Idempotent-Replayed: true on a replay.
  • This developer portal replaced the single reference page at /api/docs.

On this page