Oimo developer docs
Oimo records the published prices and terms of service of AI and cloud providers. Connect your systems in two ways:
- Webhooks: a signed
POSTto your endpoint when a price, a resource or a terms document changes. - The price history API:
GET /v1/prices/historywith a read-only API key returns every reviewed price, pinned to an instant you choose.
The base URL is https://oimo.com. All requests and deliveries use HTTPS and JSON.
Quickstart
From sign-up to a verified webhook and a first API call in five steps.
1. Sign in
Open https://oimo.com and choose Sign in. If you have no account yet, create one on the sign-in page.
2. Create a workspace
Webhooks, API keys and teammates belong to a workspace. Choose Manage workspaces, then Create workspace. You become its admin; invite teammates under Members & invitations.
3. Create a webhook
- Open Connect → Webhooks and choose New webhook.
- Enter a name and your endpoint URL (it must be
https://). - Tick the events you want (start with Price changes) and the providers, or All providers.
- Choose Create webhook. The signing secret (
whsec_…) is shown when the webhook is created: store it with your receiver. You can reveal it again from the webhook's Settings with Reveal signing secret. - Open the webhook's Settings and choose Send test event. A signed
webhook.testevent goes out with the next delivery run (within 5 minutes). Its attempts appear under Deliveries.
Your receiver must verify the signature and answer with a 2xx status within 5 seconds. A minimal Node.js receiver:
npm install express standardwebhooksimport express from "express";
import { Webhook } from "standardwebhooks";
const webhook = new Webhook(process.env.OIMO_WEBHOOK_SECRET);
const app = express();
app.post("/hooks/oimo", express.raw({ type: "application/json", limit: "5mb" }), (req, res) => {
let event;
try {
event = webhook.verify(req.body, req.headers);
} catch {
return res.status(400).send("invalid signature");
}
console.log(event.type, event.id);
res.sendStatus(204);
});
app.listen(3000);4. Create an API key
Open Connect → API keys, name the key after the system that will use it and choose Create key. The key is shown once. Keys can read; they cannot change anything.
5. Read price history
export OIMO_API_KEY='<your key>'
curl -s "https://oimo.com/v1/prices/history?providers=openai&limit=5" \
-H "Authorization: Bearer $OIMO_API_KEY"The answer names the asOf instant it was read at. Store it with anything you compute from the prices: the same asOf always returns the same rows. See Price history API.
Concepts
- Workspace
- Your organization. Webhooks, API keys and members belong to one workspace. One account can belong to several and switch between them.
- Roles
- Admins and members create and change webhooks and API keys and can reveal or rotate signing secrets. Only admins invite people, change roles and remove members. Every workspace keeps at least one admin.
- Provider
- A company that sells AI or cloud services, named by a slug such as
openaioraws.GET /v1/providerslists them. - Resource
- What a provider sells and prices: a model, a GPU type, a service. Named the way the provider names it (
gpt-5), and where known also by a canonical id (openai/gpt-5). - Price line
- One price of a resource: a
dimension(input tokens, output tokens, GPU hours, …), aunit, acurrencyand apricingTier. - Alias group
- One resource under each provider's own name for it, for example the same model sold by its maker, by AWS and by Azure. Webhooks and the price history API can follow a group instead of naming each provider's resource.
- Reviewed price
- Only published prices are served: new prices pass automatic checks, and some are held for a person to approve. Prices that are pending or rejected never appear in the API or in webhooks.