Skip to content
Skip to content

Docs

API Reference

REST API v1. Authenticate with a Bearer token, then list index series, retrieve values, and query price formulas programmatically.

Endpoints

GET/api/v1/healthNo authentication required

Simple ping and uptime check. Returns the API status and current server timestamp. Use this endpoint to verify connectivity before making authenticated requests.

Example Response

{
  "status": "ok",
  "version": "v1",
  "timestamp": "2026-05-16T12:00:00.000Z"
}
GET/api/v1/series

List index series visible to your workspace. Results are paginated using cursor-based pagination. Use the nextCursor value from a previous response to fetch the next page.

Parameters

ParameterTypeRequiredDescription
providerstringNoFilter by provider (BLS, FRED, EIA, ECB, WORLD_BANK, IMF, EUROSTAT, ONS, STATCAN, ABS, BIS, BOJ, OECD, DBNOMICS, NASDAQ_DATA_LINK)
limitintegerNoResults per page. Default: 50. Max: 200.
cursorstringNoPagination cursor from a previous response's pagination.nextCursor.

Example Request

curl https://escalake.com/api/v1/series?provider=BLS&limit=10 \
  -H "Authorization: Bearer escalake_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Example Response

{
  "data": [
    {
      "id": "cser_01jz...",
      "seriesCode": "CUUR0000SA0",
      "name": "CPI All Urban Consumers",
      "provider": "BLS",
      "dataType": "INDEX",
      "unit": "Index (1982-84=100)",
      "frequency": "MONTHLY",
      "createdAt": "2026-01-15T09:30:00.000Z"
    }
  ],
  "pagination": {
    "limit": 10,
    "hasMore": true,
    "nextCursor": "eyJpZCI6ImNzZXJfMDF..."
  }
}
GET/api/v1/series/:seriesId/values

Get time series data points for a specific index. Returns values in ascending date order. Use the from and to parameters to scope a date range, and version to filter by data revision status.

Parameters

ParameterTypeRequiredDescription
seriesIdstring (UUID)YesThe series UUID.
fromstring (YYYY-MM-DD)NoStart date, inclusive.
tostring (YYYY-MM-DD)NoEnd date, inclusive.
limitintegerNoMax data points to return. Default: 500. Max: 2000.
versionstringNoFilter by version tag: PRELIMINARY, FINAL, or REVISED.

Example Request

curl "https://escalake.com/api/v1/series/cser_01jz.../values?from=2025-01-01&to=2025-12-31&version=FINAL" \
  -H "Authorization: Bearer escalake_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Example Response

{
  "series": {
    "id": "cser_01jz...",
    "seriesCode": "CUUR0000SA0",
    "name": "CPI All Urban Consumers",
    "unit": "Index (1982-84=100)",
    "frequency": "MONTHLY"
  },
  "data": [
    {
      "asOfDate": "2025-01-01T00:00:00.000Z",
      "value": "314.175",
      "versionTag": "FINAL"
    },
    {
      "asOfDate": "2025-02-01T00:00:00.000Z",
      "value": "315.493",
      "versionTag": "FINAL"
    }
  ],
  "total": 12
}
GET/api/v1/pams

List price adjustment formulas (PAMs) in your workspace. Returns summary objects — use /api/v1/pams/:pamId for full formula detail including adjustment frequency and contract dates.

Parameters

ParameterTypeRequiredDescription
limitintegerNoResults per page. Default: 50. Max: 200.
cursorstringNoPagination cursor from a previous response.

Example Request

curl https://escalake.com/api/v1/pams \
  -H "Authorization: Bearer escalake_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Example Response

{
  "data": [
    {
      "id": "pam_01jz...",
      "name": "Steel Supply Agreement — CPI + PPI Blend",
      "description": "60% CPI All Items, 40% PPI Metals",
      "status": "ACTIVE",
      "createdAt": "2026-01-10T08:00:00.000Z",
      "updatedAt": "2026-04-01T14:22:00.000Z"
    }
  ],
  "pagination": {
    "limit": 50,
    "hasMore": false,
    "nextCursor": null
  }
}
GET/api/v1/pams/:pamId

Get the full detail for a single price adjustment formula, including contract date range and adjustment frequency.

Parameters

ParameterTypeRequiredDescription
pamIdstring (UUID)YesThe formula UUID.

Example Request

curl https://escalake.com/api/v1/pams/pam_01jz... \
  -H "Authorization: Bearer escalake_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Example Response

{
  "data": {
    "id": "pam_01jz...",
    "name": "Steel Supply Agreement — CPI + PPI Blend",
    "description": "60% CPI All Items, 40% PPI Metals",
    "status": "ACTIVE",
    "contractStartDate": "2025-01-01T00:00:00.000Z",
    "contractEndDate": "2027-12-31T00:00:00.000Z",
    "adjustmentFrequency": "ANNUAL",
    "createdAt": "2026-01-10T08:00:00.000Z",
    "updatedAt": "2026-04-01T14:22:00.000Z"
  }
}
GET/api/v1/pams/:pamId/values

Get computed price adjustment values for a formula. Each entry includes the adjustment percentage for that period and the running cumulative adjustment since the contract start date.

Parameters

