overlay: 1.0.0
info:
title: API Evangelist enhancements — Ibotta Product API
version: 1.0.0
x-provenance:
generated: '2026-08-12'
method: generated
source: >-
Enhancements API Evangelist applied on top of the verbatim harvest at
openapi/_original/ibotta-product-api-openapi.json (fetched from
https://ibotta.com/bex-api/api-docs.json). Every action below is either an observed fact
(the live 401) or metadata sourced from Ibotta's own published documents
(https://ibotta.com/.well-known/ai-plugin.json). Nothing is invented.
extends: openapi/_original/ibotta-product-api-openapi.json
applied_to: openapi/ibotta-product-api-openapi.yml
extends: openapi/_original/ibotta-product-api-openapi.json
actions:
- target: $.info
description: >-
Add contact and terms of service from Ibotta's published plugin manifest
(contact_email bexsupport@ibotta.com, legal_info_url https://legal.ibotta.com/).
update:
contact:
name: Ibotta Browser Extension Support
email: bexsupport@ibotta.com
url: https://help.ibotta.com/
termsOfService: https://legal.ibotta.com/
x-source: >-
https://ibotta.com/bex-api/api-docs.json (declared by
https://ibotta.com/.well-known/ai-plugin.json)
- target: $
description: >-
Declare the bearer security scheme the published spec omits. Ibotta's plugin manifest
declares auth.type "service_http" with authorization_type "bearer"; the spec itself carried
no components.securitySchemes and no security requirement.
update:
security:
- bearerAuth: []
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: >-
Service-level bearer token. Declared as auth.type "service_http" /
authorization_type "bearer" in https://ibotta.com/.well-known/ai-plugin.json.
Tokens are not self-serve; an anonymous request returns 401
{"message":"Unauthorized"}.
- target: $
description: Declare a tag so the single operation is classifiable.
update:
tags:
- name: Products
description: Product search across Ibotta browser-extension retailer coverage.
- target: $.paths['/openai/search'].post
description: Tag the operation and bind it to the bearer scheme.
update:
tags:
- Products
security:
- bearerAuth: []
- target: $.paths['/openai/search'].post.responses
description: >-
Add the 401 response observed live on 2026-08-12 but absent from the published spec, which
documented only 200 and 403.
update:
'401':
description: >-
Unauthorized — no valid bearer token supplied. Observed live on an anonymous POST
(2026-08-12): {"message":"Unauthorized"}.
content:
application/json:
schema:
type: object
properties:
message:
type: string
required:
- message
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.