Learn / The basics

What is
Stellarium?

Stellarium is a decentralized, programmable API network. Anyone can host an API on it, and anyone can call those APIs with a small program written in RequestScript.

01 / The network

A network of APIs,
run by its users.

Most APIs live on one company's servers. If you want to use them, you sign up, get a key, and follow that company's rules. If the service changes or shuts down, everything built on it breaks.

Stellarium works differently. It is made of many independent nodes. Each node can host its own APIs, which Stellarium calls resources. Nodes find each other, share the list of resources they know about, and pass requests along to whichever node hosts the resource you asked for.

No single server is in charge. You don't need to know where a resource lives. You just ask for it by name, and the network routes your request.

02 / Open to anyone

Host an API.
Get paid for it.

Anyone can run a node and offer resources on it. A resource can be anything you can write as a function: a weather lookup, a price feed, a translation service, a database query.

When other people call your resource, you can set a price for each call. The caller's node pays you in USDC from an on-chain escrow, and only for calls that succeed. A valid payment is also the caller's permission to call, so you can earn money from an API without building your own billing, sign up, or key management. The network handles discovery and payments so you can focus on what your API does.

Learn how to run a node

03 / RequestScript

One small language
for every API.

Stellarium runs on RequestScript, a programming language built for querying Stellarium APIs. It has variables, objects, exact decimals, and if/else, so you can write real logic, not just single calls. It deliberately has no loops, so every request finishes, and your node knows the most a request can cost before it runs.

A RequestScript program names the resources it wants and calls their functions. Here is a request that asks a weather resource for the temperature in Oslo:

GetTemperature.req
request GetTemperature {
  const weather: com.example.Weather

  const reading = weather.temperature(city: "Oslo")
  if (reading.error != null) {
    return reading.error.message
  }

  return reading.value
}

Notice what is missing. There are no URLs, no per-API keys, and no HTTP status codes to decode. Every call comes back as a result with either a value or an error, so your program decides what to do when something fails. You say what you want, and your node figures out which peer hosts com.example.Weather and forwards the request there.

Want to dig into the language itself? See the RequestScript repository.

04 / Go deeper

Keep reading.

Whitepaper

The full design

How the network, payments, and RequestScript fit together, written out in detail.

Documentation

Guides and references

Quickstart, core concepts, configuration, and the full HTTP API for node operators and builders.

See it in action

How a request travels

A quick visual of one program running across several nodes.

Ready to put an API on the network?

Run a node →