# Portal Sagecontinuum — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Monitor environmental sensor networks in real-time by accessing node status, sensor readings, and application performance data from the Sage portal. Query historical time-series measurements, browse available sensors and applications, and track job details across your distributed environmental monitoring infrastructure.

**Category:** Other | **Website:** [portal.sagecontinuum.org/](https://portal.sagecontinuum.org/) | **Docs:** [parse.bot/marketplace/38abea86-aae4-40bc-8a2e-adab1291b054/portal-sagecontinuum-org-api](https://parse.bot/marketplace/38abea86-aae4-40bc-8a2e-adab1291b054/portal-sagecontinuum-org-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_app_detail

Get details for a specific version of an app from the Sage ECR App Catalog. All three parameters (namespace, name, version) are required; there is no 'latest' version alias.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `NAME` | string | Yes | App name (e.g., goes-data, cl61-plot) |
| `NAMESPACE` | string | Yes | App namespace/owner (e.g., andrewsm, bhupendraraut) |
| `VERSION` | string | Yes | App version string (e.g., 0.1.1, 0.25.4.23). Obtain from list_apps results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/get_app_detail \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"NAME":"<string>","NAMESPACE":"<string>","VERSION":"<string>"}'
```

### get_job_detail

Get details for a specific job by job ID. Returns full job definition including plugins with specs, node assignments, science rules, success criteria, and state.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `JOB_ID` | string | Yes | Numeric job ID as a string (e.g., 1, 2, 10) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/get_job_detail \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"JOB_ID":"<string>"}'
```

### get_node_app_history

Get the plugin/app execution history for a node based on scheduler system logs (sys.scheduler.* events). Returns plugin completion and event records within the specified time window.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `START` | string | No | Start time for history lookup relative to now. Format: -<number><unit> where unit is m (minutes), h (hours), or d (days). Examples: -1d, -7d, -30d. |
| `VSN` | string | Yes | Node VSN identifier (e.g., W02C, H007) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/get_node_app_history \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"START":"<string>","VSN":"<string>"}'
```

### get_node_computes

Get the compute hardware units attached to a specific node. Returns model, manufacturer, serial number, and capabilities for each compute unit.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `VSN` | string | Yes | Node VSN identifier (e.g., W0B8, H007) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/get_node_computes \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"VSN":"<string>"}'
```

### get_node_latest_records

Get the most recent sensor and system measurement records for a node within a specified lookback window. Returns timestamped measurements with name, value, and metadata.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `LOOKBACK` | string | No | Time lookback period relative to now. Format: -<number><unit> where unit is m (minutes), h (hours), or d (days). Examples: -10m, -1h, -1d. |
| `VSN` | string | Yes | Node VSN identifier (e.g., W0B8, H007) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/get_node_latest_records \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"LOOKBACK":"<string>","VSN":"<string>"}'
```

### get_node_sensors

Get the full hardware manifest for a specific node including sensors, resources, LoRaWAN connections, and compute units. Uses the manifests API for detailed hardware information including datasheets and descriptions.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `VSN` | string | Yes | Node VSN identifier (e.g., W0B8, H007, W02C) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/get_node_sensors \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"VSN":"<string>"}'
```

### get_node_status

Get the reporting status and metadata for a specific node by its VSN. Returns node details including project, focus, location, GPS coordinates, registration info, and lists of attached sensors and compute units. Also checks whether the node is currently reporting data by looking for recent sys.uptime signals.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `VSN` | string | Yes | Node VSN identifier (e.g., W0B8, H007, W02C) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/get_node_status \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"VSN":"<string>"}'
```

### get_sensor_detail

Get details for a specific sensor hardware model including capabilities, manufacturer, datasheet URL, description, and list of nodes using it.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `MODEL` | string | Yes | Sensor hardware model name (e.g., BME680, MPU6050, ES-642) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/get_sensor_detail \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"MODEL":"<string>"}'
```

### list_all_nodes

List all nodes registered in the system, regardless of reporting status. Includes nodes from all projects and phases.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/list_all_nodes \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### list_apps

List all public applications in the Sage Edge Code Repository (ECR) App Catalog. Returns app metadata including name, namespace, version, description, source, and build info.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/list_apps \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### list_jobs

List all jobs across the Sage platform. Returns job definitions including plugins, node assignments, scheduling rules, and current state.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/list_jobs \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### list_nodes

List all active nodes that are currently reporting data. Checks for recent sys.uptime signals within the last 15 minutes to determine reporting status. Returns nodes with full metadata including sensors, computes, GPS, and reporting status.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/list_nodes \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### list_sensors

List all sensor hardware models in the Sage catalog. Returns detailed sensor information including capabilities, datasheets, descriptions, and which nodes use each sensor.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/list_sensors \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### query_data

Raw query to the Sage time-series data API. Accepts a JSON query with start time, filters, and optional tail parameter. Returns NDJSON-parsed measurement records with timestamp, name, value, and meta fields.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `QUERY_JSON` | string | Yes | JSON string with query parameters. Required key: 'start' (relative time like '-1h' or '-1d'). Optional keys: 'filter' (object with field filters like 'vsn', 'name'), 'tail' (integer, max records to return). Example: {"start":"-1h","filter":{"vsn":"W0B8","name":"env.temperature"},"tail":10} |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-portal-sagecontinuum-org-api-38abea86/query_data \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"QUERY_JSON":"<string>"}'
```
