Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DemandGraph API

Fuse search, developer, product, employment and commerce signals into demand momentum, acceleration, commercial-intent and durability scores.

DemandGraph landing page

Production API: https://demandgraph-api.com

Get a free API key · Documentation · Pricing · Status

Free tier: 50 scored topics/month. No card required. Paid plans from $249/month.

Quickstart

Request a key. The token arrives by email; exchange it for the key, which is shown once.

curl -X POST https://demandgraph-api.com/v1/keys \
  -H 'content-type: application/json' \
  -d '{"email": "you@example.com"}'

Then call the API:

curl -X POST https://demandgraph-api.com/v1/scores \
  -H "Authorization: Bearer $KEY" \
  -H 'content-type: application/json' \
  -d '{"topics":[{"topic":"mcp servers","points":[
        {"source":"search","at":"2026-06-01T00:00:00Z","value":1200},
        {"source":"search","at":"2026-08-01T00:00:00Z","value":4800}]}]}'

Endpoints

DemandGraph API reference, with a live playground for every endpoint

Every endpoint below has a runnable playground on the documentation page.

Endpoint Auth Description
GET /health public Liveness and deployed version
GET / public Service index — endpoints, auth and error format
POST /v1/scores API key Score and rank topics by demand momentum
POST /v1/demo/score public Public demo — scores one topic without a key
GET /v1/weights public The default source weights, and why they differ
POST /v1/checkout public Start a hosted Square checkout for a paid tier
POST /v1/keys public Request a free sandbox API key (sends a verification email)
GET /v1/keys API key List your API keys for this API
POST /v1/keys/claim public Exchange an emailed claim token for the API key
POST /v1/keys/{id}/revoke API key Revoke one of your API keys
POST /v1/keys/{id}/rotate API key Replace one of your API keys with a new secret
GET /v1/usage API key Your consumption and remaining allowance for this period
GET /v1/subscription API key Your current plan, billing window and available changes (dashboard session required)
POST /v1/subscription/plan API key Upgrade or downgrade to another plan (dashboard session required)
POST /v1/subscription/cancel API key Cancel this plan and end metered access (dashboard session required)
GET /v1/invoices API key Every invoice issued against this account, newest first (dashboard session required)
GET /v1/payments API key Every payment attempted against this account and how it went (dashboard session required)

The full machine-readable contract is openapi.json, generated from the deployed route table rather than maintained by hand. A Postman collection is included.

SDKs

Pythonsdk/python

from demandgraph import DemandGraph

client = DemandGraph()                      # reads DEMANDGRAPH_API_KEY

res = client.score([
    {"topic": "mcp servers", "points": [
        {"source": "search",     "at": "2026-06-01T00:00:00Z", "value": 1200},
        {"source": "search",     "at": "2026-08-01T00:00:00Z", "value": 4800},
        {"source": "employment", "at": "2026-06-01T00:00:00Z", "value": 12},
        {"source": "employment", "at": "2026-08-01T00:00:00Z", "value": 47},
    ]},
])

for s in res["scores"]:
    # Discard thin reads rather than acting on them.
    if s["confidence"] < 50:
        continue
    print(s["topic"], s["trend"], s["momentum"], "intent", s["commercialIntent"])

TypeScriptsdk/typescript

import { DemandGraph } from './demandgraph.js'

const client = new DemandGraph()            // reads DEMANDGRAPH_API_KEY

const res = await client.score([
  { topic: 'mcp servers', points: [
    { source: 'search',     at: '2026-06-01T00:00:00Z', value: 1200 },
    { source: 'search',     at: '2026-08-01T00:00:00Z', value: 4800 },
    { source: 'employment', at: '2026-06-01T00:00:00Z', value: 12 },
    { source: 'employment', at: '2026-08-01T00:00:00Z', value: 47 },
  ] },
])

for (const s of res.scores) {
  if (s.confidence < 50) continue           // thin evidence, not a signal
  console.log(s.topic, s.trend, s.momentum, 'intent', s.commercialIntent)
}

Errors

Every failure returns the same shape. Branch on code, which is a stable enum; message is for humans and may change.

{"error": {"code": "invalid_api_key", "message": "...", "requestId": "0f3c8b12-…"}}

requestId appears on every response and in the x-request-id header. Quote it in any support request.

Support

Open an issue in this repository, or see the contact route at https://demandgraph-api.com/docs.

About

Fuse search, developer, product, employment and commerce signals into demand momentum, acceleration, commercial-intent and durability scores.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages