IronStratum Get an API key

iab-2x: IAB Content Taxonomy 2.2 classification for submitted text, planned as a metered API

iab-2x is this platform's name for a planned content classification lane: submitted text in, IAB Content Taxonomy 2.1 and 2.2 category codes with confidence scores out. The lane meters per page from a prepaid wallet. The lane belongs to the classification family. That is the set this platform is building for taxonomy, extraction, and decision work. Its row sits in the platform's model data behind the public list. Nothing answers a call under this alias today, and no launch date is promised anywhere on this page. What this page carries instead is the capability record. It holds what taxonomy 2.2 actually contains, read from the official files; which input shape a 2.2 classifier should take; and the exact call a hosted lane here would take. It is written down so the client work can start before anything ships.

Last verified: 2026-09-25

What it is

The IAB Tech Lab Content Taxonomy is the advertising industry's shared category set. It describes what content is about. The Tech Lab's own description calls it a common language for describing content. Contextual targeting and brand safety are the typical uses. A classifier for it is a narrow, well-defined job. It reads a piece of text and returns the category codes that fit, with a confidence score on each. No generation, no prompt engineering, no conversation.

The version history, from the Tech Lab's version table:

VersionReleasedState
1.0deprecatedthe Tech Lab says it should not be used without sensitive-content flags
2.0November 2017legacy
2.1October 2020legacy
2.2December 2020legacy, still demanded by live ad stacks
3.0June 2022includes deletions that make it non-backwards compatible
3.1December 2024current release

The 2.x honesty is the spine of this lane. The Tech Lab's page says 2.x is being deprecated. It frames keeping classification pipelines current as a must. Exchanges, publishers, and brand-safety vendors are the named parties. At the same time, real ad stacks still run on 2.x codes. Bid requests that omit the taxonomy version field default to 1.0. Mixed 2.1, 2.2, and 3.x deployments coexist in the wild. Version confusion is common enough that a publisher article asking which version you are actually using ranks on the money query. A 2.2 lane is therefore not a bet against 3.x. It is the workhorse tier for stacks that still speak 2.x. This platform pairs it with a separate planned 3.x lane rather than choosing one.

What is inside 2.2, counted from the official file:

  • Four tiers of depth, from broad groups down to specific leaves, with 1,196 named entries across 37 top-level groups.
  • Topic groups such as Automotive, News and Politics, Medical Health, Sports, and Video Gaming.
  • Six descriptor groups that ride in the same file but are not topics: content language (185 entries), source geography (262), media format, source, channel, and type.
  • The safety block, which is what 2.2 added and what the market's AI overviews summarize: a Sensitive Topics group with exactly 11 categories (Adult & Explicit Sexual Content; Arms & Ammunition; Crime & Harmful acts to individuals and Society and Human Right Violations; Death, Injury, or Military Conflict; Online piracy; Hate speech & acts of aggression; Obscenity and Profanity; Illegal Drugs/Tobacco/eCigarettes/Vaping/Alcohol; Spam or Harmful Content; Terrorism; Sensitive Social Issues), and a Brand Suitability and Risk group with exactly four levels: Floor, High Risk, Medium Risk, and Low Risk. The floor-and-levels shape is the one buyers still tier inventory against, the structure the industry safety alliance GARM left behind when it dissolved in 2024.
  • Sensitive-content flag markers on 64 entries, the mechanism the Tech Lab references when it says version 1.0 should not be used without them.

One counting note, because the numbers in the wild disagree. The Tech Lab's own migration announcement rounds the 2.x line to roughly 400 categories growing past 1,500 in 3.0. That number is a communications rounding. It counts topic categories only. The counts on this page come straight from the 2.2 file, named entries and descriptor groups included. The file is the reference a classifier answers from.

The engine plan, on this platform's side, is a small encoder pack, not a large language model. It pairs two open encoders. A ModernBERT encoder drives the taxonomy head. A DeBERTa-based cross-encoder drives zero-shot work. The cross-encoder runs natural-language inference. That covers the long tail of categories. Both are Apache 2.0 open weights, covered in the self-host section below.

The posture, stated plainly: this platform has not launched this lane. The platform's model data carries the iab-2x row behind the public list. The alias answers nothing until it joins. The rate is already set. Below, the route contract is the design a hosted lane would ship under, written down now so the client work can happen early. When the row joins the public list, the models index carries its state. The classification category page maps the platform's classifier lanes. It includes the iab-3x lane for 3.1 codes and the cross-map, and the gliner-extract lane for entity extraction in the same family.

