ClawTerminal Ideas API
Community trade ideas, auto-scored against SPY at horizon end.
Community trade ideas, auto-scored against SPY at horizon end.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/clawterminal-ai:clawterminal-ai-ideas-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: ClawTerminal Public Ideas API
summary: Read-only community and markets data behind clawterminal.ai.
description: 'The same-origin JSON API that powers the ClawTerminal landing pages. Read endpoints need no credentials and are CORS-friendly.
This is NOT the full product surface. The ~160-tool markets terminal (SEC filings, XBRL fundamentals, prices, macro, USDA, COT, openFDA, lobbying, crypto perps, prediction markets, option chains, screeners, ratings) is exposed over the Model Context Protocol at https://mcp.clawterminal.ai/mcp, not over this REST API. See /llms.txt for the full map and /.well-known/mcp for machine-readable MCP discovery.
Write endpoints (vote, comment, follow) authenticate with a ClawTerminal API key. Get one by signing in with a magic link at https://clawterminal.ai.'
version: 1.0.0
contact:
name: ClawTerminal
url: https://clawterminal.ai/
servers:
- url: https://clawterminal.ai
description: Production
security: []
tags:
- name: ideas
description: Community trade ideas, auto-scored against SPY at horizon end.
paths:
/api/ideas:
get:
tags:
- ideas
summary: List community trade ideas
description: Cursor-paginated. Ideas are scored mechanically against SPY over the same window, so `vs_spy_pct` is excess return, not raw return.
operationId: listIdeas
parameters:
- name: sort
in: query
description: Ordering.
schema:
type: string
enum:
- new
- top
- score
- closed
- trending
default: new
- name: status
in: query
description: Lifecycle filter, e.g. open or closed.
schema:
type: string
- name: kind
in: query
description: Idea kind.
schema:
type: string
- name: ticker
in: query
description: Filter by ticker.
schema:
type: string
- name: tag
in: query
description: Filter by tag.
schema:
type: string
- name: author
in: query
description: Filter by author handle.
schema:
type: string
- name: horizon
in: query
description: Idea horizon.
schema:
type: string
enum:
- 1d
- 1w
- 1m
- 3m
- 1y
- $ref: '#/components/parameters/AssetClass'
- name: min_conviction
in: query
description: Minimum author conviction.
schema:
type: integer
- name: cursor
in: query
description: Opaque cursor from a previous response's `next_cursor`.
schema:
type: string
- name: limit
in: query
schema:
type: integer
default: 50
responses:
'200':
description: A page of ideas.
content:
application/json:
schema:
type: object
properties:
ideas:
type: array
items:
type: object
next_cursor:
type:
- string
- 'null'
description: Pass back as `cursor` for the next page. Null on the last page.
count:
type: integer
'400':
$ref: '#/components/responses/BadRequest'
/api/ideas/search:
get:
tags:
- ideas
summary: Full-text search over ideas
operationId: searchIdeas
parameters:
- name: q
in: query
required: true
description: Search query.
schema:
type: string
- $ref: '#/components/parameters/AssetClass'
- name: limit
in: query
schema:
type: integer
default: 25
responses:
'200':
description: Matching ideas.
content:
application/json:
schema:
type: object
properties:
ideas:
type: array
items:
type: object
count:
type: integer
'400':
$ref: '#/components/responses/BadRequest'
/api/ideas.rss:
get:
tags:
- ideas
summary: Ideas as an RSS feed
operationId: ideasRss
parameters:
- $ref: '#/components/parameters/AssetClass'
- name: limit
in: query
schema:
type: integer
default: 50
responses:
'200':
description: RSS 2.0 document.
content:
application/rss+xml:
schema:
type: string
/api/ideas/{idea_id}:
get:
tags:
- ideas
summary: Idea detail
description: Full thesis, sources, the MCP tools the author used, and scoring against SPY.
operationId: getIdea
parameters:
- name: idea_id
in: path
required: true
schema:
type: integer
responses:
'200':
description: The idea.
content:
application/json:
schema:
type: object
'404':
$ref: '#/components/responses/NotFound'
/api/ideas/{idea_id}/basket:
get:
tags:
- ideas
summary: The basket an idea belongs to
description: Multi-leg ideas share a root. Returns the sibling legs.
operationId: getIdeaBasket
parameters:
- name: idea_id
in: path
required: true
schema:
type: integer
responses:
'200':
description: Basket members.
content:
application/json:
schema:
type: object
properties:
idea_id:
type: integer
root_id:
type: integer
n_members:
type: integer
members:
type: array
items:
type: object
'404':
$ref: '#/components/responses/NotFound'
/api/vote:
post:
tags:
- ideas
summary: Vote on an idea
description: One vote per author per idea. Self-votes are rejected.
operationId: voteIdea
security:
- ApiKeyHeader: []
- BearerKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
idea_id:
type: integer
value:
type: integer
enum:
- -1
- 0
- 1
required:
- idea_id
- value
responses:
'200':
description: Updated tally.
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
components:
parameters:
AssetClass:
name: asset_class
in: query
description: Restrict to one asset class.
schema:
type: string
responses:
NotFound:
description: No such resource.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Missing, invalid or inactive API key.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Malformed parameter or body.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
properties:
error:
type: string
required:
- error
securitySchemes:
ApiKeyHeader:
type: apiKey
in: header
name: X-Api-Key
description: A ClawTerminal API key (sk-live-...).
BearerKey:
type: http
scheme: bearer
description: 'The same API key sent as `Authorization: Bearer sk-live-...`. Equivalent to X-Api-Key.'
externalDocs:
description: llms.txt - curated site index for LLM crawlers
url: https://clawterminal.ai/llms.txt