Adsmom · OpenAPI Overlay 1.0.0

API Evangelist enhancements — Adsmom REST API

6 actions 6 updates documentation
Derived by API Evangelist Built from the contracts Adsmom publishes. Adsmom did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

contacttermsOfServicex-privacy-policyx-provider-slugdescriptionx-oauth-issuerx-oauth-token-endpointx-oauth-authorization-endpoint

Targets 6

$.servers
$.info
$.tags
$.components.securitySchemes.oauth
$.paths['/api/v1/usage'].get
$

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements — Adsmom REST API
  version: 1.0.0
x-provenance:
  generated: '2026-08-13'
  method: generated
  source: >-
    Generated against openapi/adsmom-inc-openapi.json, harvested verbatim from
    https://api.adsmom.com/api/v1/openapi.json on 2026-08-13. This overlay
    records API Evangelist's enhancements WITHOUT mutating the harvested spec.
    Every value below is sourced from an observed probe, a published Adsmom
    document, or a sibling artifact in this repo — nothing is invented.
  extends: openapi/adsmom-inc-openapi.json
  note: >-
    The single most consequential action here is the servers[] repair. The
    published spec declares `servers: [{url: "/"}]`, a relative server naming no
    host, so a generated client has no base URL. The concrete host is established
    by the fact that the document is itself served from
    https://api.adsmom.com/api/v1/openapi.json and every declared /api/v1/* path
    resolves there.

actions:
- target: $.servers
  description: >-
    Replace the hostless relative server with the concrete production host.
    Evidence: the spec is served from https://api.adsmom.com/api/v1/openapi.json,
    and GET https://api.adsmom.com/api/v1/usage returns an RFC 9457 401 (a routed
    endpoint) while GET https://api.adsmom.com/api/v1/nope returns 404.
  update:
  - url: https://api.adsmom.com
    description: Production

- target: $.info
  description: Add the contact, licence and terms Adsmom publishes on its own site but omits from the spec (info.contact is an empty object upstream).
  update:
    contact:
      name: Adsmom Inc. (SIA Adsmom)
      url: https://adsmom.com/product/api
    termsOfService: https://adsmom.com/terms
    x-privacy-policy: https://adsmom.com/privacy
    x-provider-slug: adsmom-inc

- target: $.tags
  description: >-
    Populate the empty root tags[] with the 14 tag names the operations already
    use, and describe each. Names are copied verbatim from the operations; the
    descriptions summarise the operations grouped under them.
  update:
  - {name: 'Account', description: 'Plan, credit balance, tracked-advertiser count and the per-minute rate limit for the calling account.'}
  - {name: 'Explore · Meta Ads', description: 'List, batch-hydrate and read Meta ads from tracked advertisers, plus daily reach timeseries.'}
  - {name: 'Explore · TikTok Ads', description: 'List, batch-hydrate and read TikTok ads, their reach timeseries, and point-in-time snapshots.'}
  - {name: 'Explore · Google Ads', description: 'List, batch-hydrate and read Google ads from tracked advertisers.'}
  - {name: 'Explore · LinkedIn Ads', description: 'List, batch-hydrate and read LinkedIn ads, their impression-bracket timeseries, and snapshots.'}
  - {name: 'Insights · Meta', description: 'Track and untrack Meta advertisers; AI insight summaries and weekly reports.'}
  - {name: 'Insights · TikTok', description: 'Track and untrack TikTok advertisers; AI insight summaries and weekly reports.'}
  - {name: 'Insights · Google', description: 'Track and untrack Google advertisers; AI insight summaries and weekly reports.'}
  - {name: 'Insights · LinkedIn', description: 'Track and untrack LinkedIn advertisers; AI insight summaries and weekly reports.'}
  - {name: 'Insights · TikTok Organic', description: 'Track and untrack TikTok organic accounts; AI summaries and weekly organic reports.'}
  - {name: 'Insights · Instagram Organic', description: 'Track and untrack Instagram organic accounts; AI summaries and weekly organic reports.'}
  - {name: 'Analytics · Meta', description: 'Reach over time and by region, activity counts, share of voice (Lorenz/Gini), targeting and top ads.'}
  - {name: 'Analytics · TikTok', description: 'Reach, activity, regions, share of voice, runtime distribution, targeting overlap and creative mix.'}
  - {name: 'Analytics · Google', description: 'Activity and impressions, regions, share of voice, runtime distribution, creative breakdown and per-advertiser stats.'}

- target: $.components.securitySchemes.oauth
  description: >-
    Annotate the bearer scheme with the real OAuth 2.0 endpoints and scopes the
    provider publishes anonymously at
    https://app.adsmom.com/.well-known/oauth-authorization-server. The upstream
    scheme is a bare http/bearer with no issuer, endpoints or scopes.
  update:
    description: >-
      OAuth 2.0 bearer JWT issued by https://app.adsmom.com. Server-to-server
      clients use client_credentials; interactive MCP clients use
      authorization_code with PKCE (S256). Credentials are created from the
      Integrations section of a paid Adsmom account.
    x-oauth-issuer: https://app.adsmom.com
    x-oauth-token-endpoint: https://app.adsmom.com/oauth/token
    x-oauth-authorization-endpoint: https://app.adsmom.com/oauth/authorize
    x-oauth-registration-endpoint: https://app.adsmom.com/oauth/register
    x-oauth-jwks-uri: https://app.adsmom.com/.well-known/jwks.json
    x-oauth-scopes-supported: [mcp:invoke, api:read, api:write, billing:read]
    x-protected-resource-metadata: https://app.adsmom.com/.well-known/oauth-protected-resource

- target: $.paths['/api/v1/usage'].get
  description: >-
    getUsage is the only operation with no security requirement in the published
    spec, but it returns 401 unauthenticated in production. Apply the scheme so
    generated clients send a token.
  update:
    security:
    - oauth: []
    x-observed-unauthenticated-status: 401

- target: $
  description: >-
    Record the runtime semantics API Evangelist observed on the wire that the
    contract does not state. These are document-level annotations, not schema
    changes.
  update:
    x-error-format: rfc9457
    x-error-media-type: application/problem+json
    x-error-fallback-media-type: application/json
    x-error-catalog: errors/adsmom-inc-problem-types.yml
    x-request-id-header: x-request-id
    x-pagination-style: cursor
    x-pagination-params: [cursor, limit]
    x-pagination-max-limit: 25
    x-pagination-response-cursor: undeclared
    x-idempotency-supported: false
    x-rate-limit-headers: none
    x-rate-limit-discovery-operation: getUsage
    x-signed-media-url-ttl: ~10 minutes (media_url and thumbnail_url expire; re-hydrate rather than cache)
    x-mcp-endpoint: https://api.adsmom.com/mcp
    x-conventions: conventions/adsmom-inc-conventions.yml
    x-data-model: data-model/adsmom-inc-data-model.yml
    x-rate-limits: rate-limits/adsmom-inc-rate-limits.yml
    x-authentication: authentication/adsmom-inc-authentication.yml

x-gaps-not-fixable-by-overlay:
- No 4xx/5xx responses are declared on any of the 78 operations. An overlay could
  bolt a Problem schema onto every response, but the scorer parses the ORIGINAL
  spec, and inventing declared error bodies Adsmom has not published would
  misrepresent the contract. This is a provider fix, not an overlay fix.
- No operation-level request/response examples exist. Schema-level `example`
  values are present on many properties and are real; operation examples are not.
- The list operations return bare arrays, so a next-cursor cannot be added
  without changing the response shape the API actually returns.

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/adsmom-inc-openapi-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

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.

A second provider on the same verified email joins the account you already have.