AAMP component · specification

iab-agentic-primitives

iab-agentic-primitives is an AAMP specification repository from IAB Tech Lab. The canonical shared wire contract imported by both reference agents. Not listed in the AAMP hub README.

Source: IABTechLab/iab-agentic-primitives

iab-agentic-primitives on 12 August 2026: version, kind, substance grade and hub listing. Substance is an editorial grade rather than a measurement, on the ranking test.
PropertyValue
Versionv0.5.0 (1 commits past the tag)
Commit 2fc7029f
Kindspecification
Substancesubstantial
Listed in the hub READMENo

What this repository defines

8 request and response pairs and 29 object definitions. The wire contract both reference agents pin: 48 versioned JSON Schemas for the shared objects and the request/response protocol, plus an OpenAPI document. Its own README opens with WORK IN PROGRESS — NOT YET RELEASED.

Request and response pairs

iab-agentic-primitives — 8 request and response pairs. The Required column counts top-level required fields on the request, and does not recurse into nested objects.
Message pair Required Summary
AgentDiscovery 1 Request body for ``POST /registry/agents/discover``: fetch and register a counterparty's card by its base URL.
Avails 3 Request body for ``POST /products/avails``.
ChangeRequest 0 Success envelope wrapping the ChangeRequest primitive.
DealBooking 2 Request body for ``POST /api/v1/deals`` (money-mutating: FD-12).
JsonRpc 2 JSON-RPC 2.0 request envelope, pinned to ``message/send``.
NegotiationRound 0 The seller's answer to a :class:`NegotiationMessage`.
ProductList 0 Query parameters for ``GET /products`` (pagination only).
Quote 3 Request body for ``POST /api/v1/quotes`` (money-mutating: FD-12).

The objects, field by field

These come from the schema and interface files this repository checks in, under the names the source files use.

Account

Commercial relationship between a specific buyer and seller organization.

Account fields — 7 fields, 3 required
FieldTypeRequiredDescription
account_idstringrequiredSeller-issued account identifier.
advertiser_idone of severalOptional advertiser this account transacts for (buyer-supplied).
buyer_organization_idstringrequiredRegistry-issued id of the buying organization.
extone of several
nameone of several
seller_organization_idstringrequiredRegistry-issued id of the selling organization.
statusAccountStatus

Agent

An advertising agent: A2A (agent-to-agent protocol) card plus registry identity.

Agent fields — 17 fields, 5 required
FieldTypeRequiredDescription
agent_idstringrequiredRegistry-issued agent identifier.
agent_typeAgentType
audience_capabilitiesone of severalAudience capability discovery block.
authenticationAgentAuthentication
capabilitiesAgentCapabilities
contactone of several
descriptionstringrequired
inventory_typesstring[]
namestringrequired
organization_idone of severalRegistry-issued id of the operating organization.
providerAgentProviderrequired
skillsAgentSkill[]
supported_deal_typesstring[]DealType wire values the agent supports: 'PG' (Programmatic Guaranteed), 'PD' (Preferred Deal), 'PA' (Private Auction).
tos_urlone of severalTerms-of-service URL.
trust_statusTrustStatusRegistry-verified trust status.
urlstringrequiredA2A service endpoint.
versionstring

Assignment

Binds a creative to a line with rotation rules.

Assignment fields — 9 fields, 3 required
FieldTypeRequiredDescription
assignment_idstringrequiredSeller-issued assignment identifier.
creative_idstringrequired
effective_end_dateone of several
effective_start_dateone of several
extone of several
line_idstringrequiredSeller-issued line the creative runs on.
rotation_modeRotationMode
sovone of severalShare of voice (0-1) for weighted rotation.
statusone of severalFree-form assignment status; the typed vocabulary lands with the EP-1.4 state-machine bead.

ChangeRequest

A request to modify an existing order or deal post-booking.

ChangeRequest fields — 20 fields, 2 required
FieldTypeRequiredDescription
applied_atone of several
applied_byone of several
approved_atone of several
approved_byone of several
availability_checkone of several
change_request_idstringrequiredSeller-issued change request identifier.
change_typeChangeTyperequired
deal_idone of severalDeal being modified; at least one of order_id/deal_id.
diffsFieldDiff[]
makegoodone of severalRequired when change_type == 'makegood' (FD-6).
order_idone of severalOrder being modified; at least one of order_id/deal_id.
pricing_impactone of several
proposed_valuesobject
reasonstring
rejection_reasonone of several
requested_atstring
requested_bystringActor id: 'system', 'human:<id>', or 'agent:<id>'.
severityChangeSeverity
statusChangeRequestStatus
validation_errorsstring[]

