ExchangeMarket exchange.market@1

Generated at from openvibe-contracts v0.419.0 and openvibe-sdk v0.161.0.

Version
1.0.0
Owner
ai
Visibility
public
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/exchange/market.v1.json

Public own-page provider offers, enabled or not; prices are observations, not routing quotes. Paged by limit (1-500) and cursor, filterable by maker, open_weights and kind. No credentials or account identifiers. Model metadata preserves per-field provenance and stale state.

Fields

FieldTypeRequiredDescriptionConstraints
$schemaconstyes
  • = "exchange.market@1"
generated_atstringyes
  • format date-time
metadataobjectyes
  • no other fields
metadata.sourceconstyes
  • = "https://models.dev/api.json"
metadata.checked_atstring | nullyes
  • format date-time
metadata.stalebooleanyes
total_modelsintegeryes
  • minimum 0
total_offersintegeryes
  • minimum 0
next_cursorstring | nullyes
offersarray of objectyes
  • maxItems 500
  • items: no other fields
offers[].makerstring | nullyes
offers[].licencestring | nullyes
offers[].release_datestring | nullyes
offers[].knowledge_cutoffstring | nullyes
offers[].price_checked_atstring | nullyes
offers[].modelstringyes
  • minLength 1
offers[].providerstringyes
  • minLength 1
offers[].provider_namestringyes
  • minLength 1
offers[].provider_modelstringyes
  • minLength 1
offers[].namestringyes
  • minLength 1
offers[].routedbooleanyes
offers[].uncensoredbooleanyes
offers[].contextnumber | nullyes
  • minimum 0
offers[].max_outputnumber | nullyes
  • minimum 0
offers[].kindenumyes
  • one of "chat", "embedding", "stt", "image"
offers[].provider_accessenumyes
  • one of "OWN_DEPLOYMENT", "AUTHORIZED_WHOLESALE", "CUSTOMER_BYOK", "UNVERIFIED", "RESTRICTED"
offers[].open_weightsboolean | nullyes
offers[].price_sourcestring | nullyes
  • format uri
offers[].priceobjectyes
  • no other fields
offers[].price.innumber | nullyes
  • minimum 0
offers[].price.outnumber | nullyes
  • minimum 0
offers[].price.cachednumber | nullyes
  • minimum 0
offers[].price.currencyconstyes
  • = "USD"
offers[].price.perconstyes
  • = "1M tokens"
offers[].field_sourcesobjectyes
  • no other fields
offers[].field_sources.makerstring
  • format uri
offers[].field_sources.contextstring
  • format uri
offers[].field_sources.max_outputstring
  • format uri
offers[].field_sources.open_weightsstring
  • format uri
offers[].field_sources.licencestring
  • format uri
offers[].field_sources.release_datestring
  • format uri
offers[].field_sources.knowledge_cutoffstring
  • format uri
offers[].field_sources.modalitiesstring
  • format uri
