{"openapi":"3.0.3","info":{"title":"Moyo HTTP APIs","version":"2026-10-14","description":"Scan API (prepaid moyo_live_ keys) and licensed maps data API (moyodata_live_ keys). Public map HTML and markdown are for reading and citation. They are not a bulk or training license. The member workspace API is not part of this document."},"servers":[{"url":"https://moyomap.com"}],"tags":[{"name":"Scan"},{"name":"Maps data"}],"components":{"securitySchemes":{"scanKey":{"type":"http","scheme":"bearer","description":"Prepaid Custom Research key: moyo_live_…"},"retrievalToken":{"type":"http","scheme":"bearer","description":"One-time retrieval token from scan create: moyoret_…"},"dataKey":{"type":"http","scheme":"bearer","description":"Licensed maps key: moyodata_live_…. X-API-Key is also accepted."}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}},"ScanCreate":{"type":"object","required":["target","idempotencyKey"],"properties":{"audience":{"type":"string","enum":["organization","personal","competitive","security","opposition"]},"target":{"type":"object","required":["organization"],"properties":{"organization":{"type":"string"},"domain":{"type":"string"}}},"race":{"type":"string","description":"Required when audience is opposition."},"focus":{"type":"string"},"email":{"type":"string"},"idempotencyKey":{"type":"string","minLength":8,"maxLength":128}}},"Scan":{"type":"object","properties":{"orderId":{"type":"string"},"status":{"type":"string"},"product":{"type":"string"},"audience":{"type":"string"},"organization":{"type":"string"},"replayed":{"type":"boolean"},"retrievalToken":{"type":"string"},"scansTotal":{"type":"integer"},"scansToday":{"type":"integer"},"results":{"type":"object","nullable":true,"properties":{"onePage":{"type":"string","nullable":true},"claims":{"type":"string","nullable":true},"reportData":{"type":"string","nullable":true}}}}}}},"paths":{"/api/v1/scans":{"post":{"tags":["Scan"],"operationId":"createScan","security":[{"scanKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanCreate"}}}},"responses":{"200":{"description":"Idempotency replay. The retrieval token is not repeated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scan"}}}},"202":{"description":"Scan accepted. retrievalToken is returned once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scan"}}}},"402":{"description":"Insufficient prepaid balance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/scans/{orderId}":{"get":{"tags":["Scan"],"operationId":"getScan","security":[{"retrievalToken":[]}],"parameters":[{"name":"orderId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scan status. Download result URLs with the same retrieval token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scan"}}}}}}},"/api/moyomap/enterprise/maps":{"get":{"tags":["Maps data"],"operationId":"listLicensedMaps","security":[{"dataKey":[]}],"description":"Corpus index. Requires scope corpus_read. Metered per calendar month.","responses":{"200":{"description":"Licensed corpus index."}}}},"/api/moyomap/enterprise/maps/{id}":{"get":{"tags":["Maps data"],"operationId":"getLicensedMap","security":[{"dataKey":[]}],"description":"One licensed map, including citations, source models, and contributor attribution. Requires corpus_read.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Licensed map."}}}},"/api/moyomap/enterprise/snapshot":{"get":{"tags":["Maps data"],"operationId":"exportLicensedSnapshot","security":[{"dataKey":[]}],"description":"Full corpus export. Requires snapshot_export. purpose=ai_training requires the separately priced ai_training scope.","parameters":[{"name":"purpose","in":"query","schema":{"type":"string","enum":["ai_training"]}}],"responses":{"200":{"description":"Corpus snapshot."}}}}}}