Cost curves by UPC or supplier SKU, with observation gaps
GET
/v1/catalog/inventory/cost-trend
const url = 'https://api.oldsteelarsenal.com/v1/catalog/inventory/cost-trend?days=30';const options = { method: 'GET', headers: { 'x-client-id': '<x-client-id>', 'x-signature': '<x-signature>', 'x-timestamp': '<x-timestamp>' }};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.oldsteelarsenal.com/v1/catalog/inventory/cost-trend?days=30' \ --header 'x-client-id: <x-client-id>' \ --header 'x-signature: <x-signature>' \ --header 'x-timestamp: <x-timestamp>'Search products using POST /v1/catalog/search, then provide either upc (optionally distributor and sku to narrow the identity) or distributor + sku. A SKU filter always requires distributor. Each supplier SKU remains a separate series. Points are actual cost samples, with unchanged intervals compressed; baseline resets and missing coverage split segments. No retail prices or extrapolation. Up to 12 series; series_truncated signals more variants. days=0 selects all retained history; 1..3650 selects a rolling window. Large windows return 422 instead of silently losing points. Scope: catalog:read.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters”Header Parameters
Section titled “Header Parameters”Responses
Section titled “ Responses ”Successful Response
Media typeapplication/json
CostTrendResponse
object
currency
required
Currency
string
name
required
Name
string
series
required
Series
Array<object>
CostSeriesobject
change_comparable
required
Change Comparable
boolean
change_count
required
Change Count
integer
changes
required
distributor
required
Distributor
string
distributor_name
required
Distributor Name
string
gap_count
required
Gap Count
integer
name
required
Name
string
sample_count
required
Sample Count
integer
segments
required
Segments
Array<object>
CostSegmentobject
points
required
Points
Array<object>
CostPointobject
at
required
At
string format: date-time
cost
required
Cost
number
sku
required
Sku
string
state
required
State
string
series_truncated
required
Series Truncated
boolean
server_time
required
Server Time
string format: date-time
window_days
required
Window Days
0 means all retained history; otherwise a 1..3650 day window.
integer
window_start
required
Window Start
string format: date-time
Example
{ "currency": "USD", "series": [ { "changes": [ { "kind": "baseline" } ], "state": "no_data" } ]}Validation Error
Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationErrorobject
ctx
Context
object
input
Input
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{ "detail": [ { "ctx": {}, "input": "example", "loc": [ "example" ], "msg": "example", "type": "example" } ]}