rstags

Tagging API for developers

Turn any text into
tags you can trust

rstags is the tagging layer for your product. Send content and your tag pool, get back the tags that fit, each with a calibrated confidence score.

Like a classifier you never had to train.

  • First 1,000,000 tags free
  • No credit card
  • Content is never stored
Response
{
  "object": "tagging",
  "tags": ["billing", "churn-risk"],
  "scores": [
    { "tag": "billing",          "score": 0.94 },
    { "tag": "churn-risk",       "score": 0.78 },
    { "tag": "bug",              "score": 0.11 },
    { "tag": "feature-request",  "score": 0.03 }
  ],
  "model": "typesafe-ai/jev",
  "threshold": 0.7,
  "usage": { "decisions": 4, "balance": 999996 }
}

Tags applied through rstags

5,110,308

Labels it applies, for example

  • billing
  • refund-request
  • bug-report
  • churn-risk
  • feature-request
  • onboarding
  • password-reset
  • shipping-delay
  • integration-issue
  • resolved

More than a prompt

You can ask a language model to pick tags. It will usually work, and the times it does not are the times you find out in production, from a report built on a tag nobody defined.

An LLM promptrstags
Returns only tags you suppliedUsuallyAlways, by construction
A score for every tagNoYes, for the whole pool
Unparseable responseYour problemRetried, then surfaced as an error
Selection ruleWhatever the model feltYour threshold, ranked, capped
SetupPrompt engineeringOne POST
CostPer token, output included$5 per million decisions

How it works

No training data. No fine-tuning. Just scores.

Everything you need to tag text

Scores, not guesses

Every tag you send comes back with a probability between 0 and 1. Set the threshold yourself, or store the scores and re-rank later without calling us again.

It can only pick your tags

The model answers yes or no about the tags you supplied. It has no way to invent a new one, misspell yours, or return a sentence where you expected a label.

Built on Jev

An evaluation model from TypeSafe AI that returns typed decisions instead of text. No parsing, no JSON repair, no retry loop around a model that rambled.

One endpoint

POST content and tags. There is no project to create, no index to build, no training set to assemble and no model to fine-tune before the first call works.

Rules in plain English

Pass rules alongside the pool and they are attached to the tags they name. "Tag billing whenever a payment method is mentioned" is the whole configuration.

Batching built in

Pools up to 500 tags are split into batches and evaluated in parallel under one deadline. A big taxonomy costs you latency, not orchestration.

The same call, whatever the text

A ticket, a review, an invoice. The pool changes, the request does not.

Content in

My card was declined twice renewing the Pro plan, and now the dashboard says my workspace is read-only. I have a demo on Thursday.

130 characters · 6 tags in the pool

Scores out

  • billing0.94
  • churn-risk0.78
  • urgent0.72
  • bug0.11
  • feature-request0.03
  • onboarding0.02

3 of 6 cleared the 0.7 threshold · 6 decisions billed

One endpoint.
No SDK required.

Authenticate with a bearer token, post JSON, read JSON. The response carries the tags, the score for every tag in the pool, and exactly what you were billed.

  • REST over HTTPS, no client library to install
  • Scoped API keys, revocable from the dashboard
  • Usage and balance on every response
  • Idempotency keys for safe retries
  • Your threshold and tag cap, per request
Example request
curl -X POST https://rstags.com/api/v1/tag \
  -H "Authorization: Bearer rst_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "content": "My card was declined twice renewing the Pro plan.",
    "tags": ["billing", "bug", "churn-risk", "feature-request"]
  }'

Who uses rstags

Developers

Stop shipping a prompt that returns a tag you never defined. Get a label and a number your code can branch on.

AI engineers

A calibrated classifier for routing, filtering and guardrails, without assembling a training set for every new label.

Support leads

Tag every ticket consistently, including the ones that arrive at 2am, and get a taxonomy your reports can trust.

Sales ops

Classify inbound by intent and push it to the CRM before anyone opens it. Score thresholds decide what is worth a human.

Data teams

Backfill labels across a table of free text. The same pool, the same threshold, the same result every run.

SaaS founders

Ship the categorization feature your customers keep asking for this week, for less than the logging bill.

Fast because it is not writing.
Honest because it cannot.

A text model generates tokens until it decides to stop, then you parse what came out and hope it matches your taxonomy. An evaluation model answers a closed question with a probability. There is no output to validate, so there is nothing to hallucinate.

Sub-second for a typical pool, because the batches run in parallel against one copy of your content.

rstags runs on Jev by TypeSafe AI (typesafe-ai/jev), which publishes its own latency and calibration benchmarks.

Retries that mean something

An unreadable answer is retried. An empty result is a legitimate answer and is returned as one.

Deadlines, not hangs

Every attempt runs under a timeout you can set per request, inside an overall deadline.

No silent truncation

Oversized content is rejected, or truncated only when you ask and flagged in the response.

Billed for what ran

If the model is unavailable, nothing is charged and the response says so.

Simple pricing, per million tags

One number. No seats, no plans, no minimum, and nothing that expires.

Pay as you go

$5per million tags

The first 1,000,000 are free, on every account.

  • Pay per tag decision, not per seat
  • Credits never expire
  • No subscription, no monthly minimum
  • Pools up to 500 tags
  • Every score returned, not just the winners
Start tagging free

What a million tags looks like

One decision is one tag evaluated against one piece of content. A request with a 50 tag pool counts 50 decisions, because each tag is a separate question.

20,000 tickets against a 50 tag pool1,000,000 decisions
Free
100,000 reviews against a 20 tag pool2,000,000 decisions
$5
1,000,000 emails against a 10 tag pool10,000,000 decisions
$45

Duplicate tags collapse and a fallback tag is never billed, so a request always costs at most the number of tags you sent.

Questions worth asking

What counts as one decision?

One tag evaluated against one piece of content. A request with a 50 tag pool counts 50 decisions, because every tag is a separate question. Duplicates collapse and the fallback tag is free, so you are never charged more than the array you sent.

Can it return a tag that is not in my pool?

No, and not as a matter of policy. The model is asked a yes or no question about each tag you supplied and answers with a probability. There is no step at which a new string could be produced.

What is Jev?

An evaluation model from TypeSafe AI. Instead of generating text it returns typed decisions with calibrated confidence, which is why the response is a set of numbers rather than a sentence to parse.

What happens to my content?

It is sent to the model to be scored and is not stored. There is no transcript archive on our side, which keeps your retention story short.

What happens when my credits run out?

The API answers 402 with the number of decisions the request needed and your remaining balance. It never partially evaluates a pool, because half a result is worse than none.

How many tags come back?

Everything above your threshold, ranked best first, capped at 5 by default. You always get the scores for the rest, so raising or lowering the bar later costs nothing.

Tag your first million
on us

Create a key, post some text, read the scores. If it does not fit your taxonomy in ten minutes, nothing was spent.