Docs

First request in five minutes

Base URL: https://api.databridge.world/v1. This is the public summary. The full docs and your real token live in the console.

Quickstart

  1. Get a token

    Generate one in the console under API after signup. The dbw_live_ prefix draws on your quota; dbw_test_ only reaches sample data and costs nothing.

  2. Pick a source

    Browse the catalog, or call GET /v1/sources for the full list with health status.

  3. Make the first call

    Three ways to do the same thing. All copy-paste.

curl -s "https://api.databridge.world/v1/feeds/tech-github-releases/items?limit=20" \
  -H "Authorization: Bearer $DBW_TOKEN"

Auth

Every request carries a Bearer token in Authorization. Tokens are bound to your account and stop working the moment you revoke them.

Authorization: Bearer dbw_live_9f21c8d4e7a04b31
Don't ship tokens in frontend code
Calling from the browser exposes the token. Proxy through your own server, and scope any token you hand out to a single source.

Endpoints

MethodPathPurpose
GET/sourcesAll sources with domain, last fetch time and health
GET/feedsFeeds available to the current account
GET/feeds/{feed_id}Single-source metadata: description, cadence, field mapping
GET/feeds/{feed_id}/itemsItems with since / until / q / cursor / limit
GET/feeds/{feed_id}/items/{item_id}One item including revision history
POST/webhooksRegister a delivery endpoint (Premium)

Response shape

Field names are identical across domains. Below is the full structure of one item.

{
  "feed": {
    "id": "tech-github-releases",
    "name": "GitHub · repository releases",
    "category": "tech",
    "updated_at": "2026-11-04T09:12:40Z"
  },
  "items": [
    {
      "id": "tech-github-releases:9f21c8d4",
      "title": "v2.4.0 — streaming parser rewrite",
      "url": "https://example.com/releases/v2.4.0",
      "summary": "Replaces the buffered reader with an incremental...",
      "content": null,
      "author": "example",
      "published_at": "2026-11-04T08:41:00Z",
      "updated_at": null,
      "lang": "en",
      "tags": ["release"],
      "hash": "9f21c8d4",
      "revision": 0,
      "deleted": false
    }
  ],
  "next_cursor": "eyJvIjoyMH0"
}

Paging and incremental fetch

Pull everything once, then only the delta. cursor is position-based rather than offset-based, so page 200 is as fast as page 1.

# Delta: only items after Nov 1
GET /v1/feeds/fin-cn-macro/items?since=2026-11-01T00:00:00Z

# Next page: pass the previous next_cursor back unchanged
GET /v1/feeds/fin-cn-macro/items?cursor=eyJvIjoyMH0

# next_cursor: null means you've reached the end

On dedupe: upsert keyed on id. Within a source it never changes; identical content across sources isn't merged for you, so compare hash yourself.

Quotas and rate limits

Quotas reset daily at 00:00 UTC+8. Live counters ride in response headers, so you can branch in code instead of guessing.

X-Quota-Limit: 20000
X-Quota-Used: 3412
X-Quota-Reset: 2026-11-05T00:00:00+08:00
X-Rate-Limit: 20          # requests per second
X-Rate-Remaining: 17

Exceeding quota returns 402; exceeding rate returns 429 with Retry-After. Neither costs money or suspends the account. Back off and retry.

Error codes

StatuscodeMeaning and handling
401invalid_tokenMissing or revoked. Regenerate in the console.
403source_not_in_planSource outside your plan. Upgrade or switch.
404feed_not_foundTypo in feed_id, or the source was retired.
402quota_exceededDaily quota spent. Resets at midnight UTC+8.
429rate_limitedPer-second ceiling hit. Honor Retry-After.
410feed_disabledRepeated failures after an origin redesign; fetching paused.
503upstream_unavailableOrigin temporarily unreachable. Exponential backoff.

Webhooks (Premium)

Skip polling. New items POST to your endpoint on ingest, signed so you can verify authenticity.

POST https://your-app.example.com/hooks/dbw
X-DBW-Signature: sha256=6b1f...e0
X-DBW-Feed: tech-github-releases
X-DBW-Delivery: 01JC2F8Q

{ "feed_id": "tech-github-releases", "items": [ { "id": "...", "title": "..." } ] }

Signature = HMAC-SHA256(raw body, webhook_secret). Five retries with exponential backoff (10s → 160s); after that the delivery is logged in the console and can be replayed manually.

This page can lag the implementation
It's the summary on the marketing site. Field names, endpoints and quotas follow the console docs. If the two disagree, the console wins, and we'd like to hear about it.

Grab a token and try it

The free tier gives you 500 calls a day, enough to run one source end to end.