{"openapi":"3.1.0","info":{"title":"Science AI Journal organisation API","version":"2026-10-19","description":"Research tools for journals, publishers and research organisations."},"servers":[{"url":"https://scienceaijournal.com"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"saij_…"}}},"paths":{"/api/review/claude":{"post":{"summary":"AI review (one agent per call)","description":"Runs one specialist reviewer agent on a prepared manuscript prompt and returns strict JSON: a score, a decision, strengths, concerns and questions for the authors. Cost: 4 credits per call.","x-status":"live","x-scope":"tools:review","x-cost":"4 credits per call","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"string, required — the agent prompt with the manuscript text"},"agentType":{"type":"string","description":"string — methodology | formulas | originality | literature | reproducibility | clarity | figures"}}},"example":{"agentType":"methodology","prompt":"Review the methodology of this manuscript: "}}}},"responses":{"200":{"description":"OK"},"400":{"description":"The request body is missing a required field or is not JSON."},"401":{"description":"No valid key, or a general all-tools key at the Journal Finder, which needs its scope named on the key. Nothing is charged."},"402":{"description":"Not enough credits for the call. Nothing is charged."},"403":{"description":"The key lacks the scope this endpoint needs. Nothing is charged."},"429":{"description":"Rate limit reached: 60 calls a minute and 2000 a day per key unless your organisation has other limits. See Retry-After."}}}},"/api/prior-publication":{"post":{"summary":"Prior-publication check","description":"Checks a title (and abstract, to confirm close matches) for an earlier publication across the external scholarly indexes and the local library. Cost: no credits (rate-limited per key).","x-status":"live","x-scope":null,"x-cost":"no credits (rate-limited per key)","security":[{"bearerAuth":[]},{}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"string, required"},"abstract":{"type":"string","description":"string"},"doi":{"type":"string","description":"string — the article's own DOI, if it has one"}}},"example":{"title":"","abstract":""}}}},"responses":{"200":{"description":"OK"},"400":{"description":"The request body is missing a required field or is not JSON."},"401":{"description":"No valid key, or a general all-tools key at the Journal Finder, which needs its scope named on the key. Nothing is charged."},"402":{"description":"Not enough credits for the call. Nothing is charged."},"403":{"description":"The key lacks the scope this endpoint needs. Nothing is charged."},"429":{"description":"Rate limit reached: 60 calls a minute and 2000 a day per key unless your organisation has other limits. See Retry-After."}}}},"/api/research-gaps":{"post":{"summary":"Literature search and research-gap context","description":"Returns the field overview and the closest papers for a topic or a manuscript's title and keywords. Cost: no credits for the search.","x-status":"live","x-scope":"tools:gaps","x-cost":"no credits for the search","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"string, required — at least 4 characters"},"field":{"type":"string","description":"string — optional field hint"}}},"example":{"query":"soil microbial networks under grassland degradation"}}}},"responses":{"200":{"description":"OK"},"400":{"description":"The request body is missing a required field or is not JSON."},"401":{"description":"No valid key, or a general all-tools key at the Journal Finder, which needs its scope named on the key. Nothing is charged."},"402":{"description":"Not enough credits for the call. Nothing is charged."},"403":{"description":"The key lacks the scope this endpoint needs. Nothing is charged."},"429":{"description":"Rate limit reached: 60 calls a minute and 2000 a day per key unless your organisation has other limits. See Retry-After."}}}},"/api/journal-recommender":{"post":{"summary":"Journal Finder","description":"Ranks target journals for a title and abstract, with predatory-journal flags. An organisation key must carry this scope by name; a general key gets HTTP 401 and is not charged. Cost: 15 credits per search.","x-status":"live","x-scope":"tools:journal-finder (named on the key)","x-cost":"15 credits per search","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"string, required"},"abstract":{"type":"string","description":"string"},"maxResults":{"type":"number","description":"number — up to 25"}}},"example":{"title":"","abstract":"","maxResults":10}}}},"responses":{"200":{"description":"OK"},"400":{"description":"The request body is missing a required field or is not JSON."},"401":{"description":"No valid key, or a general all-tools key at the Journal Finder, which needs its scope named on the key. Nothing is charged."},"402":{"description":"Not enough credits for the call. Nothing is charged."},"403":{"description":"The key lacks the scope this endpoint needs. Nothing is charged."},"429":{"description":"Rate limit reached: 60 calls a minute and 2000 a day per key unless your organisation has other limits. See Retry-After."}}}},"/api/scorer":{"post":{"summary":"Pre-Check","description":"Acceptance odds from a title and abstract. Runs in the web app; its endpoint does not accept API keys yet. Cost: 15 credits per call, once open.","x-status":"not open yet","x-scope":"tools:precheck","x-cost":"15 credits per call, once open","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"string"},"abstract":{"type":"string","description":"string"}}},"example":{"title":"","abstract":""}}}},"responses":{"200":{"description":"OK"},"400":{"description":"The request body is missing a required field or is not JSON."},"401":{"description":"No valid key, or a general all-tools key at the Journal Finder, which needs its scope named on the key. Nothing is charged."},"402":{"description":"Not enough credits for the call. Nothing is charged."},"403":{"description":"The key lacks the scope this endpoint needs. Nothing is charged."},"429":{"description":"Rate limit reached: 60 calls a minute and 2000 a day per key unless your organisation has other limits. See Retry-After."}}}}}}