# authorship: generated by API Evangelist tooling. Stamped 2026-08-18 # on the file's own generator header (roadmap#64). An unmarked file is # NOT assumed to be ours -- absence of evidence was never stamped. x-method: generated overlay: 1.0.0 info: title: API Evangelist enhancements for Vidmob Creative Scoring API version: 1.0.0 extends: openapi/vidmob-creative-scoring-openapi.json x-generated: '2026-08-05' x-method: generated x-source: >- Enhancements derived from the Vidmob developer documentation (https://vidmob-api-docs.readme.io/) and the artifacts in this repo. The harvested spec is never mutated. actions: - target: $.info update: description: >- Submit an external media asset for evaluation against the guidelines configured for a Vidmob workspace and read back a weighted score and adherencePercent per advertising channel, plus a per-guideline PASS / FAIL / NOT_APPLICABLE / NO_DATA_* breakdown. Asynchronous: POST the media, poll status every 10-15 minutes, then fetch scores. contact: name: Vidmob Support email: support@vidmob.com url: https://help.vidmob.com/en/ x-apievangelist-slug: vidmob x-apievangelist-conventions: conventions/vidmob-conventions.yml x-apievangelist-errors: errors/vidmob-problem-types.yml x-apievangelist-data-model: data-model/vidmob-data-model.yml x-idempotency: supported: true mechanism: natural-key deduplication on id + version + source signal: 'HTTP 409 returns the existing uniqueId; treat as a successful deduplicated submit' x-rate-limits: documented: partial statement: Per-organization throttling applied to all endpoints; numeric limits available from Vidmob support only. - target: $.servers update: - url: https://public-api.vidmob.com description: Production - target: $.components.securitySchemes.sec0 update: description: >- Organization-scoped API key sent as `Authorization: Bearer `. Generated by an Organizational Admin at https://acs.vidmob.com/api-key-management. Scoring operations require the scoring:read scope; POST /v1/media requires scoring:read_write. - target: $.paths['/v1/media'].post update: x-async: true x-poll-operation: get-media-scoring-status x-poll-interval: PT15M x-idempotent: true x-idempotency-key-fields: [id, version, source] - target: $.paths['/v1/media/{mediaId}/status'].get update: x-terminal-statuses: [COMPLETE, UNSUPPORTED, FAILED] x-retryable-statuses: [PROCESSING, ERROR] - target: $.paths['/v1/scoring/media/{mediaId}/scores'].get update: x-result-codes: errors/vidmob-no-data-codes.yml