← All API operations

GET /api/v1/inventory

Browse inventory for one channel

Returns inventory from the authenticated advertiser’s configured adapters. Filters combine with AND; comma-separated tags combine with OR. Modeled sandbox inventory does not prove current live availability.

Authenticated and advertiser scoped. Cross-tenant resource access returns 404. Product/channel entitlements also apply.

Request

HTTP
GET /api/v1/inventory

Use the configured API origin. Private requests require a verified Bearer credential; an agent mutation can additionally require exact approval headers. Authentication guide →

ParameterLocationRequiredDescription
channelqueryYes
cityqueryConditional / optional
queryqueryConditional / optional
tagsqueryConditional / optional
maxCpmMinorqueryConditional / optional
Parameter schemas
JSON Schema
[
  {
    "name": "channel",
    "in": "query",
    "required": true,
    "schema": {
      "type": "string",
      "enum": [
        "ctv",
        "audio",
        "tv",
        "cinema",
        "dooh",
        "search",
        "social"
      ]
    },
    "style": "form",
    "explode": true
  },
  {
    "name": "city",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    },
    "style": "form",
    "explode": true
  },
  {
    "name": "query",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    },
    "style": "form",
    "explode": true
  },
  {
    "name": "tags",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string"
    },
    "style": "form",
    "explode": true
  },
  {
    "name": "maxCpmMinor",
    "in": "query",
    "required": false,
    "schema": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "style": "form",
    "explode": true
  }
]

Responses

Reference schemas resolve through the downloadable OpenAPI components. The specification marks unmodeled success payloads; an unrestricted payload is not a promise that arbitrary fields exist.

400Invalid request or unsupported fields
Response contract
{
  "description": "Invalid request or unsupported fields",
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/Error"
      }
    }
  }
}
401Missing or invalid authentication
Response contract
{
  "description": "Missing or invalid authentication",
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/Error"
      }
    }
  }
}
403Permission or product scope refused
Response contract
{
  "description": "Permission or product scope refused",
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/Error"
      }
    }
  }
}
404Route or tenant-scoped resource not found
Response contract
{
  "description": "Route or tenant-scoped resource not found",
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/Error"
      }
    }
  }
}
409State, revision, approval, funding or idempotency conflict
Response contract
{
  "description": "State, revision, approval, funding or idempotency conflict",
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/Error"
      }
    }
  }
}
422Supplier configuration, capability or upstream refusal
Response contract
{
  "description": "Supplier configuration, capability or upstream refusal",
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/Error"
      }
    }
  }
}
429Rate limit reached; wait before retrying
Response contract
{
  "description": "Rate limit reached; wait before retrying",
  "headers": {
    "x-ratelimit-limit": {
      "description": "Maximum requests permitted in the current rate-limit window.",
      "schema": {
        "type": "integer"
      }
    },
    "x-ratelimit-remaining": {
      "description": "Requests remaining in the current window.",
      "schema": {
        "type": "integer"
      }
    },
    "x-ratelimit-reset": {
      "description": "Seconds until the current rate-limit window resets.",
      "schema": {
        "type": "integer"
      }
    },
    "retry-after": {
      "description": "Minimum seconds to wait before retrying.",
      "schema": {
        "type": "integer"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/Error"
      }
    }
  }
}
500Internal error; inspect state before retrying a mutation
Response contract
{
  "description": "Internal error; inspect state before retrying a mutation",
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/Error"
      }
    }
  }
}
503Dependency or authentication verifier unavailable
Response contract
{
  "description": "Dependency or authentication verifier unavailable",
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/Error"
      }
    }
  }
}
2XXSuccessful response.
Response contract
{
  "description": "Successful response.",
  "headers": {
    "x-ratelimit-limit": {
      "description": "Maximum requests permitted in the current rate-limit window.",
      "schema": {
        "type": "integer"
      }
    },
    "x-ratelimit-remaining": {
      "description": "Requests remaining in the current window.",
      "schema": {
        "type": "integer"
      }
    },
    "x-ratelimit-reset": {
      "description": "Seconds until the current rate-limit window resets.",
      "schema": {
        "type": "integer"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "adapterKey": {
                  "type": "string"
                },
                "channel": {
                  "type": "string",
                  "enum": [
                    "ctv",
                    "audio",
                    "tv",
                    "cinema",
                    "dooh",
                    "search",
                    "social"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "screen",
                    "app-channel",
                    "show",
                    "venue",
                    "attribute-package",
                    "network"
                  ]
                },
                "location": {
                  "type": "object",
                  "properties": {
                    "city": {
                      "type": "string"
                    },
                    "lat": {
                      "type": "number"
                    },
                    "lng": {
                      "type": "number"
                    },
                    "postcodeDistrict": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "city"
                  ],
                  "additionalProperties": true
                },
                "format": {
                  "type": "string"
                },
                "audienceMonthly": {
                  "type": "integer",
                  "minimum": 0
                },
                "cpmMinor": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "currency": {
                  "type": "string",
                  "enum": [
                    "GBP",
                    "USD",
                    "EUR"
                  ]
                },
                "owner": {
                  "type": "string"
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "default": []
                }
              },
              "required": [
                "id",
                "adapterKey",
                "channel",
                "name",
                "kind",
                "cpmMinor",
                "currency"
              ],
              "additionalProperties": true
            }
          },
          "count": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "items",
          "count"
        ],
        "additionalProperties": true
      }
    }
  }
}

Operation constraints

