Foresea Knowledge API
Per-user RAG knowledge base: ingest documents and retrieve them as evidence.
Per-user RAG knowledge base: ingest documents and retrieve them as evidence.
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/foresea-ink:foresea-ink-knowledge-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: Foresea Intelligence Knowledge API
description: '## Overview
The **Foresea Intelligence API** turns market questions, linked evidence, and
prediction-market prices into probabilistic forecasts that can sit behind
trading dashboards, alerting systems, and research workflows. It supports binary, multiple-choice, numeric, and date forecasts. Each response
includes a structured **rationale**, typed forecast fields, optional evidence
sources fetched from live news, and optional market-edge analysis when you pass
a market-implied probability. ---
## Quick start
```bash
curl -X POST https://foresea.ink/predict \
-H "Content-Type: application/json" \
-d ''{
"question": "Will the Fed cut rates before September 30, 2026?",
"question_type": "binary",
"market_platform": "Polymarket",
"market_probability": 0.54,
"variant": "variant0_neutral_baseline"
}''
```
---
## Question types
Use `question_type` when your client already knows the shape of the question. If omitted, the model will try to infer it. | Type | Response shape |
|---|---|
| `binary` | `predicted_answer` is `Yes`/`No`; `confidence` is 0–1 |
| `multiple_choice` | `options` contains per-option probabilities; `predicted_answer` is the top option |
| `numeric` | `range_forecast` contains `p10`, `p50`, `p90`, and optional `unit` |
| `date` | `range_forecast` contains date percentiles |
For multiple-choice forecasts, pass `options` when the answer set is known. ---
## Prediction-market context
Pass `market_probability` when you know the current market-implied probability
for the target outcome. For binary markets this defaults to the `Yes` side; set
`market_outcome` to compare against `No` or a named multiple-choice outcome. Foresea returns `market_analysis` with model probability, market probability,
percentage-point edge, and a stance (`model_above_market`, `model_below_market`,
`in_line`, or `not_comparable`). ---
## Trading execution
Foresea can preview and submit guarded orders for Kalshi and Polymarket:
| Endpoint | Purpose |
|---|---|
| `GET /trading/accounts` | Return configured/not-configured server-account status without exposing secrets |
| `POST /trading/accounts/check` | Validate caller-supplied own-account (BYO) credentials without storing them |
| `POST /trading/preview` | Normalize and validate an order without placing it |
| `POST /trading/orders` | Submit a live order after explicit confirmation |
Live trading is disabled unless `FORESEA_ENABLE_TRADING=true`. Every live order
requires a signed-in user session, `execute=true`, and the exact confirmation
phrase `PLACE REAL ORDER`. Market/IOC/FOK-style orders are separately blocked
unless `FORESEA_ALLOW_MARKET_ORDERS=true`. Exchange credentials come from a shared server account (environment variables /
Secret Manager mounts) or an authenticated user''s **encrypted account
connection**. The connection endpoint accepts a user''s credentials once, validates
them with a unique data-encryption key wrapped by Cloud KMS, and never returns
them to the browser. Inline `venue_credentials` are rejected on public preview
and order calls; encrypted own-account trading remains gated by
`FORESEA_ENABLE_BYO_TRADING=true` (independent of `FORESEA_ENABLE_TRADING`). `/agent/analyze` may return a directional recommendation, but it never places an
order. Use `/trading/preview` first, review the normalized order, then call
`/trading/orders` only when you intend to submit a real order. ---
## Prompt variants
The `variant` field controls how the LLM is prompted.'
contact:
name: Pareel Amre
url: https://foresea.ink/
email: pareel.amre@gmail.com
license:
name: MIT
url: https://opensource.org/licenses/MIT
version: 1.0.0
tags:
- name: Knowledge
description: 'Per-user RAG knowledge base: ingest documents and retrieve them as evidence.'
paths:
/rag/ingest:
post:
tags:
- Knowledge
summary: Add a document to your knowledge base
description: 'Chunk, embed, and store a document (text or URL) in the signed-in user''s
knowledge base, so the agent can retrieve it as evidence.'
operationId: rag_ingest_rag_ingest_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RagIngestRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Rag Ingest Rag Ingest Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/rag/search:
get:
tags:
- Knowledge
summary: Search your knowledge base
operationId: rag_search_rag_search_get
parameters:
- name: q
in: query
required: true
schema:
type: string
title: Q
- name: namespace
in: query
required: false
schema:
type: string
default: kb
title: Namespace
- name: top_k
in: query
required: false
schema:
type: integer
default: 5
title: Top K
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/RagSearchResult'
title: Response Rag Search Rag Search Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/rag/documents:
get:
tags:
- Knowledge
summary: List your knowledge-base documents
operationId: rag_documents_rag_documents_get
parameters:
- name: namespace
in: query
required: false
schema:
type: string
default: kb
title: Namespace
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Rag Documents Rag Documents Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Knowledge
summary: Delete knowledge-base documents
operationId: rag_delete_rag_documents_delete
parameters:
- name: namespace
in: query
required: false
schema:
type: string
default: kb
title: Namespace
- name: doc_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Doc Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties:
type: integer
title: Response Rag Delete Rag Documents Delete
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
RagSearchResult:
properties:
text:
type: string
title: Text
default: ''
title:
type: string
title: Title
default: ''
url:
type: string
title: Url
default: ''
source:
type: string
title: Source
default: ''
score:
type: number
title: Score
default: 0.0
type: object
title: RagSearchResult
RagIngestRequest:
properties:
text:
anyOf:
- type: string
maxLength: 200000
- type: 'null'
title: Text
description: Raw text to ingest.
url:
anyOf:
- type: string
maxLength: 2000
- type: 'null'
title: Url
description: URL to fetch and ingest.
title:
type: string
maxLength: 300
title: Title
default: ''
namespace:
type: string
maxLength: 40
title: Namespace
description: 'Corpus: ''kb'', ''evidence'', or ''forecasts''.'
default: kb
type: object
title: RagIngestRequest
description: Add a document to the user's knowledge base.
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError