Integrate CoinSignal with API
Welcome to the CoinSignal API documentation. This API lets you access the latest trading signals and a fully-featured crypto news feed, as well as concise AI-powered market sentiment summaries.
Endpoints are authenticated and rate-limited. Sign up to get your API key and manage your usage.
All endpoints require an API key.
Generate and manage your API keys from your .
Add your API key to every request using the X-API-KEY HTTP header.
Example Header:
X-API-KEY: YOUR_API_KEY_HEREAPI access is subject to rate limits to ensure fair usage:
- 60 requests per minute
- 600 requests per hour
Limits apply per API key (or IP if no key).
Exceeding the rate limit returns 429 Too Many Requests.
GET /signal
Get the latest trading signal and justification for a cryptocurrency.
Parameters:
currency(string, optional, default:BTC): Cryptocurrency ticker (e.g., BTC, ETH).
Example Request:
curl -X GET \
'https://api.coinsignal.app/signal?currency=ETH' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'Example Response:
{
"status": "success",
"signal": "BUY",
"justification": "**RSI is showing potential undervaluation.** EMA 21/34/144 indicate upward trend, while 500 EMA acts as long-term support...",
"justification_short": "Market shows BUY potential due to RSI undervaluation and bullish EMA cross.",
"timestamp": "2024-06-11 09:31:55",
"signal_strength": 4
}Response Fields:
status(string): 'success' or 'error'signal(string): Trading signal ('BUY', 'HOLD', 'SELL')justification(string): Full justificationjustification_short(string): Concise justificationtimestamp(string): UTC timestampsignal_strength(integer): Out of last 5 signals, how many match the current signal (1-5)
Error responses: {'status':'error', 'message':'...'}
GET /news
Paginated crypto news feed with optional filters by tag, ticker, date, and more.
Parameters:
limit(integer, optional, default:50, max:100): Number of articlesoffset(integer, optional, default:0): For paginationtag(string, optional): Comma-separated list (e.g.,hot,rising), filters news by tagticker(string, optional): Comma-separated list of tickers (e.g.,BTC,ETH)from(string, optional): ISO date/time, only news after this dateto(string, optional): ISO date/time, only news before this datesort(string, optional, default:desc): 'asc' or 'desc' by published datefields(string, optional): Comma-separated, e.g.,title,source
Example Request:
curl -X GET \
'https://api.coinsignal.app/news?limit=10&offset=0&tag=hot,rising&ticker=BTC' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'Example Response:
{
"status": "success",
"count": 2,
"limit": 10,
"offset": 0,
"news": [
{
"published_at": "2024-06-11T09:00:00Z",
"title": "Bitcoin price surges above $70K",
"detail_summary": "BTC rallies as ETF flows hit record highs...",
"source": "CoinTelegraph",
"external_article_url": "https://...",
"tags": ["hot"],
"tickers": ["BTC"]
},
{
"published_at": "2024-06-10T19:20:00Z",
"title": "SEC delays Ethereum ETF decision",
"detail_summary": "ETH price wobbles after SEC delays...",
"source": "Decrypt",
"external_article_url": "https://...",
"tags": ["rising"],
"tickers": ["ETH"]
}
]
}Response Fields:
status(string): 'success'count(integer): Number of news items returnedlimit(integer): The limit usedoffset(integer): The offset usednews(array): List of articles (see fields below)
Article fields:
published_at(string): ISO date/timetitle(string): Article titledetail_summary(string): Short article summarysource(string): Source nameexternal_article_url(string): Source URLtags(array): Tag labels, e.g.,['hot', 'rising']tickers(array): Ticker symbols, e.g.,['BTC', 'ETH']
Empty response: 404 Not Found.
Error: {'status':'error', 'message':'...'}
GET /news/summary
AI-powered market sentiment summary (auto-generated hourly, from latest news).
Parameters:
None.
Example Request:
curl -X GET \
'https://api.coinsignal.app/news/summary' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'Example Response:
{
"status": "success",
"summary": "Crypto market sentiment is cautiously bullish. Positive news around institutional adoption and ETF progress is driving momentum, though regulatory uncertainties remain a concern.",
"timestamp": "2024-06-11T09:00:00Z"
}Response Fields:
status(string): 'success', 'not_found', or 'error'summary(string): The market sentiment summarytimestamp(string): UTC timestamp of summary
If no summary is available, you'll get: {'status':'not_found', ...}