Machine-readable metadata
{
  "x-response-schema-completeness": "modeled",
  "x-rate-limit": {
    "requests": 300,
    "windowMilliseconds": 60000,
    "key": "request IP",
    "headers": [
      "x-ratelimit-limit",
      "x-ratelimit-remaining",
      "x-ratelimit-reset"
    ]
  },
  "x-idempotency": {
    "policy": "not-generalized",
    "note": "There is no universal Idempotency-Key middleware. Only the documented endpoint mechanisms protect retries."
  }
}

Complete operation

OpenAPI
{
  "operationId": "get_api_v1_inventory",
  "summary": "Browse inventory for one channel",
  "description": "Returns inventory from the authenticated advertiser’s configured adapters. Filters combine with AND; comma-separated tags combine with OR. Modeled sandbox inventory does not prove current live availability.\n\nAuthenticated and advertiser scoped. Cross-tenant resource access returns 404. Product/channel entitlements also apply.",
  "tags": [
    "Inventory"
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "parameters": [
    {
      "name": "channel",
      "in": "query",
      "required": true,
      "schema": {
        "type": "string",
        "enum": [
          "ctv",
          "audio",
          "tv",
          "cinema",
          "dooh",
          "search",
          "social"
        ]
      },
      "style": "form",
      "explode": true
    },
    {
      "name": "city",
      "in": "query",
      "required": false,
      "schema": {
        "type": "string"
      },
      "style": "form",
      "explode": true
    },
    {
      "name": "query",
      "in": "query",
      "required": false,
      "schema": {
        "type": "string"
      },
      "style": "form",
      "explode": true
    },
    {
      "name": "tags",
      "in": "query",
      "required": false,
      "schema": {
        "type": "string"
      },
      "style": "form",
      "explode": true
    },
    {
      "name": "maxCpmMinor",
      "in": "query",
      "required": false,
      "schema": {
        "type": "integer",
        "exclusiveMinimum": 0
      },
      "style": "form",
      "explode": true
    }
  ],
  "responses": {
    "400": {
      "description": "Invalid request or unsupported fields",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "401": {
      "description": "Missing or invalid authentication",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "403": {
      "description": "Permission or product scope refused",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "404": {
      "description": "Route or tenant-scoped resource not found",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "409": {
      "description": "State, revision, approval, funding or idempotency conflict",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "422": {
      "description": "Supplier configuration, capability or upstream refusal",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "429": {
      "description": "Rate limit reached; wait before retrying",
      "headers": {
        "x-ratelimit-limit": {
          "description": "Maximum requests permitted in the current rate-limit window.",
          "schema": {
            "type": "integer"
          }
        },
        "x-ratelimit-remaining": {
          "description": "Requests remaining in the current window.",
          "schema": {
            "type": "integer"
          }
        },
        "x-ratelimit-reset": {
          "description": "Seconds until the current rate-limit window resets.",
          "schema": {
            "type": "integer"
          }
        },
        "retry-after": {
          "description": "Minimum seconds to wait before retrying.",
          "schema": {
            "type": "integer"
          }
        }
      },
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "500": {
      "description": "Internal error; inspect state before retrying a mutation",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "503": {
      "description": "Dependency or authentication verifier unavailable",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "2XX": {
      "description": "Successful response.",
      "headers": {
        "x-ratelimit-limit": {
          "description": "Maximum requests permitted in the current rate-limit window.",
          "schema": {
            "type": "integer"
          }
        },
        "x-ratelimit-remaining": {
          "description": "Requests remaining in the current window.",
          "schema": {
            "type": "integer"
          }
        },
        "x-ratelimit-reset": {
          "description": "Seconds until the current rate-limit window resets.",
          "schema": {
            "type": "integer"
          }
        }
      },
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "adapterKey": {
                      "type": "string"
                    },
                    "channel": {
                      "type": "string",
                      "enum": [
                        "ctv",
                        "audio",
                        "tv",
                        "cinema",
                        "dooh",
                        "search",
                        "social"
                      ]
                    },
                    "name": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "screen",
                        "app-channel",
                        "show",
                        "venue",
                        "attribute-package",
                        "network"
                      ]
                    },
                    "location": {
                      "type": "object",
                      "properties": {
                        "city": {
                          "type": "string"
                        },
                        "lat": {
                          "type": "number"
                        },
                        "lng": {
                          "type": "number"
                        },
                        "postcodeDistrict": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "city"
                      ],
                      "additionalProperties": true
                    },
                    "format": {
                      "type": "string"
                    },
                    "audienceMonthly": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "cpmMinor": {
                      "type": "integer",
                      "exclusiveMinimum": 0
                    },
                    "currency": {
                      "type": "string",
                      "enum": [
                        "GBP",
                        "USD",
                        "EUR"
                      ]
                    },
                    "owner": {
                      "type": "string"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "default": []
                    }
                  },
                  "required": [
                    "id",
                    "adapterKey",
                    "channel",
                    "name",
                    "kind",
                    "cpmMinor",
                    "currency"
                  ],
                  "additionalProperties": true
                }
              },
              "count": {
                "type": "integer",
                "minimum": 0
              }
            },
            "required": [
              "items",
              "count"
            ],
            "additionalProperties": true
          }
        }
      }
    }
  },
  "x-response-schema-completeness": "modeled",
  "x-rate-limit": {
    "requests": 300,
    "windowMilliseconds": 60000,
    "key": "request IP",
    "headers": [
      "x-ratelimit-limit",
      "x-ratelimit-remaining",
      "x-ratelimit-reset"
    ]
  },
  "x-idempotency": {
    "policy": "not-generalized",
    "note": "There is no universal Idempotency-Key middleware. Only the documented endpoint mechanisms protect retries."
  }
}
Download the complete specification, including shared schema components →