ParameterTypeRequiredDescription
pamIdstring (UUID)YesThe formula UUID.
fromstring (YYYY-MM-DD)NoStart date, inclusive.
tostring (YYYY-MM-DD)NoEnd date, inclusive.

Example Request

curl "https://escalake.com/api/v1/pams/pam_01jz.../values?from=2025-01-01&to=2026-01-01" \
  -H "Authorization: Bearer escalake_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Example Response

{
  "data": [
    {
      "adjustmentDate": "2026-01-01T00:00:00.000Z",
      "adjustmentPct": "3.42",
      "cumulativePct": "3.42"
    }
  ]
}

Public API Endpoints

GET/api/public/v1/indicesNo authentication required

Search the public index catalog by free text, provider, or category. Each result includes the latest published value and a page URL to cite.

Parameters

ParameterTypeRequiredDescription
qstringNoFree-text search against name, code, and description.
providerstringNoFilter by provider, e.g. BLS.
categorystringNoFilter by category, e.g. "Construction Materials".
limitintegerNoResults per page. Default: 20. Max: 50.
offsetintegerNoRow offset for pagination. Default: 0.

Example Request

curl "https://escalake.com/api/public/v1/indices?q=steel&limit=5"

Example Response

{
  "data": [
    {
      "id": "pcu331110331110",
      "name": "US PPI — Iron and Steel Mills",
      "provider": "BLS",
      "seriesCode": "PCU331110331110",
      "category": "Industrial Metals & Parts",
      "unit": "Index (1982=100)",
      "frequency": "MONTHLY",
      "latestValue": 268.4,
      "latestDate": "2026-08-01",
      "url": "https://escalake.com/indices/pcu331110331110"
    }
  ],
  "pagination": { "limit": 5, "offset": 0, "total": 12, "hasMore": true },
  "poweredBy": "Powered by Escalake (https://escalake.com). Free public index data. Not investment or legal advice."
}
GET/api/public/v1/indices/:slug/observationsNo authentication required

Get published data points for one index over a date range. Defaults to the last 5 years. Row count and date range are capped.

Parameters

ParameterTypeRequiredDescription
slugstringYesIndex slug from GET /api/public/v1/indices.
fromstring (YYYY-MM-DD)NoStart date, inclusive.
tostring (YYYY-MM-DD)NoEnd date, inclusive.
limitintegerNoMax data points. Default: 250. Max: 500.

Example Request

curl "https://escalake.com/api/public/v1/indices/pcu331110331110/observations?from=2025-01-01&to=2025-12-31"

Example Response

{
  "index": {
    "id": "pcu331110331110",
    "name": "US PPI — Iron and Steel Mills",
    "provider": "BLS",
    "seriesCode": "PCU331110331110",
    "unit": "Index (1982=100)",
    "frequency": "MONTHLY",
    "url": "https://escalake.com/indices/pcu331110331110"
  },
  "data": [
    { "date": "2025-01-01", "value": 261.2 },
    { "date": "2025-02-01", "value": 262.9 }
  ],
  "count": 12,
  "poweredBy": "Powered by Escalake (https://escalake.com). Free public index data. Not investment or legal advice."
}
POST/api/public/v1/escalateNo authentication required

Compute an escalated price from one or more public indices: a base price, a base date, a target date, per-index weights, an optional fixed (non-escalating) portion, and an optional cap/floor. Returns the adjusted price and the exact index values used.

Parameters

ParameterTypeRequiredDescription
basePricenumberYesContract or scope amount before escalation.
baseDatestring (YYYY-MM-DD)YesBase period date.
targetDatestring (YYYY-MM-DD)YesDate to escalate to.
indicesarray of { slug, weight }YesUp to 5 indices. Weights are normalized against each other.
fixedPortionnumber (0-1)NoFraction of basePrice that never escalates. Default: 0.
capPercentnumberNoOptional ceiling on the escalation percentage.
floorPercentnumberNoOptional floor on the escalation percentage.

Example Request

curl -X POST https://escalake.com/api/public/v1/escalate \
  -H "Content-Type: application/json" \
  -d '{
    "basePrice": 100000,
    "baseDate": "2024-01-01",
    "targetDate": "2025-01-01",
    "indices": [{ "slug": "pcu331110331110", "weight": 1 }],
    "fixedPortion": 0.2
  }'

Example Response

{
  "basePrice": 100000,
  "adjustedPrice": 105230.5,
  "deltaAmount": 5230.5,
  "fixedPortion": 0.2,
  "rawChangePercent": 5.23,
  "appliedChangePercent": 5.23,
  "capApplied": false,
  "floorApplied": false,
  "indices": [
    {
      "slug": "pcu331110331110",
      "name": "US PPI — Iron and Steel Mills",
      "url": "https://escalake.com/indices/pcu331110331110",
      "weight": 1,
      "baseDate": "2024-01-01",
      "baseValue": 255.1,
      "targetDate": "2025-01-01",
      "targetValue": 261.2,
      "changePercent": 2.39
    }
  ],
  "calculatorUrl": "https://escalake.com/tools/escalation-calculator",
  "poweredBy": "Powered by Escalake (https://escalake.com). Free public index data. Not investment or legal advice."
}