{"openapi":"3.1.0","info":{"title":"Coin News Pot for AI","version":"1.0.0","description":"Real-time crypto news for AI apps and agents: hacks, exchange listings, funding, all-time highs and lows, regulation and more, rewritten as short factual stories. Show 'via Coin News Pot' with the story link when you use a story (AI Starter always; AI Pro may switch it off). News, not financial advice. Training AI models on the data is not allowed.","termsOfService":"https://coinnewspot.com/legal/terms#ai-use","contact":{"email":"support@coinnewspot.com"}},"servers":[{"url":"https://api.coinnewspot.com/ai/v1"}],"security":[{"bearer":[]},{"apiKey":[]}],"paths":{"/news":{"get":{"operationId":"latestNews","summary":"Latest crypto news","description":"Newest stories first. Use since (a story id) to get only stories newer than the last one you saw.","parameters":[{"name":"category","in":"query","description":"One category or several, comma separated (see /categories). Empty = the key's default categories, or all.","schema":{"type":"string"}},{"name":"since","in":"query","description":"A story id (only newer ones) or an ISO time like 2026-10-20T08:00:00Z.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"How many stories, 1 to 50.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"format","in":"query","description":"json (default) or text: compact LLM-ready text, fewer tokens.","schema":{"type":"string","enum":["json","text"],"default":"json"}}],"responses":{"200":{"description":"Stories, newest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Stories"}},"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Bad input, e.g. an unknown category (the message lists the valid ones).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, wrong or deleted AI key (code: auth).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No active AI package, or an AI Pro feature on AI Starter (code: pro_only).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-minute, trial or term limit reached (Retry-After header when it is per minute).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/search":{"get":{"operationId":"searchNews","summary":"Search crypto news","description":"Find stories by words. mode=smart (AI Pro) also finds related words, e.g. 'hacks' finds 'exploit' and 'drained'.","parameters":[{"name":"q","in":"query","required":true,"description":"What to look for, 2 to 200 characters.","schema":{"type":"string"}},{"name":"mode","in":"query","description":"keyword (default) or smart (AI Pro).","schema":{"type":"string","enum":["keyword","smart"],"default":"keyword"}},{"name":"category","in":"query","description":"One category or several, comma separated (see /categories). Empty = the key's default categories, or all.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"How many stories, 1 to 50.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"format","in":"query","description":"json (default) or text: compact LLM-ready text, fewer tokens.","schema":{"type":"string","enum":["json","text"],"default":"json"}}],"responses":{"200":{"description":"Stories, newest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Stories"}},"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Bad input, e.g. an unknown category (the message lists the valid ones).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, wrong or deleted AI key (code: auth).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No active AI package, or an AI Pro feature on AI Starter (code: pro_only).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-minute, trial or term limit reached (Retry-After header when it is per minute).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/coins/{symbol}/news":{"get":{"operationId":"coinNews","summary":"News about one coin","description":"Stories that mention a coin, by its symbol (BTC, ETH, SOL ...).","parameters":[{"name":"symbol","in":"path","required":true,"description":"Coin symbol, e.g. BTC.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"How many stories, 1 to 50.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"format","in":"query","description":"json (default) or text: compact LLM-ready text, fewer tokens.","schema":{"type":"string","enum":["json","text"],"default":"json"}}],"responses":{"200":{"description":"Stories, newest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Stories"}},"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Bad input, e.g. an unknown category (the message lists the valid ones).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, wrong or deleted AI key (code: auth).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No active AI package, or an AI Pro feature on AI Starter (code: pro_only).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-minute, trial or term limit reached (Retry-After header when it is per minute).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/movers":{"get":{"operationId":"marketMovers","summary":"All-time highs and lows","description":"Stories about coins reaching an all-time high or low, newest first.","parameters":[{"name":"limit","in":"query","description":"How many stories, 1 to 50.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"format","in":"query","description":"json (default) or text: compact LLM-ready text, fewer tokens.","schema":{"type":"string","enum":["json","text"],"default":"json"}}],"responses":{"200":{"description":"Stories, newest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Stories"}},"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Bad input, e.g. an unknown category (the message lists the valid ones).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, wrong or deleted AI key (code: auth).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No active AI package, or an AI Pro feature on AI Starter (code: pro_only).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-minute, trial or term limit reached (Retry-After header when it is per minute).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/stories/{story_id}":{"get":{"operationId":"getStory","summary":"One story by id","description":"A single story within your package's history.","parameters":[{"name":"story_id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Stories, newest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Stories"}},"text/plain":{"schema":{"type":"string"}}}},"400":{"description":"Bad input, e.g. an unknown category (the message lists the valid ones).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, wrong or deleted AI key (code: auth).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No active AI package, or an AI Pro feature on AI Starter (code: pro_only).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-minute, trial or term limit reached (Retry-After header when it is per minute).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/categories":{"get":{"operationId":"listCategories","summary":"List the news categories","description":"The category names you can pass as category.","responses":{"200":{"description":"Category names.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"string"}},"count":{"type":"integer"}}}}}},"401":{"description":"Missing, wrong or deleted AI key (code: auth).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No active AI package, or an AI Pro feature on AI Starter (code: pro_only).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-minute, trial or term limit reached (Retry-After header when it is per minute).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/me":{"get":{"operationId":"myPackage","summary":"Your package, limits and usage","description":"Free: not counted as a call.","responses":{"200":{"description":"Package, limits, usage.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing, wrong or deleted AI key (code: auth).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No active AI package, or an AI Pro feature on AI Starter (code: pro_only).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-minute, trial or term limit reached (Retry-After header when it is per minute).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/stream":{"get":{"operationId":"liveStream","summary":"Live stream (AI Pro)","description":"Server-Sent Events: each new story as event 'news'. Reconnect with Last-Event-ID to miss nothing. Up to 2 streams, 1 hour each.","parameters":[{"name":"category","in":"query","description":"One category or several, comma separated (see /categories). Empty = the key's default categories, or all.","schema":{"type":"string"}},{"name":"after","in":"query","description":"Start after this story id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"text/event-stream","content":{"text/event-stream":{"schema":{"type":"string"}}}},"401":{"description":"Missing, wrong or deleted AI key (code: auth).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No active AI package, or an AI Pro feature on AI Starter (code: pro_only).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-minute, trial or term limit reached (Retry-After header when it is per minute).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/export":{"get":{"operationId":"bulkExport","summary":"Bulk export (AI Pro)","description":"Stories in a time range as JSON lines, oldest first, up to 5,000 per call. Follow the X-Next-Cursor header until it is empty.","parameters":[{"name":"start","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"end","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"cursor","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"application/x-ndjson","content":{"application/x-ndjson":{"schema":{"type":"string"}}}},"401":{"description":"Missing, wrong or deleted AI key (code: auth).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No active AI package, or an AI Pro feature on AI Starter (code: pro_only).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-minute, trial or term limit reached (Retry-After header when it is per minute).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Your AI key (cnp_ai_...) from Dashboard -> AI."},"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key"}},"schemas":{"Story":{"type":"object","properties":{"id":{"type":"integer"},"time":{"type":"string","format":"date-time"},"category":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"coins":{"type":"array","items":{"type":"string"}},"url":{"type":"string","description":"The story's page (opens publicly 24 hours after publishing)."},"attribution":{"type":"string","description":"Present while attribution is on: show it with the link."}}},"Stories":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Story"}},"count":{"type":"integer"},"note":{"type":"string"},"attribution":{"type":"object"}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}