Use cases

The lane's profile is text you already hold. That covers article bodies, page text pulled from your own CMS, product descriptions, and subtitle and transcript text. You send that text; the codes come back; nobody fetches anything.

  • Contextual targeting and inventory structuring. Label every page in a corpus with its 2.x codes so campaigns can target categories without third-party cookies. This is the taxonomy's founding use, and per-page pricing fits it: the corpus size is known before you start.
  • Brand-safety and suitability screening. The 11 sensitive-topic categories and the four risk levels exist to drive exclusion and tiering logic. A classifier that returns them per page turns a policy document into a testable filter.
  • Feeding 2.x-bound systems during the migration window. Stacks that still bid, filter, or report on 2.1/2.2 codes need 2.x labels even while the industry moves to 3.x. Classify into 2.x now, and the iab-3x lane plus the Tech Lab's mapper carry the forward conversion.
  • Publisher backfiles and CMS tagging. Ten thousand archived articles get the same codes as today's output, with confidence scores that let a human review only the borderline cases.
  • Content tools that need a stable schema. A fixed category set with numeric IDs is a friendlier target than free-form model output: validation is a lookup, not a judgment.

Submitted text or URL categorization: which shape you need

Search results for IAB classification APIs mix two products. Knowing which one you need is the first decision.

A URL categorization API takes a web address. The vendor fetches the page, or looks it up in a database of previously crawled pages, and returns categories. That is the right tool when you are profiling sites or domains you do not control. It also fits when you want whole-domain signals, and when the page's public face is what you want classified.

A submitted-text API takes text you already have. That is the right tool when the text is in hand: your CMS, your archive, your pipeline. Nothing is fetched, so there is no dependence on another site's terms of service and no stale crawl. There is also no gap between the page a crawler sees and the text you actually publish. The classification runs on exactly the input you care about, which also makes results reproducible: same text in, same codes out.

This platform's planned lane takes submitted text, which is the shape the ranking set leaves open. In this platform's dated SERP reads, the vendors ranking on the money queries are URL-first or dataset-shaped. A self-serve submitted-text 2.2 classifier with public, page-metered pricing did not rank. Neither money query read showed one.

Self-host the pack, or wait for the hosted row

The encoders behind this lane plan are open weights, so self-hosting is a genuine option, not a fallback pitch.

The ModernBERT encoder is Apache 2.0, with an 8,192-token context window. That is enough for full articles in one pass where the BERT-era standard was 512. It also delivers throughput two to four times a DeBERTa-class model at a fraction of the memory. The NLI cross-encoder is the zero-shot workhorse. It scores any candidate label against the text without task-specific training. That is how a long-tail category set gets covered on day one. Both run on a single consumer GPU. They are also viable on CPU for batch work.

The decision rule is the usual one. Self-host when the corpus cannot leave your boundary or when you need the classifier on the edge. Self-host too when you want to fine-tune the taxonomy head yourself. Use a hosted lane when you would rather own a call than a stack. You get per-page metering, revocable keys, and a wallet that bounds what a runaway pipeline can spend. For the 2.x-to-3.x leg of any project, the Tech Lab's open-source taxonomy mapper, built and donated by Mixpeek, is the tool. It converts 2.x codes forward through exact, fuzzy, and optional language-model matching. It returns candidate codes with confidence scores.

API usage

The designed contract is a lightweight classification route. Its body is embeddings-shaped, holding a model id and the input text. A hosted lane would answer at POST /v1/classifications on the platform's OpenAI-compatible base URL. It is authenticated with a Bearer key from the console.

POST /v1/classifications
Authorization: Bearer <key>
Content-Type: application/json

{ "model": "iab-2x", "input": "<the text to classify>" }

The response, as designed, carries the assigned categories, each with its tier path and numeric code from the official file, and a confidence score. It also carries the page count the request meters as.

Three laws of the meter, if the lane ships as designed:

  1. A page is up to 2,000 tokens of submitted text, rounded up. A 4,500-token article meters as three pages. A 200-token snippet meters as one.
  2. The wallet is checked at the door. A request arriving after the balance is spent is refused with a named error before any work starts, and refused requests bill nothing.
  3. Limits publish with the lane, not before it. Input caps, batch sizes, and the latency target (a p50 under 150 milliseconds per page) exist in the platform's plan, and the platform's rule is that a number publishes only after it is measured and held. Nothing on this page is a measurement.

