openapi: 3.0.3 info: title: FreightWaves SONAR Authentication Data API description: The FreightWaves SONAR API delivers freight-market intelligence — index values (rates, volumes, tender rejections, capacity signals, etc.) by geography (market, lane, national) and date. Access is via a bearer token obtained from the Credential authenticate endpoint. Data calls are billable; lookup calls (indexes, qualifiers, levels, lanes, zip3, latest) are free. This specification is a faithful capture of the publicly documented SONAR API reference; it is not published by FreightWaves as OpenAPI. version: '2.0' x-generated: '2026-07-19' x-method: generated x-source: https://api.sonar.surf/Help/ contact: name: SONAR Support url: https://knowledge.gosonar.com/ servers: - url: https://api.freightwaves.com description: SONAR API production security: - bearerAuth: [] tags: - name: Data description: Billable index data queries by item, level, and lane. paths: /data/{index}/{qualifier}/{date}: get: operationId: getIndexData tags: - Data summary: Get index data for a single date description: Return the value of an index for a qualifier (market/lane/level) on a single date. Billable call. parameters: - name: index in: path required: true schema: type: string example: OTRI description: Index ticker (e.g. OTRI). - name: qualifier in: path required: true schema: type: string example: ATL description: Qualifier — market lane: null or level code (e.g. ATL: null NATIONAL: null XMKT).: null - name: date in: path required: true schema: type: string format: date example: '2019-02-20' description: Observation date (YYYY-MM-DD). responses: '200': description: Index data points. content: application/json: schema: type: array items: $ref: '#/components/schemas/DataPoint' '401': description: Missing or invalid bearer token. '429': description: Rate limit exceeded (100 requests/minute). /data/{index}/{qualifier}/{startDate}/{endDate}: get: operationId: getIndexDataRange tags: - Data summary: Get index data for a date range description: Return index values for a qualifier across an inclusive date range. Billable call. parameters: - name: index in: path required: true schema: type: string example: OTRI - name: qualifier in: path required: true schema: type: string example: ATL - name: startDate in: path required: true schema: type: string format: date example: '2019-02-01' - name: endDate in: path required: true schema: type: string format: date example: '2019-02-20' responses: '200': description: Index data points for the range. content: application/json: schema: type: array items: $ref: '#/components/schemas/DataPoint' '401': description: Missing or invalid bearer token. '429': description: Rate limit exceeded (100 requests/minute). components: schemas: DataPoint: type: object properties: index: type: string example: OTRI qualifier: type: string example: ATL date: type: string format: date value: type: number securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: 'Bearer token from POST /Credential/authenticate, sent as `Authorization: Bearer `. Tokens are valid for one year.'