Skip to main content

API Endpoints

All endpoints require the x-api-key header. See Authentication.

Deals

List Deals

GET /deals

Returns a paginated list of your deals, ordered by creation date (newest first).

Query Parameters

ParameterTypeDefaultDescription
limitinteger25Number of deals to return (max 100)
nextTokenstringPagination token from a previous response

Response

{
"items": [
{
"dealId": "abc-123",
"companyName": "Acme Corp",
"status": "researching",
"description": "Potential acquisition target",
"documents": [],
"relatedFilingIds": [],
"createdAt": "2026-02-20T10:00:00Z",
"updatedAt": "2026-02-20T10:00:00Z"
}
],
"nextToken": null
}

Example

# List first 10 deals
curl -s -H "x-api-key: sa_your_key" \
"https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/deals?limit=10" | jq

Get a Deal

GET /deals/{dealId}

Returns a single deal by ID. You can only access deals you own.

Response

{
"dealId": "abc-123",
"companyName": "Acme Corp",
"status": "researching",
"description": "Potential acquisition target",
"documents": [],
"relatedFilingIds": [],
"createdAt": "2026-02-20T10:00:00Z",
"updatedAt": "2026-02-20T10:00:00Z"
}

Errors

  • 403 — Deal exists but you don't own it
  • 404 — Deal not found

Example

curl -s -H "x-api-key: sa_your_key" \
https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/deals/abc-123 | jq

Create a Deal

POST /deals

Creates a new deal. The deal is automatically associated with your user account.

Request Body

{
"companyName": "Acme Corp",
"status": "researching",
"description": "Potential acquisition target"
}

Required Fields

FieldTypeDescription
companyNamestringCompany name (required)
statusstringOne of: researching, active, monitoring, closed

Optional Fields

FieldTypeDescription
descriptionstringDeal description or notes

Response (201 Created)

{
"dealId": "generated-uuid",
"companyName": "Acme Corp",
"status": "researching",
"description": "Potential acquisition target",
"userId": "your-user-id",
"documents": [],
"relatedFilingIds": [],
"createdAt": "2026-02-25T10:00:00Z",
"updatedAt": "2026-02-25T10:00:00Z"
}

Example

curl -s -X POST \
-H "x-api-key: sa_your_key" \
-H "Content-Type: application/json" \
-d '{"companyName": "Acme Corp", "status": "researching"}' \
https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/deals | jq

Update a Deal

PUT /deals/{dealId}

Updates an existing deal. You can only update deals you own. Only include the fields you want to change.

Request Body

{
"companyName": "Acme Corp (Updated)",
"status": "active",
"description": "Moving to active phase"
}

Updatable Fields

FieldTypeDescription
companyNamestringCompany name
statusstringDeal status
descriptionstringDeal description

Response

Returns the updated deal object.

Errors

  • 404 — Deal not found or you don't own it

Example

curl -s -X PUT \
-H "x-api-key: sa_your_key" \
-H "Content-Type: application/json" \
-d '{"status": "active"}' \
https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/deals/abc-123 | jq

Filings

Access to SEC 8-K filings, Form 4 insider purchases, and Japan filings. Supports read operations (list, get) and write operations (archive, favorite).

Common Query Parameters

All filing list endpoints support these query parameters:

ParameterTypeDefaultDescription
limitinteger50Number of filings to return (max 100)
nextTokenstringPagination token from a previous response
searchTermstringText search across company name, analysis, etc.
createdAfterstring30 days agoStart date filter (YYYY-MM-DD)
createdBeforestringtodayEnd date filter (YYYY-MM-DD)

List SEC Filings

GET /filings/sec

Returns SEC 8-K filings in reverse chronological order.

Response

{
"items": [
{
"filingId": "abc-123",
"companyName": "Acme Corp",
"formType": "8-K",
"filedDate": "2026-02-20",
"description": "Entry into a Material Agreement",
"txtUrl": "https://www.sec.gov/Archives/...",
"htmlUrl": "https://www.sec.gov/Archives/...",
"analysis": "AI-generated analysis of the filing...",
"analysisDate": "2026-02-20T12:00:00Z",
"status": "analyzed",
"createdAt": "2026-02-20T10:00:00Z",
"aiTags": [{ "name": "M&A", "color": "blue-500" }]
}
],
"nextToken": null
}

Example

# List recent SEC filings
curl -s -H "x-api-key: sa_your_key" \
"https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/sec?limit=10" | jq

# Search for a company
curl -s -H "x-api-key: sa_your_key" \
"https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/sec?searchTerm=Apple" | jq

# Filter by date range
curl -s -H "x-api-key: sa_your_key" \
"https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/sec?createdAfter=2026-02-01&createdBefore=2026-02-28" | jq