The honesty line: both the route and the row are build items. Until the route ships, calls to this path answer the platform's not-found error. The alias iab-2x resolves to no model. The tabs below are the working contract, not an open service.

curl

curl -X POST "https://api.ironstratum.com/v1/classifications" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "iab-2x",
    "input": "The harbor district renovation finished in March after two years of work, and the first new tenants open this weekend."
  }'

python

import os
import requests

resp = requests.post(
    "https://api.ironstratum.com/v1/classifications",
    headers={"Authorization": "Bearer " + os.environ["KEY"]},
    json={
        "model": "iab-2x",
        "input": article_text,
    },
    timeout=30,
)
resp.raise_for_status()

print(resp.json())

openai-sdk

The SDK has no first-class method for a custom classification route. The low-level post carries it, with the client pointed at the platform:

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.ironstratum.com/v1",
    api_key=os.environ["KEY"],
)

result = client.post(
    "/classifications",
    body={"model": "iab-2x", "input": article_text},
    cast_to=dict,
)

print(result)

Code written against the OpenAI SDK needs two changes to point here: the base URL and the model id. The API reference documents the platform's route surface. That includes the shapes this route family would ship with.

Benchmarks

This platform has run no measurements for this lane: nothing serves under the alias, so there is nothing to measure. No latency figure, accuracy figure, or throughput figure on this page should be read as a result. When the lane lands, its numbers publish with their methodology, and only if they hold under load. The platform's quality gate is a held-out spot-check of the classifier's output against the Tech Lab's hosted mapper.

What exists today, with owners named:

  • The open model card. The open IAB fine-tune on ModernBERT, posted under Apache 2.0, reports top-1 accuracy of 75.5, top-5 of 95.8, and macro-F1 of 0.71 on its card. It was trained on a large-language-model-labeled set built from roughly 106,000 articles. Two labels travel with that: it targets taxonomy 3.1 Tier 1, not 2.2. That makes it the starting-point evidence for the sibling iab-3x lane. Its ground truth is model-generated, not human.
  • The one public 2.2 benchmark. A rival host that serves a 2.2 classifier ran its own comparison, read August 2026. On 5,000 production prompts, its encoder reaches content top-1 accuracy of 0.657 against 0.771 for a frontier model prompted to classify. F1 at five categories lands at 0.438 against 0.510. It answers in hundreds of milliseconds rather than seconds. Useful direction, two caveats. It is the vendor measuring its own product. The gold labels were produced by a language model acting as judge.
  • The market-wide caveat. Every quality number in this market, including the two above, sits on model-judged labels rather than human ground truth. Treat any accuracy claim in this lane as relative, and test candidates on your own text before committing a corpus.

Getting started

  1. Read the primary sources. The official 2.2 file and the Tech Lab's taxonomy page are public. Every category name, code, and risk level a 2.2 lane returns comes from that file.
  2. Prototype on the open pack. The encoder cards linked above are runnable today on one GPU or CPU, and the taxonomy mapper covers the 2.x-to-3.x leg of a migration project.
  3. Watch the catalog, not this page. The models index carries each row's state; the iab-2x row shows there the day it joins the public list.
  4. Be there when it lands. The console's invite flow opens the wallet, keys, and billing history. The classification category page maps the platform's classifier lanes as they come online.

What the platform serves

Specialty models — kind and unit price
ModelKindPrice
iab-2xclassification$0.70 / 1k pages

The same data GET /v1/models serves. A dash means the value isn't set.

Questions

