Veblyn

API Reference

Base URL: https://api.veblyn.com/api/v1

All authenticated endpoints require a Bearer token in the Authorization header:

Authorization: Bearer vb_YOUR_KEY

Auth

POST/otp/requestall

Send a one-time password to an email address for sign-in or signup.

Request body
{ "email": "you@example.com" }
Request
curl -X POST https://api.veblyn.com/api/v1/otp/request \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com"}'
Response
{ "ok": true }
POST/otp/verifyall

Verify the OTP code and receive an API key.

Request body
{ "email": "you@example.com", "code": "482910" }
Request
curl -X POST https://api.veblyn.com/api/v1/otp/verify \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "code": "482910"}'
Response
{ "api_key": "vb_abc123..." }
GET/mefree+

Return the authenticated user profile and current API usage.

Request
curl -H "Authorization: Bearer vb_YOUR_KEY" \
  https://api.veblyn.com/api/v1/me
Response
{
  "email": "you@example.com",
  "display_name": "Jane",
  "tier": "pro",
  "api_call_today": 312,
  "api_call_limit": 5000,
  "created_at": "2026-01-15T09:00:00Z"
}
POST/key/regeneratefree+

Regenerate the API key for the authenticated user.

Request
curl -X POST -H "Authorization: Bearer vb_YOUR_KEY" \
  https://api.veblyn.com/api/v1/key/regenerate
Response
{ "api_key": "vb_new789..." }

Market

GET/marketfree+

List venue-specific markets. Free tier gets delayed data.

Parameter
NameTypeRequiredDescription
categorystringnoFilter by category
statusstringnoFilter by status
venuestringnoFilter by venue (polymarket, kalshi)
limitintegernoResults per page, 1-200, default 50
offsetintegernoPagination offset, default 0
Request
curl -H "Authorization: Bearer vb_YOUR_KEY" \
  "https://api.veblyn.com/api/v1/market?category=shipping&limit=2"
Response
{
  "market": [
    {
      "id": "2d4d9d0e-6ed4-57f0-9a90-42c36ff0a7ab",
      "title": "Suez Canal disrupted through Q2 2026?",
      "venue": "polymarket",
      "category": "shipping",
      "price": 0.62,
      "bid": 0.61,
      "ask": 0.63,
      "volume": 284000,
      "status": "active",
      "snapshot_ts": "2026-04-01T14:30:00Z"
    }
  ],
  "total": 18
}
GET/market/:idfree+

Get one venue-specific market by UUID.

Request
curl -H "Authorization: Bearer vb_YOUR_KEY" \
  https://api.veblyn.com/api/v1/market/2d4d9d0e-6ed4-57f0-9a90-42c36ff0a7ab
Response
{
  "id": "2d4d9d0e-6ed4-57f0-9a90-42c36ff0a7ab",
  "venue": "polymarket",
  "title": "Suez Canal disrupted through Q2 2026?",
  "category": "shipping",
  "price": 0.62,
  "bid": 0.61,
  "ask": 0.63,
  "volume": 284000,
  "bid_depth": 12000,
  "ask_depth": 9800,
  "status": "active",
  "outcome_label": "YES",
  "resolution_ts": null,
  "snapshot_ts": "2026-04-01T14:30:00Z"
}
GET/market/:id/historypro+

Get quote history for one market. Returns flat quote points only.

Parameter
NameTypeRequiredDescription
startdatetimenoStart of time range (ISO 8601)
enddatetimenoEnd of time range (ISO 8601)
limitintegernoMax results, 1-2000, default 500
Request
curl -H "Authorization: Bearer vb_YOUR_KEY" \
  "https://api.veblyn.com/api/v1/market/2d4d9d0e-6ed4-57f0-9a90-42c36ff0a7ab/history?limit=3"
Response
[
  {
    "ts": "2026-04-01T14:30:00Z",
    "price": 0.62,
    "bid": 0.61,
    "ask": 0.63,
    "volume": 284000,
    "bid_depth": 12000,
    "ask_depth": 9800,
    "status": "active"
  }
]

Metric

GET/stream/:stream_id/metricfree+

List metric series available under a stream.

Request
curl -H "Authorization: Bearer vb_YOUR_KEY" \
  "https://api.veblyn.com/api/v1/stream/portwatch/metric"
Response
[
  {
    "id": "portwatch:suez:throughput_count",
    "stream_id": "portwatch",
    "entity_id": "suez",
    "metric_name": "throughput_count",
    "unit": "count",
    "last_ts": "2026-04-01T12:00:00Z",
    "latest_value": 42
  }
]
GET/metric/:metric_idpro+

Get metric metadata.

Request
curl -H "Authorization: Bearer vb_YOUR_KEY" \
  "https://api.veblyn.com/api/v1/metric/portwatch:suez:throughput_count"
Response
{
  "id": "portwatch:suez:throughput_count",
  "stream_id": "portwatch",
  "entity_id": "suez",
  "metric_name": "throughput_count",
  "unit": "count",
  "source": "portwatch-chokepoint",
  "coverage": "observed",
  "first_ts": "2026-03-15T00:00:00Z",
  "last_ts": "2026-04-01T12:00:00Z",
  "latest_value": 42
}
GET/metric/:metric_id/historypro+

Get raw metric history. Returns flat points only.

Parameter
NameTypeRequiredDescription
startdatetimenoStart of time range (ISO 8601)
enddatetimenoEnd of time range (ISO 8601)
limitintegernoMax results, 1-2000, default 500
Request
curl -H "Authorization: Bearer vb_YOUR_KEY" \
  "https://api.veblyn.com/api/v1/metric/portwatch:suez:throughput_count/history?limit=3"
Response
[
  {
    "ts": "2026-04-01T12:00:00Z",
    "value": 42,
    "unit": "count",
    "coverage": "observed"
  }
]

Stream

GET/streamfree+

List all real-world data streams.

Request
curl -H "Authorization: Bearer vb_YOUR_KEY" \
  https://api.veblyn.com/api/v1/stream
Response
[
  {
    "id": "portwatch",
    "name": "PortWatch AIS chokepoint data",
    "category": "shipping",
    "status": "active",
    "metric_count": 30,
    "poll_interval_sec": 3600
  },
  {
    "id": "fred",
    "name": "FRED macro economic data",
    "category": "macro",
    "status": "active",
    "metric_count": 6,
    "poll_interval_sec": 86400
  }
]
GET/stream/:stream_idfree+

Get one stream summary document.

Billing

POST/billing/checkoutfree+

Create a Stripe Checkout session for upgrading to Pro or Fund.

Request body
{ "tier": "pro" }
Request
curl -X POST -H "Authorization: Bearer vb_YOUR_KEY" \
  -H "Content-Type: application/json" \
  https://api.veblyn.com/api/v1/billing/checkout \
  -d '{"tier": "pro"}'
Response
{ "url": "https://checkout.stripe.com/c/pay_..." }
GET/billing/subscriptionfree+

Return current subscription tier, Stripe subscription ID, and today\'s usage.

Request
curl -H "Authorization: Bearer vb_YOUR_KEY" \
  https://api.veblyn.com/api/v1/billing/subscription
Response
{
  "tier": "pro",
  "stripe_subscription_id": "sub_abc123",
  "api_call_today": 312,
  "api_call_limit": 5000
}
POST/billing/portalfree+

Create a Stripe Customer Portal session for managing your subscription.

Request
curl -X POST -H "Authorization: Bearer vb_YOUR_KEY" \
  https://api.veblyn.com/api/v1/billing/portal
Response
{ "url": "https://billing.stripe.com/p/session/..." }