ConsentContext

Privacy consent signals that travel with a deal (flagged decision FD-10).

ConsentContext fields — 8 fields, 0 required
FieldTypeRequiredDescription
applicable_regimesstring[]Privacy regime identifiers in scope (e.g.
diligence_statusDiligenceStatusCounterparty diligence status (SGP = SafeGuard Privacy / IAB Diligence Platform).
gdpr_appliesone of severalWhether GDPR (EU General Data Protection Regulation) applies to this context; None when undetermined.
gpp_section_idsinteger[]GPP section ids present in the string.
gpp_stringone of severalGPP (Global Privacy Platform) consent string.
tcf_stringone of severalTCF (Transparency & Consent Framework) TC string, when GDPR applies.
us_privacyone of severalUS Privacy (CCPA) string, e.g.
verified_atone of severalTimezone-aware timestamp of the last diligence verification, if any.

Creative

Creative metadata for an advertising asset.

Creative fields — 14 fields, 1 required
FieldTypeRequiredDescription
account_idone of severalSeller-issued account the creative belongs to.
ad_product_taxonomyone of severalIAB Ad Product Taxonomy classification.
ad_profileAdProfile
audience_taxonomyone of severalIAB Audience Taxonomy classification.
click_urlone of several
content_policyone of several
creative_idstringrequiredSeller-issued creative identifier.
creative_manifestCreativeManifest
extone of severalExtension slot.
is_placeholderboolean
languageone of severalISO 639-1 language code.
nameone of several
placeholder_typeone of several
review_statusReviewStatusSeller-side approval state (plan §4.4).

CreativeApproval

A durable seller-side creative approval decision (EP-10.5).

CreativeApproval fields — 7 fields, 4 required
FieldTypeRequiredDescription
approval_idstringrequiredSeller-issued approval decision identifier.
creative_idstringrequiredSeller-issued id of the creative reviewed.
extone of severalExtension slot.
occurred_atstringTimezone-aware UTC timestamp of the review decision.
reasonone of severalRationale, required in practice for a rejection.
reviewerstringrequiredActor id: 'system', 'human:<id>', or 'agent:<id>'.
statusReviewStatusrequiredOutcome of this review decision.

Deal

A confirmed deal booked from a quote (Deals API v1.0 book phase).

Deal fields — 18 fields, 5 required
FieldTypeRequiredDescription
activation_instructionsobject
buyer_tierAccessTier
consent_contextone of severalPrivacy consent signals riding with the deal (FD-10).
created_atstring
deal_idstringrequiredSeller-issued deal identifier.
deal_typeDealTyperequired
expires_atone of severalAcceptance window for a proposed deal.
linear_tvone of severalLinear TV details carried over from the booked quote (FD-6).
media_typeMediaType
openrtb_paramsone of several
pricingQuotePricingrequired
productProductRefrequired
quote_idone of severalSeller-issued id of the quote this deal booked.
rate_card_idone of severalSeller-issued id of the private rate card this deal books against, when the pair has one (FD-9).
seller_idone of severalRegistry-issued id of the selling agent.
statusDealStatus
supply_chainone of severalOpenRTB supply chain (schain) for transparency (EP-10.3); optional so pre-schain deals still validate.
termsQuoteTermsrequired

DecisionRecord

A durable record of why a money/state decision was made (EP-10.1).

DecisionRecord fields — 13 fields, 6 required
FieldTypeRequiredDescription
actorDecisionActorrequired
correlation_idone of severalCorrelation id linking related records/events.
decision_idstringrequiredId of this decision record (minted by the decider).
decision_typeDecisionTyperequired
extone of severalExtension slot.
inputsDecisionInputRef[]References/hashes of the counterparty inputs and model outputs that drove the decision (never raw prompts).
money_effectone of severalMoney movement this decision caused, if any (exact micros; FD-11).
negotiation_idone of severalNegotiation the decision belongs to, if any.
occurred_atstringTimezone-aware UTC timestamp of when the decision was made.
rationaleDecisionRationalerequired
session_idone of severalSession the decision occurred in, if any.
subject_idstringrequiredId of the deal/quote/order/...
subject_typestringrequiredType of the subject: 'deal', 'quote', 'order', 'negotiation', 'change_request'.

Line

Individual product booking within an order (OpenDirect Line).

Line fields — 13 fields, 8 required
FieldTypeRequiredDescription
costone of severalCalculated cost (read-only, seller-computed).
end_datestringrequired
extone of several
line_idstringrequiredSeller-issued line identifier.
namestringrequired
order_idstringrequired
pricing_modelPricingModel
product_idstringrequired
quantityintegerrequiredTarget impressions or units.
rateMoneyrequiredRate per pricing-model unit (exact micros; FD-11).
start_datestringrequired
statusLineStatus
targetingone of several

MediaKit

A seller's discoverable inventory catalog: the packages it offers buyers.

MediaKit fields — 9 fields, 3 required
FieldTypeRequiredDescription
contactone of several
created_atstring
currencystringISO 4217 currency code.
descriptionone of several
media_kit_idstringrequiredSeller-issued media kit identifier.
namestringrequired
packagesPackage[]
seller_organization_idstringrequiredRegistry-issued id of the publishing seller organization.
updated_atone of several

Negotiation

Multi-turn offer history container for a buyer/seller negotiation.

Negotiation fields — 10 fields, 1 required
FieldTypeRequiredDescription
buyer_tierAccessTier
completed_atone of several
negotiation_idstringrequiredSeller-issued negotiation identifier.
package_idone of severalSet when negotiating on a package.
product_idone of several
proposal_idone of severalProposal under negotiation, if proposal-led.
quote_idone of severalQuote under negotiation, if quote-led.
roundsNegotiationRound[]
started_atstring
statusNegotiationStatus

Order

Campaign container (insertion order) holding one or more lines.

Order fields — 14 fields, 6 required
FieldTypeRequiredDescription
account_idstringrequiredSeller-issued account identifier.
budgetMoneyrequiredEstimated budget (exact micros; FD-11).
consent_contextone of severalPrivacy consent signals riding with the order (FD-10).
created_atstring
deal_idone of severalDeal this order fulfils, if deal-led.
end_datestringrequired
extone of several
external_idsone of severalAd-server order references (e.g.
namestringrequired
order_idstringrequiredSeller-issued order identifier.
proposal_idone of severalProposal this order materializes, if any.
start_datestringrequired
statusOrderStatus
updated_atone of several

Organization

Legal/commercial entity participating in the ecosystem.

Organization fields — 7 fields, 3 required
FieldTypeRequiredDescription
addressone of several
contactsone of several
extone of severalExtension slot.
namestringrequired
organization_idstringrequiredRegistry-issued organization identifier.
roleOrganizationRolerequired
statusOrganizationStatus

Package

Curated inventory package for media kit discovery.

Package fields — 20 fields, 2 required
FieldTypeRequiredDescription
ad_formatsstring[]
audience_capabilitiesone of severalAudience capability declaration.
base_priceone of severalPublic/blended list price, if disclosed.
catstring[]IAB Content Taxonomy category ids, e.g.
cattaxintegerContent taxonomy version: 1=CT1.0, 2=CT2.0, 3=CT3.0.
created_atstring
descriptionone of several
device_typesinteger[]AdCOM DeviceType integers.
geo_targetsstring[]ISO 3166-2 codes, e.g.
is_featuredboolean
layerPackageLayer
namestringrequired
package_idstringrequiredSeller-issued package identifier.
placementsPackagePlacement[]
pricing_modelPricingModel
pricing_typePricingType
seasonal_labelone of several
statusPackageStatus
tagsstring[]
updated_atone of several

Product

Sellable unit of publisher inventory.

Product fields — 16 fields, 3 required
FieldTypeRequiredDescription
ad_formatsstring[]OpenRTB (Open Real-Time Bidding) formats: "banner", "video", "native", "audio".
ad_product_targetingone of severalIAB Ad Product Taxonomy targeting intent.
audience_targetingone of severalIAB Audience Taxonomy targeting intent.
available_impressionsone of several
base_priceone of severalPublic list price, if disclosed; None when pricing is on request.
commercial_termsone of several
content_targetingone of severalIAB Content Taxonomy targeting intent.
delivery_typeDeliveryType
descriptionone of several
domainone of several
extone of severalExtension slot.
namestringrequired
pricing_modelPricingModel
pricing_typePricingType
product_idstringrequiredSeller-issued product identifier.
seller_organization_idstringrequiredRegistry-issued id of the owning seller organization.

Proposal

A structured buy proposal under negotiation between the pair.

Proposal fields — 11 fields, 4 required
FieldTypeRequiredDescription
account_idstringrequiredSeller-issued account identifier.
created_atstring
current_revision_numberinteger
end_datestringrequired
extone of several
linesProposalLine[]
proposal_idstringrequiredSeller-issued proposal identifier.
proposal_thread_idone of severalStable id across all revisions of this negotiation, if threaded.
start_datestringrequired
statusProposalStatus
updated_atone of several

Quote

A non-binding price quote from a seller (Deals API v1.0 quote phase).

Quote fields — 16 fields, 5 required
FieldTypeRequiredDescription
availabilityone of several
buyer_tierAccessTier
consent_contextone of severalPrivacy consent signals riding with the quote (FD-10).
created_atstring
deal_idone of severalSeller-issued deal id, set once the quote is booked.
deal_typeDealTyperequired
expires_atone of several
linear_tvone of severalLinear TV details; None for digital/CTV.
media_typeMediaType
pricingQuotePricingrequired
productProductRefrequired
quote_idstringrequiredSeller-issued quote identifier.
rate_card_idone of severalSeller-issued id of the private rate card this quote prices against, when the pair has one (FD-9).
seller_idone of severalRegistry-issued id of the quoting seller agent.
statusQuoteStatus
termsQuoteTermsrequired

RateCard

The private, negotiated rates a specific buyer/seller pair has agreed to.

RateCard fields — 11 fields, 4 required
FieldTypeRequiredDescription
account_idone of severalSeller-issued account the agreement rides on, if any.
buyer_organization_idstringrequiredRegistry-issued id of the buyer party to the agreement.
created_atstring
effective_fromstringrequiredFirst day the agreed rates apply.
effective_toone of severalLast day the agreed rates apply; None = open-ended.
entriesRateCardEntry[]Negotiated product/format -> rate entries.
notesone of several
rate_card_idstringrequiredSeller-issued rate card identifier.
seller_organization_idstringrequiredRegistry-issued id of the seller party to the agreement.
statusRateCardStatus
updated_atone of several

SellersJsonEntry

One entry from a system's sellers.json file.

SellersJsonEntry fields — 7 fields, 2 required
FieldTypeRequiredDescription
commentone of severalOptional free-text comment.
domainone of severalSeller business domain; None when confidential.
extone of severalExtension slot.
is_confidentialbooleanTrue when name/domain are withheld (sellers.json is_confidential=1).
nameone of severalSeller business name; None when confidential.
seller_idstringrequiredOpaque seller id, unique within the publishing system.
seller_typeSellerTyperequiredPUBLISHER, INTERMEDIARY, or BOTH.

Session

A persistent multi-turn buyer conversation with a seller.

Session fields — 11 fields, 1 required
FieldTypeRequiredDescription
active_deal_idsstring[]
active_negotiation_idsstring[]
buyer_identityBuyerIdentity
closed_atone of several
created_atstring
expires_atone of several
messagesSessionMessage[]
metadataobject
session_idstringrequiredSeller-issued session identifier.
statusSessionStatus
updated_atstring

SupplyChain

OpenRTB SupplyChain object (``schain``): the ordered node path.

SupplyChain fields — 4 fields, 0 required
FieldTypeRequiredDescription
completeintegerOpenRTB 0/1: 1 = all nodes in the path are disclosed.
extone of severalExtension slot.
nodesSupplyChainNode[]Supply path, ordered first-seller -> requesting-entity.
verstringSupplyChain object version (OpenRTB ``ver``).

AgentTrustVerification

Registry-verified trust result for an agent (replaces the buyer's ``AgentTrustInfo``).

AgentTrustVerification fields — 5 fields, 1 required
FieldTypeRequiredDescription
agent_idone of severalRegistry-issued agent id, when registered.
agent_urlstringrequired
registry_idone of severalRegistry that answered, e.g.
trust_statusTrustStatus
verified_atone of severalTimezone-aware timestamp of the verification.

Avails

Spec per-product RESPONSE record for ``POST /products/avails``.

Avails fields — 8 fields, 5 required
FieldTypeRequiredDescription
accountidstringrequiredEcho of the requesting account (spec-required).
availabilityone of severalQuantity available for booking in the date range.
availsstatusone of severalAvailability grouping (Available / Partially Available / Unavailable).
currencyone of severalISO-4217 currency code.
enddatestringrequiredEcho of the requested delivery end (spec-required).
pricenumberrequiredThe product's price (spec-required; OpenDirect 2.1 float dialect, FD-11 exception).
productidstringrequiredProduct the availability + pricing is for (spec-required).
startdatestringrequiredEcho of the requested delivery start (spec-required).

Those are the first 24, in source order. The remaining 5 definitions in the repository are AvailsCollection, ChangeRequestCreate, ErrorEnvelope, NegotiationMessage, ProductAvailsSearch .

Related