Blog · Spec release
OpenRTB 2.6-202501 in review: the January update, field by field
IAB Tech Lab published OpenRTB 2.6-202501 on January 27, 2025. The functional change is narrow: two new attributes, gtax and genres, added to the Content object at Section 3.2.16 of the OpenRTB 2.6 spec. If you run CTV or long-form video supply, this is the release where content genre stopped being free text.
What actually shipped
Per the release notes on the openrtb2.x GitHub repository, 2.6-202501 contains four items:
- Addition of
gtaxandgenresattributes on Object: Content, Section 3.2.16. - A new Section 7.13 in the Implementation Guidance document, "Using genres and gtax attributes," covering sell-side and buy-side guidance.
- An update to AdCOM's List: Category Taxonomies documenting the enum value for Content Taxonomy 3.1.
- Editorial cleanup: removed lingering descriptions of already-deprecated attributes, adding the version each was deprecated in and, where one exists, a pointer to its replacement.
Only the first item changes what a validator checks. The Implementation Guidance section and the taxonomy documentation update are context for that one field addition; the editorial cleanup touches spec prose, not the object model. rtblint's rule catalog tracks exactly one delta for this release, openrtb.2.6-202501.content.gtax_genres, and nothing else from this list. If you were expecting a broader changeset, this is it.
The two new fields
Both attributes live on the Content object, alongside the existing cat and cattax pair they are modeled after:
| Field | Type | Description |
|---|---|---|
content.gtax | int, default 9 | The taxonomy in use for genres. Values come from AdCOM's List: Category Taxonomies. Value 9 is IAB Tech Lab Content Taxonomy 3.1; values 500+ are reserved for vendor-specific taxonomies, the same convention cattax uses for cat. |
content.genres | int array (as shipped in 202501) | Unique ID(s) for the genre of the content, in the taxonomy named by gtax. If gtax is omitted, the spec assumes the CTV Genre Mapping subset of Content Taxonomy 3.1. A later errata in 2.6-202505 changed this type to string array; see the note below. |
The pattern is deliberate: gtax selects a taxonomy the way cattax selects one for cat/acat/bcat, and genres carries values from it the same way those fields carry category codes. If your validation logic already understands the taxonomy-selector pattern, extending it to content genre is mechanical.
A type to get right: genres started as an int array
At the time of this release, genres was typed as an integer array in Section 3.2.16's object table, matching Section 7.13.5 of the Implementation Guidance, which describes it as "an integer array" containing accepted genre IDs from Content Taxonomy 3.1. The two documents agreed at 202501. They stopped agreeing a few months later: the 2.6-202505 release changed the object table's type for genres from integer array to string array (an errata fix, to support alphanumeric IDs), but the Implementation Guidance section was not updated to match. As of this writing, Section 3.2.16 says string array and Section 7.13.5 still says integer array, so anyone reading the current spec cold should check both sections and confirm which type their counterparty actually sends, rather than assume the two documents agree.
Why this, and why now
The Content object already had a genre field (singular, free text) since OpenRTB 2.5. Free text meant every seller invented its own naming, from single words to long comma-separated strings, which made genre unusable for programmatic targeting, reporting, or brand suitability decisions. Content Taxonomy 3.1 existed already but is large; the 2.6-202501 release paired it with a smaller, purpose-built CTV Genre Mapping subset so implementers are not required to consume the full taxonomy just to tag a program as a sitcom or a newscast. The same release also added a row for "Thriller" to Content Taxonomy 3.1 itself.
The legacy genre field was not removed or deprecated in this release. Implementation Guidance treats genres/gtax as the field pair sellers should migrate to, but the spec text does not mark genre as deprecated as part of 2.6-202501.
One release later, 2.6-202505 shipped the genres type errata above and added the Data object's cids attribute for extended content identifiers, a separate field not covered here. If you are tracking dated snapshots, see the OpenRTB versions page for the full sequence rtblint catalogs.
What to check this week
If you send or receive Content objects in CTV or long-form video requests:
- Decide whether you are sending or reading
content.gtax/content.genresyet. If not, and a partner is, requests validated against an earlier snapshot will flag the fields as undefined. - If you do send
genres, confirm with your partner which JSON type they expect (string array or integer array) given the spec-versus-guidance mismatch above. - If you use a non-default
gtax, in particular a 500+ vendor code, confirm the receiving side can actually resolve that taxonomy before you rely on it for targeting or brand suitability.
To check a specific payload, paste it into the bid request tester and select the 2.6-202501 snapshot or later, or run it through the CLI:
rtblint validate request.json --version 2.6-202501
The specific rule is documented on its own page in the rule reference, and the full list of diagnostic ids rtblint can emit is in the rule reference index.