# One ticker's congressional trading disclosures

`GET https://api.skylit.ai/v1/underlying/{ticker}/congress`

API: Flowseeker.

STOCK Act periodic transaction reports naming `{ticker}`, newest
disclosure first, with a summary over the whole window. Amounts are
the filed brackets, so the summary carries the sum of bracket floors
and ceilings per side and no net. Windows are on the DISCLOSURE date;
defaults to the last 730 days (data starts August 2024).

## Authentication

Send your Skylit API key as a bearer token: `Authorization: Bearer <key>`. No other header is accepted.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `ticker` | path | string | yes | Underlying ticker symbol (uppercase, e.g. `SPY`, `AAPL`). |
| `date_start` | query | string (date) | no | Inclusive start on the disclosure date (`YYYY-MM-DD`). Defaults to 730 days before `date_end`. |
| `date_end` | query | string (date) | no | Inclusive end (`YYYY-MM-DD`). Defaults to today (ET). |
| `limit` | query | integer | no |  (default `200`; min 1; max 2000) |
| `offset` | query | integer | no |  (default `0`; min 0; max 10000) |

## Example request

```bash
curl "https://api.skylit.ai/v1/underlying/SPY/congress" \
  -H "Authorization: Bearer $SKYLIT_API_KEY"
```

## Responses

### 200

Summary and disclosure lines for `{ticker}`.

Shape (placeholder values):

```json
{
  "data": {
    "summary": {
      "buyCount": 0,
      "sellCount": 0,
      "buyLow": 0,
      "buyHigh": 0,
      "buyHighIsFloor": false,
      "sellLow": 0,
      "sellHigh": 0,
      "sellHighIsFloor": false,
      "distinctBuyers": 0,
      "distinctSellers": 0,
      "distinctMembers": 0,
      "otherCount": 0,
      "hasHouse": false,
      "hasSenate": false
    },
    "trades": [
      {
        "ticker": "string",
        "disclosureDate": "string",
        "transactionDate": "string",
        "disclosureLagDays": 0,
        "chamber": "HOUSE",
        "member": "string",
        "bioguideId": "string",
        "district": "string",
        "owner": "string",
        "ownerIsMember": false,
        "transactionType": "string",
        "action": "BUY",
        "assetDescription": "string",
        "assetType": "string",
        "amountRange": "string",
        "amountLow": 0,
        "amountHigh": 0,
        "capitalGainsOver200": false,
        "filingUrl": "string"
      }
    ]
  },
  "meta": {
    "timestamp": "string",
    "requestId": "d7574836",
    "nextCursor": "string",
    "nextEndTime": "string",
    "warnings": [
      {
        "code": "string",
        "message": "string",
        "affectedFields": [
          "string"
        ]
      }
    ],
    "ticker": "string",
    "dateStart": "string",
    "dateEnd": "string",
    "limit": 0,
    "offset": 0,
    "count": 0,
    "hasMore": false
  }
}
```

### 400

Request validation failed.

invalidParam:

```json
{
  "error": {
    "code": "INVALID_PARAMETER",
    "message": "Invalid value 'bogus' for 'timeframe'. Allowed: 5m, 15m, 1h, 4h, 1d."
  }
}
```

### 401

Missing or invalid API key.

missingKey:

```json
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Authentication required"
  }
}
```

### 402

The account's shared Skylit credit balance is lower than this route's cost. Top up to continue. Carries `X-Credits-Remaining: 0`.

Headers: `X-Credits-Remaining`.

outOfCredits:

```json
{
  "error": {
    "code": "insufficient_credits",
    "message": "Out of credits. Top up to continue making requests."
  }
}
```

### 403

Unknown, revoked or expired API key (the gateway's `forbidden`), the account's API access is suspended (`account_suspended`) or blocked (`account_blocked`). Not retryable.

badKey:

```json
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Access to this API has been disallowed"
  }
}
```

accountSuspended:

```json
{
  "error": {
    "code": "account_suspended",
    "message": "API access has been suspended for this account. Contact support."
  }
}
```

### 404

Unknown ticker or contract (`SYMBOL_NOT_FOUND`), or no data for the requested window. Not charged.

unknownSymbol:

```json
{
  "error": {
    "code": "SYMBOL_NOT_FOUND",
    "message": "Unknown ticker 'ZZZZQ'."
  }
}
```

noData:

```json
{
  "error": {
    "code": "NOT_FOUND",
    "message": "No trades found for AAPL on 2026-05-27 with timeframe 1d"
  }
}
```

### 429

Either the key exceeded its requests-per-minute limit (`X-RateLimit-Limit`; no `Retry-After`, wait until `X-RateLimit-Reset`), or the account is over one of the API's own limits, such as the query budget (queries running at once, fresh queries per second): `TOO_MANY_CONCURRENT_QUERIES` or `RATE_LIMITED` with `Retry-After`. Not charged; retry after the wait.

tooFast:

```json
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Rate limit exceeded."
  }
}
```

queryBudget:

```json
{
  "error": {
    "code": "TOO_MANY_CONCURRENT_QUERIES",
    "message": "This account already has 16 queries running on the shared query engine across all servers (limit ch.concurrent.customer). Cached answers are not affected. Retry after Retry-After; to backfill a day, follow meta.nextCursor instead of splitting time windows. See https://www.skylit.ai/docs/api-reference/rate-limits-and-retries",
    "retry_after": 1,
    "docs_url": "https://www.skylit.ai/docs/api-reference/errors#too_many_concurrent_queries"
  }
}
```

### 500

Unexpected server error (`INTERNAL_ERROR`, `DATABASE_ERROR`). Not charged; safe to retry with exponential backoff.

internal:

```json
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Internal server error"
  }
}
```

### 503

Underlying data source temporarily unavailable, the credit balance could not be verified (`credit_check_failed`), or the API is paused for maintenance (`api_paused`, with a `Retry-After` header and a `retry_after` field in seconds). Not charged; safe to retry.

ingestionLag:

```json
{
  "error": {
    "code": "UNAVAILABLE",
    "message": "Live feed is degraded; please retry in a few seconds."
  }
}
```

creditCheckFailed:

```json
{
  "error": {
    "code": "credit_check_failed",
    "message": "Could not verify credit balance. Please retry."
  }
}
```

### 504

The request did not complete within 25 seconds. Not charged; narrow the window or retry.

tooSlow:

```json
{
  "error": {
    "code": "GATEWAY_TIMEOUT",
    "message": "The request took too long and was not completed. It was not charged; narrow the request or retry."
  }
}
```
