Skip to main content
GET
/
api
/
seismic
/
rsam
Query RSAM
curl --request GET \
  --url https://avert.ldeo.columbia.edu/api/seismic/rsam
{
  "series": [
    {
      "network": "AV",
      "station": "CLNE",
      "location": "",
      "channel": "BHZ",
      "window_sec": 60,
      "points": [
        {
          "time": "2026-04-10T00:00:00Z",
          "rsam_counts": 142.5
        },
        {
          "time": "2026-04-10T00:01:00Z",
          "rsam_counts": 138.2
        }
      ]
    }
  ],
  "datefrom": "20260410",
  "dateto": "20260412",
  "query": {
    "network": "AV",
    "station": "CLNE",
    "channel": "BHZ",
    "datefrom": "20260410",
    "dateto": "20260412"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.avert.ldeo.columbia.edu/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The RSAM endpoints provide access to seismic amplitude data from AVERT monitoring stations. Query time-series data by network, station, and channel with flexible date range filtering.
Use /api/seismic/sites to discover available network/station/channel combinations before querying RSAM data.

Available Stations and Channels

FieldValue
VolcanoCleveland
NetworkAV
StationChannels
CLCLBHE, BHN, BHZ
CLCOBHE, BHN, BHZ
CLESBHE, BHN, BHZ
CLNEBHE, BHN, BHZ
CLSFBHE, BHN, BHZ

Endpoints

MethodPathDescription
GET/api/seismic/sitesList all available network/station/channel combinations
GET/api/seismic/datesList dates with RSAM data for a specific channel
GET/api/seismic/rsam/latestMost recent RSAM entry per channel
GET/api/seismic/rsamRSAM time-series for a channel over a date range

GET /api/seismic/rsam

Returns a RSAM time-series for the requested channel between datefrom and dateto. Both dates are inclusive and results are returned in chronological order.

Parameters

network
string
required
Seismic network codeExample: AV
?network=AV
station
string
required
Station codeExample: CLNE
?station=CLNE
channel
string
required
Channel codeExample: BHZ
?channel=BHZ
datefrom
string
required
Start date for query range (inclusive)Format: YYYYMMDD
Example: 20260410 = April 10, 2026
# Start from April 10, 2026
?datefrom=20260410
dateto
string
required
End date for query range (inclusive)Format: YYYYMMDD
Example: 20260412 = April 12, 2026
# End on April 12, 2026
?dateto=20260412

Response Format

{
  "series": [
    {
      "network": "AV",
      "station": "CLNE",
      "location": "",
      "channel": "BHZ",
      "window_sec": 60,
      "points": [
        {
          "time": "2026-04-10T00:00:00Z",
          "rsam_counts": 142.5
        },
        {
          "time": "2026-04-10T00:01:00Z",
          "rsam_counts": 138.2
        }
      ]
    }
  ],
  "datefrom": "20260410",
  "dateto": "20260412",
  "query": {
    "network": "AV",
    "station": "CLNE",
    "channel": "BHZ",
    "datefrom": "20260410",
    "dateto": "20260412"
  }
}

Response Fields

series
array
required
Array containing one RSAM series object for the requested channel
datefrom
string
required
Start date echoed from your query (YYYYMMDD)
dateto
string
required
End date echoed from your query (YYYYMMDD)
query
object
required
Echo of all query parameters for debugging

GET /api/seismic/sites

Returns all distinct network/station/location/channel combinations that have RSAM data. Use this to discover what data is available before querying. Rate limit: 60 requests per minute

Response Format

{
  "channels": [
    {
      "network": "AV",
      "station": "CLNE",
      "location": "",
      "channel": "BHZ"
    },
    {
      "network": "AV",
      "station": "CLES",
      "location": "",
      "channel": "BHZ"
    }
  ],
  "total": 2
}

Response Fields

channels
array
required
List of available channel combinations
total
integer
required
Total number of distinct channels returned

GET /api/seismic/dates

Returns a list of dates (UTC) that have RSAM data for the requested network/station/channel. Use this to populate date pickers or validate date availability before querying. Rate limit: 60 requests per minute

Parameters

network
string
required
Seismic network code (e.g. AV)
station
string
required
Station code (e.g. CLNE)
channel
string
required
Channel code (e.g. BHZ)

Response Format

{
  "dates": [
    "2026-04-12",
    "2026-04-11",
    "2026-04-10"
  ],
  "network": "AV",
  "station": "CLNE",
  "channel": "BHZ"
}

Response Fields

dates
array
required
List of available dates in YYYY-MM-DD format, ordered newest first
network
string
required
Network code echoed from your query
station
string
required
Station code echoed from your query
channel
string
required
Channel code echoed from your query

GET /api/seismic/rsam/latest

Returns the most recent available RSAM date for every network/station/location/channel combination. Useful for dashboards and monitoring views. Rate limit: 60 requests per minute

Response Format

{
  "channels": [
    {
      "network": "AV",
      "station": "CLNE",
      "location": "",
      "channel": "BHZ",
      "latest_date": "2026-04-12"
    }
  ],
  "total": 1
}

Response Fields

channels
array
required
List of channels with their most recent data date
total
integer
required
Total number of channels returned

Example Requests

Discover Available Data

# See all available network/station/channel combinations
curl "https://avert.ldeo.columbia.edu/api/seismic/sites"

Query RSAM Time-series

# RSAM for AV.CLNE.BHZ on April 10, 2026
curl "https://avert.ldeo.columbia.edu/api/seismic/rsam?\
network=AV&\
station=CLNE&\
channel=BHZ&\
datefrom=20260410&\
dateto=20260410"

Code Examples

JavaScript/TypeScript

// Step 1: find available channels
const sitesRes = await fetch(
  'https://avert.ldeo.columbia.edu/api/seismic/sites'
);
const { channels } = await sitesRes.json();
console.log('Available channels:', channels.length);

// Step 2: query RSAM for the first channel
const { network, station, channel } = channels[0];
const params = new URLSearchParams({
  network, station, channel,
  datefrom: '20260410',
  dateto: '20260412',
});

const rsamRes = await fetch(
  `https://avert.ldeo.columbia.edu/api/seismic/rsam?${params}`
);
const data = await rsamRes.json();

const series = data.series[0];
console.log(`${series.points.length} points for ${network}.${station}.${channel}`);

Python

import requests

response = requests.get(
    'https://avert.ldeo.columbia.edu/api/seismic/rsam',
    params={
        'network': 'AV',
        'station': 'CLNE',
        'channel': 'BHZ',
        'datefrom': '20260410',
        'dateto': '20260412',
    }
)
data = response.json()

series = data['series'][0]
print(f"{len(series['points'])} RSAM points")
print(f"Window: {series['window_sec']} seconds")

for point in series['points'][:5]:
    print(f"  {point['time']}: {point['rsam_counts']:.1f} counts")

Handling Rate Limits

The /api/seismic/rsam endpoint limits requests to 100 per minute per IP address. Helper endpoints (/sites, /dates, /rsam/latest) are limited to 60 per minute.
import requests
import time

def query_rsam_with_retry(params, max_retries=3):
    for attempt in range(max_retries):
        response = requests.get(
            'https://avert.ldeo.columbia.edu/api/seismic/rsam',
            params=params
        )
        if response.status_code == 200:
            return response.json()
        elif response.status_code == 429:
            wait_time = 2 ** attempt
            print(f"Rate limited. Waiting {wait_time} seconds...")
            time.sleep(wait_time)
        else:
            response.raise_for_status()
    raise Exception("Max retries exceeded")

Error Responses

{
  "error": true,
  "status_code": 400,
  "detail": "Invalid datefrom format '2026-04-10'. Use YYYYMMDD (e.g. 20260410)."
}

Rate Limits

EndpointRate LimitWindow
/api/seismic/rsam100 requestsper minute
/api/seismic/sites60 requestsper minute
/api/seismic/dates60 requestsper minute
/api/seismic/rsam/latest60 requestsper minute

Need Help?

Query Imagery

Query infrared and visible volcano imagery

Contact Support

Questions or issues? Reach out to our team