What is content taxonomy?
In digital advertising, the phrase almost always means the IAB Tech Lab's Content Taxonomy. It is a shared set of category names and numeric codes for describing what a piece of content is about. The Tech Lab's own one-line definition calls it a common language for describing content. Contextual targeting and brand safety are the typical uses. A publisher labels an article. An exchange carries the code in the bid stream. A buyer targets or avoids the category without ever reading the page. It has shipped in versions: 1.0 is deprecated, 2.0 in November 2017, 2.1 in October 2020, 2.2 in December 2020, 3.0 in June 2022, and 3.1, the current release, in December 2024. On this platform iab-2x is the planned lane that classifies submitted text into the 2.1 and 2.2 codes.
What are the different IAB content categories?
Content Taxonomy 2.2 organizes 1,196 named entries in four tiers. The tiers run from broad groups down to specific leaves. Broad examples include Automotive, News and Politics, Sports, and Video Gaming. The official file also carries 37 top-level groups, and six of those are descriptors rather than topics. Those six are language (185 entries), geography (262), media format, source, channel, and type. Two groups matter most for safety work. Sensitive Topics holds exactly 11 categories. They run from Adult & Explicit Sexual Content and Arms & Ammunition to Terrorism and Sensitive Social Issues. Brand Suitability and Risk holds exactly four: Floor, High Risk, Medium Risk, and Low Risk. Those are the safety floor and risk levels that outlasted GARM, the industry alliance dissolved in 2024. Another 64 entries carry a sensitive-content flag marker. Every name and count here comes from the official 2.2 file, which is public.
Do you need a cloud-hosted API or an edge/open-source model to run locally?
It comes down to what you hold and what must not leave your boundary. If you already hold the text and it can cross a wire, a hosted lane buys a lot. It carries per-page metering, revocable keys, a prepaid wallet as the spend boundary, and no model operations. That is the right shape for backfills and product pipelines. If the corpus must stay inside your perimeter, or you need the classifier on the edge, self-host is a real road here, not a gesture. The whole model pack this platform plans to use is Apache 2.0 open weights. The encoders are small enough to run on CPU. A middle rule: prototype on the open models. Move to a metered lane when volume makes operations someone else's job. On this platform the hosted lane is written but not open. Its row sits in the platform's model data behind the public list. Nothing answers calls under the iab-2x alias until it joins. No date is promised.
Do you need to migrate or map from v2.2 to v3.0+?
If your buyers or bidding partners accept 3.x codes, plan the move. Version 3.0 was not a compatible update. The Tech Lab's version table notes it includes deletions that make it non-backwards compatible. The Tech Lab hosts an open-source taxonomy mapper in its GitHub organization, built and donated by Mixpeek under a BSD-2-Clause license. It converts 2.x codes to 3.0 equivalents. Its tools are exact label matches, fuzzy matching, and optional language-model re-ranking. It returns candidate codes with confidence scores. Two facts from the bid stream make the version matter real. OpenRTB carries the taxonomy version in a cattax field, and when that field is absent the default is 1.0, the deprecated tier. This platform splits the work across two planned lanes: iab-2x for 2.1/2.2 codes, and the iab-3x lane for 3.1 plus the cross-map. If your stack still speaks 2.x, feed it 2.x codes while you migrate.
What is API in advertising?
An API, an application programming interface, is the pipe that lets one system call another directly. In advertising it is how programmatic pieces talk. A publisher system calls a supplier platform. A buyer's decision engine calls a demand platform. Classifiers are called the same way. A content classification API takes content in and returns IAB category codes, billed per request or per page. Two different products sit under that one name, and search results mix them freely. URL categorization APIs take a web address. They fetch or look up the page, often in a pre-crawled database, and return the categories. A submitted-text API takes text you already have and returns the codes with no fetching step. If you hold article text already, the submitted-text shape is the direct one. There is no scraping hop and no dependence on another site's terms. The exact text you care about is what gets classified.
Is there a hosted API for IAB 2.2 classification?
Hosted products exist, but the shape is narrow. On this platform's dated reads of the money queries (September 2026), the ranking vendors are URL-first. They take a web address, not your text, or they sell bulk domain datasets. The brand-safety depth mostly lives in enterprise suites behind a sales contact. A self-serve classifier that takes submitted text into IAB 2.2 with public, page-metered pricing did not rank on either money query read. Small vendors that accept text do exist, with published credit tiers. None carries the 2.2 reference content or the migration path. That gap is the reason for this page. This platform's own lane is coming soon: the row is written and its rate is set, but it is not on the public list yet, nothing answers under the alias, and no date is promised. What exists today is the written capability record on this page and the open pack you can run yourself.
How would the iab-2x lane bill?
By the page, if the lane ships as designed. One page equals up to 2,000 tokens of submitted text, rounded up. A 4,500-token article meters as three pages, and a 200-token snippet as one. Requests refused at the door bill nothing. The prepaid wallet is the hard stop: once the balance is spent, the next request is refused with a named error before any work starts. The starting rate is already set, and this page's search listing carries it, recorded 25 September 2026. This platform never types prices into pages: the rate is rendered from the machine catalog, and the catalog surfaces pick it up when the row joins the public list. Nothing on this page should be read as a launch date.