openapi: 3.2.0 info: title: Adsmom Insights · LinkedIn API description: Stable REST API for tracked ad intelligence across Meta, TikTok, and Google. Authenticate with OAuth 2.0 client_credentials. version: '1.0' contact: {} servers: - url: / tags: - name: Insights · LinkedIn paths: /api/v1/insights/linkedin/advertisers: get: operationId: listLinkedinAdvertisers parameters: [] responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/Advertiser' security: - oauth: [] summary: List your tracked LinkedIn advertisers tags: - Insights · LinkedIn post: operationId: trackLinkedinAdvertiser parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LinkedinTrackBody' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/TrackedAdvertiser' security: - oauth: [] summary: Track a LinkedIn advertiser tags: - Insights · LinkedIn /api/v1/insights/linkedin/advertisers/{id_token}: get: operationId: getLinkedinAdvertiser parameters: - name: id_token required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Advertiser' security: - oauth: [] summary: Get a tracked LinkedIn advertiser tags: - Insights · LinkedIn delete: operationId: untrackLinkedinAdvertiser parameters: - name: id_token required: true in: path schema: type: string responses: '204': description: '' security: - oauth: [] summary: Untrack a LinkedIn advertiser tags: - Insights · LinkedIn /api/v1/insights/linkedin/advertisers/{id_token}/summary: get: operationId: getLinkedinAdvertiserSummary parameters: - name: id_token required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/AdvertiserInsight' security: - oauth: [] summary: AI insight summary for a tracked LinkedIn advertiser tags: - Insights · LinkedIn /api/v1/insights/linkedin/advertisers/{id_token}/reports/weekly: get: operationId: getLinkedinAdvertiserWeeklyReport parameters: - name: id_token required: true in: path schema: type: string - name: week_start required: false in: query description: Week start date (ISO 8601). Omit for the latest report. schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/WeeklyReport' security: - oauth: [] summary: Weekly report for a tracked LinkedIn advertiser tags: - Insights · LinkedIn components: schemas: AdvertiserInsight: type: object properties: gid: type: string example: gid://adsmom/tiktok/advertiser/7100 id_token: type: string example: tiktok.advertiser.7100 platform: type: string enum: - meta - tiktok - google - linkedin status: type: string description: Generation status (e.g. completed, pending). generated_at: type: - string - 'null' total_ads_analyzed: type: - number - 'null' page_summary: type: - object - 'null' description: AI-generated; structure may evolve. ad_analysis: type: - object - 'null' description: AI-generated; structure may evolve. initial_assessment: type: - object - 'null' description: AI-generated; structure may evolve. recommendations: type: - object - 'null' description: AI-generated; structure may evolve. required: - gid - id_token - platform - status - generated_at - total_ads_analyzed - page_summary - ad_analysis - initial_assessment - recommendations LinkedinTrackBody: type: object properties: company_id: type: string description: Exact LinkedIn /company/{id} key (numeric id or vanity slug). company_url: type: string description: LinkedIn company URL, e.g. https://www.linkedin.com/company/microsoft/. The /company/ segment is used as the exact key. name: type: string description: Advertiser display name. Must uniquely match an already-discovered advertiser; otherwise a discovery crawl is started and the request should be retried. TrackedAdvertiser: type: object properties: gid: type: string example: gid://adsmom/tiktok/advertiser/7100 id_token: type: string example: tiktok.advertiser.7100 platform: type: string enum: - meta - tiktok - google - linkedin name: type: string example: Kaufland external_id: type: - string - 'null' description: Platform-native business id, when resolved. is_active: type: boolean example: true pending_ingest: type: boolean description: True when the ingest crawl has not completed yet. tracked_at: type: - string - 'null' required: - gid - id_token - platform - name - external_id - is_active - pending_ingest - tracked_at WeeklyReport: type: object properties: gid: type: string example: gid://adsmom/tiktok/advertiser/7100 id_token: type: string example: tiktok.advertiser.7100 platform: type: string enum: - meta - tiktok - google - linkedin week_start: type: string example: '2026-06-15' week_end: type: string example: '2026-06-21' created_at: type: - string - 'null' report: type: - object - 'null' description: AI-generated; structure may evolve. metrics: type: - object - 'null' previous_metrics: type: - object - 'null' required: - gid - id_token - platform - week_start - week_end - created_at - report - metrics - previous_metrics Advertiser: type: object properties: gid: type: string description: Canonical global id. Use the slash-free form in path params. example: gid://adsmom/tiktok/advertiser/123456 id_token: type: string description: Slash-free id token for use in URL path segments. example: tiktok.advertiser.123456 platform: type: string enum: - meta - tiktok - google - linkedin example: tiktok name: type: string description: Advertiser / page display name. example: Kaufland required: - gid - id_token - platform - name securitySchemes: oauth: scheme: bearer bearerFormat: JWT type: http