Get a SEC Filing

GET /filings/sec/{filingId}

Returns a single SEC filing by ID.

Example

curl -s -H "x-api-key: sa_your_key" \
https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/sec/abc-123 | jq

List Form 4 Filings (Insider Purchases)

GET /filings/form4

Returns Form 4 insider purchase filings in reverse chronological order.

Response

{
"items": [
{
"filingId": "f4-123",
"issuerName": "Acme Corp",
"issuerTicker": "ACME",
"ownerName": "Jane Smith",
"ownerTitle": "CEO",
"isOfficer": true,
"isDirector": false,
"transactionType": "Purchase",
"transactionDate": "2026-02-19",
"sharesTransacted": 10000,
"pricePerShare": 25.50,
"totalValue": 255000,
"sharesOwnedAfter": 50000,
"filingDate": "2026-02-20",
"htmlUrl": "https://www.sec.gov/cgi-bin/...",
"analysis": "Significant insider purchase...",
"analysisDate": "2026-02-20T12:00:00Z",
"priceAtDiscovery": 24.80,
"priceAtDiscoveryDate": "2026-02-20T10:00:00Z",
"status": "analyzed",
"createdAt": "2026-02-20T10:00:00Z"
}
],
"nextToken": null
}

Example

# List insider purchases
curl -s -H "x-api-key: sa_your_key" \
"https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/form4?limit=20" | jq

# Search by insider or company name
curl -s -H "x-api-key: sa_your_key" \
"https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/form4?searchTerm=CEO" | jq

Get a Form 4 Filing

GET /filings/form4/{filingId}

Returns a single Form 4 filing by ID.

Example

curl -s -H "x-api-key: sa_your_key" \
https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/form4/f4-123 | jq

List Japan Filings

GET /filings/japan

Returns Japanese company filings from TDNET in reverse chronological order.

Response

{
"items": [
{
"filingId": "jp-123",
"companyCode": "7203",
"companyName": "トヨタ自動車",
"companyNameEnglish": "Toyota Motor",
"filingDate": "2026-02-20",
"filingTime": "15:30:00",
"documentTitle": "決算短信",
"documentTitleEnglish": "Earnings Report",
"pdfUrl": "https://...",
"summary": "AI-generated summary...",
"stockExchange": "Tokyo Stock Exchange",
"tdnetDocumentId": "TD12345",
"status": "analyzed",
"tags": ["earnings"],
"createdAt": "2026-02-20T10:00:00Z",
"updatedAt": "2026-02-20T12:00:00Z"
}
],
"nextToken": null
}

Example

# List Japan filings
curl -s -H "x-api-key: sa_your_key" \
"https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/japan?limit=20" | jq

# Search by company name (Japanese or English)
curl -s -H "x-api-key: sa_your_key" \
"https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/japan?searchTerm=Toyota" | jq

Get a Japan Filing

GET /filings/japan/{filingId}

Returns a single Japan filing by ID.

Example

curl -s -H "x-api-key: sa_your_key" \
https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/japan/jp-123 | jq

Filing Preferences

Archive or favorite filings across all three filing types.

Set Filing Preferences

POST /filings/sec/{filingId}/preferences
POST /filings/form4/{filingId}/preferences
POST /filings/japan/{filingId}/preferences

Sets archive and/or favorite status on a filing. At least one of archived or favorited must be provided.

Request Body

{
"archived": true,
"favorited": false
}
FieldTypeDescription
archivedbooleanSet archive status (optional)
favoritedbooleanSet favorite status (optional)

Response

{
"userId": "your-user-id",
"filingId": "abc-123",
"archived": true,
"favorited": false,
"createdAt": "2026-02-25T10:00:00Z",
"updatedAt": "2026-02-25T10:00:00Z"
}

Errors

  • 400 — Missing body or neither archived nor favorited provided
  • 401 — Invalid or missing API key

Examples

# Archive a SEC filing
curl -s -X POST \
-H "x-api-key: sa_your_key" \
-H "Content-Type: application/json" \
-d '{"archived": true}' \
https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/sec/abc-123/preferences | jq

# Favorite a Form 4 filing
curl -s -X POST \
-H "x-api-key: sa_your_key" \
-H "Content-Type: application/json" \
-d '{"favorited": true}' \
https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/form4/f4-123/preferences | jq

# Archive and favorite a Japan filing
curl -s -X POST \
-H "x-api-key: sa_your_key" \
-H "Content-Type: application/json" \
-d '{"archived": true, "favorited": true}' \
https://kc9zu8cyjf.execute-api.us-east-1.amazonaws.com/v1/filings/japan/jp-123/preferences | jq