OSPulse

Quickstart

Go from nothing to a verified 200 OK from the OSPulse API in about five minutes.

Before you start

You need an OSPulse account at app.ospulse.app. Everything below runs against the production API at https://api.ospulse.app.

Check the API is reachable

The health endpoint needs no authentication, which makes it the fastest way to confirm you can reach the API and that your network allows it.

bash
curl https://api.ospulse.app/api/v1/health

You should get back a payload reporting overall health and each checked dependency:

json
{
  "status": "Healthy",
  "totalDuration": "00:00:00.0025332",
  "entries": {
    "postgres": {
      "status": "Healthy",
      "tags": ["db", "ready"]
    }
  }
}

If that returns Healthy, you are ready to authenticate.

Get your first successful call

Create an API token

Sign in to app.ospulse.app and open API tokens in the main navigation — or go straight to app.ospulse.app/api-tokens — then create a token. Copy it immediately: the token value is shown once and is not recoverable afterwards.

The screen is visible to administrators only. If it is not in your navigation, ask an administrator in your tenant to issue a token for you.

You can also create one through the API itself if you already hold a token:

bash
curl -X POST https://api.ospulse.app/api/v1/api-tokens \
  -H "Authorization: Bearer $OSPULSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "local-dev" }'

Store it as an environment variable

Never hard-code a token into source. Export it into your shell so the examples below work verbatim:

bash
export OSPULSE_TOKEN="your_token_here"

Make an authenticated request

Every authenticated endpoint takes the token as a bearer credential in the Authorization header. List the packages OSPulse is tracking for your tenant:

bash
curl https://api.ospulse.app/api/v1/packages?take=5 \
  -H "Authorization: Bearer $OSPULSE_TOKEN"

Read the response

Collection endpoints return a page envelope — the items themselves plus the counters you need to page through the rest:

json
{
  "items": [
    {
      "packageId": "9d3f7c21-8a4b-4e15-b6c0-3f8e2a91d574",
      "name": "express",
      "ecosystem": "Npm",
      "latestVersion": "4.21.2",
      "status": "Active",
      "sourceRepositoryUrl": "https://github.com/expressjs/express"
    }
  ],
  "take": 5,
  "skip": 0,
  "totalReturned": 5
}

That is a successful authenticated call. Keep the packageId — most of the package endpoints, such as health and vulnerabilities, are keyed on it.

totalReturned is not a total count

This endpoint reports totalReturned — how many items came back in this page, not how many exist overall. Page until a response returns fewer items than you asked for rather than computing a page count. See pagination.

Keep tokens out of version control

An API token carries the permissions of whoever created it. Store tokens in your secret manager or CI secret store, never in a committed file. If one leaks, revoke it immediately — see Authentication.

Handling errors

Errors use RFC 7807 problem details. A missing or invalid token returns 401:

json
{
  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
  "title": "Unauthorized",
  "status": 401,
  "detail": "The supplied API token is missing, expired, or revoked.",
  "correlationId": "0HN7GKQ2M3P4A:00000001"
}

Always log the correlationId — quoting it lets support trace your exact request.

Next steps