offers[].modalitiesobject | nullyes

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: empty-stale
{
  "$schema": "exchange.market@1",
  "generated_at": "2026-11-09T00:00:00.000Z",
  "metadata": {
    "source": "https://models.dev/api.json",
    "checked_at": "2026-11-07T00:00:00.000Z",
    "stale": true
  },
  "total_models": 0,
  "total_offers": 0,
  "offers": [],
  "next_cursor": null
}
Valid: offers
{
  "$schema": "exchange.market@1",
  "generated_at": "2026-11-09T00:00:00.000Z",
  "metadata": {
    "source": "https://models.dev/api.json",
    "checked_at": null,
    "stale": true
  },
  "total_models": 29,
  "total_offers": 38,
  "offers": [
    {
      "model": "abliteration/abliterated-model",
      "provider": "abliteration",
      "provider_name": "Abliteration.ai (the uncensored tier)",
      "provider_model": "abliterated-model",
      "name": "Abliterated Model",
      "kind": "chat",
      "price": {
        "in": 1,
        "out": 3,
        "cached": 0.1,
        "currency": "USD",
        "per": "1M tokens"
      },
      "price_source": "https://docs.abliteration.ai/pricing.md",
      "price_checked_at": "2026-11-06",
      "routed": false,
      "uncensored": true,
      "provider_access": "UNVERIFIED",
      "field_sources": {
        "context": "https://docs.abliteration.ai/pricing.md",
        "max_output": "https://docs.abliteration.ai/pricing.md"
      },
      "maker": null,
      "context": 262144,
      "max_output": 262134,
      "open_weights": null,
      "licence": null,
      "release_date": null,
      "knowledge_cutoff": null,
      "modalities": null
    },
    {
      "model": "abliteration/abliterated-model-large-flash",
      "provider": "abliteration",
      "provider_name": "Abliteration.ai (the uncensored tier)",
      "provider_model": "abliterated-model-large-flash",
      "name": "Abliterated Large Flash",
      "kind": "chat",
      "price": {
        "in": 1,
        "out": 2,
        "cached": 0.1,
        "currency": "USD",
        "per": "1M tokens"
      },
      "price_source": "https://docs.abliteration.ai/pricing.md",
      "price_checked_at": "2026-11-06",
      "routed": false,
      "uncensored": true,
      "provider_access": "UNVERIFIED",
      "field_sources": {
        "context": "https://docs.abliteration.ai/pricing.md",
        "max_output": "https://docs.abliteration.ai/pricing.md"
      },
      "maker": null,
      "context": 1048576,
      "max_output": 262144,
      "open_weights": null,
      "licence": null,
      "release_date": null,
      "knowledge_cutoff": null,
      "modalities": null
    }
  ],
  "next_cursor": "2"
}
Rejected: account
{
  "$schema": "exchange.market@1",
  "generated_at": "2026-11-09T00:00:00.000Z",
  "metadata": {
    "source": "https://models.dev/api.json",
    "checked_at": null,
    "stale": true
  },
  "total_models": 29,
  "total_offers": 38,
  "offers": [
    {
      "model": "abliteration/abliterated-model",
      "provider": "abliteration",
      "provider_name": "Abliteration.ai (the uncensored tier)",
      "provider_model": "abliterated-model",
      "name": "Abliterated Model",
      "kind": "chat",
      "price": {
        "in": 1,
        "out": 3,
        "cached": 0.1,
        "currency": "USD",
        "per": "1M tokens"
      },
      "price_source": "https://docs.abliteration.ai/pricing.md",
      "price_checked_at": "2026-11-06",
      "routed": false,
      "uncensored": true,
      "provider_access": "UNVERIFIED",
      "field_sources": {
        "context": "https://docs.abliteration.ai/pricing.md",
        "max_output": "https://docs.abliteration.ai/pricing.md"
      },
      "maker": null,
      "context": 262144,
      "max_output": 262134,
      "open_weights": null,
      "licence": null,
      "release_date": null,
      "knowledge_cutoff": null,
      "modalities": null,
      "account_id": "must-not-be-public"
    },
    {
      "model": "abliteration/abliterated-model-large-flash",
      "provider": "abliteration",
      "provider_name": "Abliteration.ai (the uncensored tier)",
      "provider_model": "abliterated-model-large-flash",
      "name": "Abliterated Large Flash",
      "kind": "chat",
      "price": {
        "in": 1,
        "out": 2,
        "cached": 0.1,
        "currency": "USD",
        "per": "1M tokens"
      },
      "price_source": "https://docs.abliteration.ai/pricing.md",
      "price_checked_at": "2026-11-06",
      "routed": false,
      "uncensored": true,
      "provider_access": "UNVERIFIED",
      "field_sources": {
        "context": "https://docs.abliteration.ai/pricing.md",
        "max_output": "https://docs.abliteration.ai/pricing.md"
      },
      "maker": null,
      "context": 1048576,
      "max_output": 262144,
      "open_weights": null,
      "licence": null,
      "release_date": null,
      "knowledge_cutoff": null,
      "modalities": null
    }
  ],
  "next_cursor": "2"
}
Rejected: price
{
  "$schema": "exchange.market@1",
  "generated_at": "2026-11-09T00:00:00.000Z",
  "metadata": {
    "source": "https://models.dev/api.json",
    "checked_at": null,
    "stale": true
  },
  "total_models": 29,
  "total_offers": 38,
  "offers": [
    {
      "model": "abliteration/abliterated-model",
      "provider": "abliteration",
      "provider_name": "Abliteration.ai (the uncensored tier)",
      "provider_model": "abliterated-model",
      "name": "Abliterated Model",
      "kind": "chat",
      "price": {
        "in": -1,
        "out": 3,
        "cached": 0.1,
        "currency": "USD",
        "per": "1M tokens"
      },
      "price_source": "https://docs.abliteration.ai/pricing.md",
      "price_checked_at": "2026-11-06",
      "routed": false,
      "uncensored": true,
      "provider_access": "UNVERIFIED",
      "field_sources": {
        "context": "https://docs.abliteration.ai/pricing.md",
        "max_output": "https://docs.abliteration.ai/pricing.md"
      },
      "maker": null,
      "context": 262144,
      "max_output": 262134,
      "open_weights": null,
      "licence": null,
      "release_date": null,
      "knowledge_cutoff": null,
      "modalities": null
    },
    {
      "model": "abliteration/abliterated-model-large-flash",
      "provider": "abliteration",
      "provider_name": "Abliteration.ai (the uncensored tier)",
      "provider_model": "abliterated-model-large-flash",
      "name": "Abliterated Large Flash",
      "kind": "chat",
      "price": {
        "in": 1,
        "out": 2,
        "cached": 0.1,
        "currency": "USD",
        "per": "1M tokens"
      },
      "price_source": "https://docs.abliteration.ai/pricing.md",
      "price_checked_at": "2026-11-06",
      "routed": false,
      "uncensored": true,
      "provider_access": "UNVERIFIED",
      "field_sources": {
        "context": "https://docs.abliteration.ai/pricing.md",
        "max_output": "https://docs.abliteration.ai/pricing.md"
      },
      "maker": null,
      "context": 1048576,
      "max_output": 262144,
      "open_weights": null,
      "licence": null,
      "release_date": null,
      "knowledge_cutoff": null,
      "modalities": null
    }
  ],
  "next_cursor": "2"
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('exchange.market@1', value);   // { valid, errors: [{ path, message }] }