FinSignals API

FinSignals API — The FinSignals API provides a RESTful interface for cla…

AUTH NONECORS AGENT ?HTTPS COMMERCIAL ?

FinSignals API exposes the FinSignals API provides a RESTful interface for classifying financial social posts, including text from platforms like Reddit. It evaluates a post's sentiment, directionality, content quality, and other relevant signals in a structured JSON response. We verified a keyless GET endpoint returning JSON (Social). Check the provider docs for rate limits and terms before production use.

HOW IT'S SCORED ⓘ
Status badge · for your READMEshipapis health badge: — · unmonitored
ON PROBE SCHEDULE

We probe a documented GET and expect 2xx JSON — full uptime and health score. Open provider docs ↗

Uptime historystarts after first probe

On our probe schedule. Uptime charts appear after the first check lands.

Example responsefrom provider docs — not verified by us
GET https://api.finsignals.ai/openapi.json

{
  "openapi": "3.1.0",
  "info": {
    "title": "FinSignals API",
    "description": "Reddit post financial sentiment classification.",
    "version": "2.0.0",
    "contact": {
      "url": "https://finsignals.ai/contact/"
    },
    "x-logo": {
      "url": "https://finsignals.ai/wp-content/uploads/2026/03/finsignals_logo.png"
    }
  },
  "paths": {
    "/api/health": {
      "get": {
        "tags": [
          "health"
        ],
        "summary": "Health Check",
        "operationId": "health_check_api_health_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/v1/health": {
      "get": {
        "tags": [
          "health"
        ],
        "summary": "Health Check",
        "operationId": "health_check_v1_health_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/v1/classify": {
      "post": {
        "tags": [
          "classify"
        ],
        "summary": "Classify Single",
        "operationId": "classify_single_v1_classify_post",
        "parameters": [
          {
            "name": "X-API-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SingleClassifyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassifyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/classify/batch": {
      "post": {
        "tags": [
          "classify"
        ],
        "summary": "Classify Batch",
        "operationId": "classify_batch_v1_classify_batch_post",
        "parameters": [
          {
            "name": "X-API-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchClassifyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassifyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/usage": {
      "get": {
        "tags": [
          "usage"
        ],
        "summary": "Get Usage",
        "operationId": "get_usage_v1_usage_get",
        "parameters": [
          {
            "name": "X-API-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/plan": {
      "get": {
        "tags": [
          "usage"
        ],
        "summary": "Get Plan",
        "operationId": "get_plan_v1_plan_get",
        "parameters": [
          {
            "name": "X-API-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sector-rotation": {
      "get": {
        "tags": [
          "sector-rotation"
        ],
        "summary": "Get Sector Rotation",
        "description": "Retrieve the latest daily sector rotation analysis.\n\nReturns both the 1-year and 5-year outlooks, including sector/industry\nrotation data, AI-generated markdown summaries, and historical weekly\nsnapshots. Data is refreshed once per trading day just after midnight ET.\n\n**Cost:** 10 credits per request.",
        "operationId": "get_sector_rotation_v1_sector_rotation_get",
        "parameters": [
          {
            "name": "X-API-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/internal/rotation/trigger": {
      "post": {
        "tags": [
          "internal"
        ],
        "summary": "Trigger Rotation",
        "description": "Trigger an immediate sector rotation calculation in the background.\n\nProtected by X-Internal-Token (same shared secret as all /internal/* endpoints).\nReturns 202 immediately; the full run (Alpaca + FMP + Claude) completes\nasynchronously and populates the cache when done.",
        "operationId": "trigger_rotation_internal_rotation_trigger_post",
        "parameters": [
          {
            "name": "x-internal-token",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "X-Internal-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "BatchClassifyRequest": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/RedditPostInput"
            },
            "type": "array",
            "title": "Items"
          }
        },
        "type": "object",
        "required": [
          "items"
        ],
        "title": "BatchClassifyRequest"
      },
      "ClassificationOutput": {
        "properties": {
          "sentiment": {
            "additionalProperties": true,
            "type": "object",
            "title": "Sentiment"
          },
          "quality": {
            "additionalProperties": true,
            "type": "object",
            "title": "Quality"
          },
          "directionality": {
            "additionalProperties": true,
            "type": "object",
            "title": "Directionality"
          },
          "post_type": {
            "additionalProperties": true,
            "type": "object",
            "title": "Post Type"
          },
          "relevance_score": {
            "type": "number",
            "title": "Relevance Score"
          },
          "author_confidence": {
            "type": "number",
            "title": "Author Confidence"
          },
          "sarcasm": {
            "type": "boolean",
            "title": "Sarcasm"
          }
        },
        "type": "object",
        "required": [
          "sentiment",
          "quality"
        ],
        "title": "ClassificationOutput"
      },
      "ClassifyResponse": {
        "properties": {
          "model_version": {
            "type": "string",
            "title": "Model Version"
          },
          "request_id": {
            "type": "string",
            "title": "Request Id"
          },
          "credits_charged": {
            "type": "number",
            "title": "Credits Charged"
          },
          "endpoint_type": {
            "type": "string",
            "title": "Endpoint Type"
          },
          "endpoint_name": {
            "type": "string",
            "title": "Endpoint Name"
          },
          "outputs": {
            "items": {
              "$ref": "#/components/schemas/ClassificationOutput"
            },
            "type": "array",
            "title": "Outputs"
          }
        },
        "type": "object",
        "required": [
          "model_version",
          "request_id"
        ],
        "title": "ClassifyResponse"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "IndustryRow": {
        "properties": {
          "etf": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Etf"
          },
          "ret_1w": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ret 1W"
          },
          "ret_1m": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ret 1M"
          },
          "ret_3m": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ret 3M"
          },
          "ret_6m": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ret 6M"
          },
          "ret_9m": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ret 9M"
          },
          "ret_12m": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ret 12M"
          },
          "rs_1m": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rs 1M"
          }
        },
        "type": "object",
        "title": "IndustryRow"
      },
      "RedditPostInput": {
        "properties": {
          "ticker": {
            "type": "string",
            "maxLength": 20,
            "title": "Ticker",
            "default": ""
          },
          "company_name": {
            "type": "string",
            "maxLength": 200,
            "title": "Company Name",
            "default": ""
          },
          "title": {
            "type": "string",
            "maxLength": 1000,
            "title": "Title",
            "default": ""
          },
          "body": {
            "type": "string",
            "maxLength": 40000,
            "title": "Body",
            "default": ""
          }
        },
        "type": "object",
        "title": "RedditPostInput"
      },
      "RotationPeriodData": {
        "properties": {
          "trading_date": {
            "type": "string",
            "title": "Trading Date"
          },
          "generated_at": {
            "type": "string",
            "title": "Generated At"
          },
          "sector_data": {
            "additionalProperties": {
              "$ref": "#/components/schemas/SectorRow"
            },
            "type": "object",
            "title": "Sector Data"
          },
          "industry_data": {
            "additionalProperties": {
              "$ref": "#/components/schemas/IndustryRow"
            },
            "type": "object",
            "title": "Industry Data"
          },
          "spy_metrics": {
            "$ref": "#/components/schemas/SpyMetrics"
          },
          "summary_md": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Summary Md"
          },
          "weekly_snapshots": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Weekly Snapshots",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "trading_date",
          "generated_at"
        ],
        "title": "RotationPeriodData",
        "description": "Data for one analysis period (1y or 5y)."
      },
      "RotationResponse": {
        "properties": {
          "request_id": {
            "type": "string",
            "title": "Request Id"
          },
          "model_version": {
            "type": "string",
            "title": "Model Version"
          },
          "credits_charged": {
            "type": "number",
            "title": "Credits Charged"
          },
          "endpoint_type": {
            "type": "string",
            "title": "Endpoint Type"
          },
          "endpoint_name": {
            "type": "string",
            "title": "Endpoint Name"
          },
          "trading_date": {
            "type": "string",
            "title": "Trading Date"
          },
          "generated_at": {
            "type": "string",
            "title": "Generated At"
          },
          "outlook_1y": {
            "$ref": "#/components/schemas/RotationPeriodData"
          }
        },
        "type": "object",
        "required": [
          "request_id",
          "model_version"
        ],
        "title": "RotationResponse"
      }
    }
  }
}
Call itcurl · fetch · python
curl "https://api.finsignals.ai/openapi.json"
const res = await fetch("https://api.finsignals.ai/openapi.json");
const data = await res.json();
console.log(data);
import requests

res = requests.get("https://api.finsignals.ai/openapi.json")
print(res.json())
Endpoints · 6On scheduleFULL DOCS ↗
On schedule — GET /openapi.json awaits first probe
GET/openapi.jsonPROBED

FinSignals API — The FinSignals API provides a RESTful interface for cla…

GET/openapi.json?limit=5

Paginated variant with limit parameter.

GET/api/health

Health Check

GET/v1/health

Health Check

GET/v1/usage

Get Usage

GET/v1/plan

Get Plan

Machine-readable spec

We probe a documented GET and expect 2xx JSON — full uptime and health score. Export includes every documented route below.

Response-shape history

Not tracked yet. Shape-change history starts once this API joins our probe schedule.

FinSignals API: common questions

Is FinSignals API free to use?

Yes — FinSignals API is a free social & work API. Free tier: Free — limits not published. Whether the free tier allows commercial use is unclear — check the provider docs.

Does FinSignals API need an API key?

No — FinSignals API needs no API key or signup. You can call it straight away; rate limits still apply (Unpublished).

Can I call FinSignals API from the browser?

Yes — FinSignals API returns CORS headers over HTTPS, so front-end code can fetch it directly with no backend proxy. Use the fetch snippet on this page, or hit "Run live" to try it now.

Is FinSignals API up right now?

FinSignals API is catalogued but not yet on our probe schedule, so we don't publish a live status for it. Check the provider's own status page or docs for its current state.