> ## Documentation Index
> Fetch the complete documentation index at: https://docs.datavendor.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Buyer API

> Read the catalog, your purchases and bids, and the opportunities your team posted over HTTP.

export const Endpoint = ({method, path, note}) => <span className="api-sig">
    <span className="api-method-col">
      <span className={`api-method api-${method.toLowerCase()}`}>{method}</span>
    </span>
    <span className="api-path">
      {path.split(/(\{[^}]+\})/).map((part, i) => part.startsWith("{") ? <span className="api-param" key={i}>
            {part}
          </span> : part)}
    </span>
    {note && <span className="api-note">{note}</span>}
  </span>;

The **buyer API** is the HTTP surface for agents and scripts working on a buyer team: browse the
published catalog, inspect quality evidence and taskset previews, and read your team's purchases,
bids, opportunities, wallet, and notifications. Buying, bidding, and paying stay in the web app.

Base URL `https://api.datavendor.ai`, every route under `/v2`, authenticated with a team API key.
Keys, conventions, and errors are shared with the vendor API and described on
[Using the API](/overview/api). The
[OpenAPI document](https://api.datavendor.ai/buyer/openapi.json) behind this page is served with
an [interactive reference](https://api.datavendor.ai/buyer/docs). A first call, returning the
published catalog:

```bash theme={"dark"}
curl https://api.datavendor.ai/v2/listings/browse \
  -H "Authorization: Bearer $HUD_API_KEY"
```

<div className="page-nav">
  **Orientation** [Objects](#objects) · [Using the API](/overview/api)

  **Endpoint reference** [Catalog](#catalog) · [Buying](#buying) · [Account](#account)
</div>

## Objects

| Object | What it is |
| - | - |
| **Listing** | A vendor's offer of assets with pricing and delivery terms. Published listings form the catalog. |
| **Purchase** | A transaction on a listing: full, sample, or accepted-bid checkout. |
| **Bid** | Your own-price offer on a listing. The API calls it an offer. |
| **Opportunity** | A listing request your team posted. Historical project opportunities and vendor bids on them have separate read-only routes. |
| **Wallet** | Your team's credits balance. |

The same reads are available as [MCP tools](/buy/api/mcp) for coding agents.

<div className="section-eyebrow">Endpoint reference</div>

## Catalog

Buyer-facing reads over published listings from every team. Each listing carries the vendor
organization's `team_name`; bids and purchases never name the buyer to the vendor.

### Browse

Browse is filtered and sorted server-side. The first page carries tab counts and filter facets;
follow `next_cursor` for the rest. Tag and asset type values come from the
[taxonomy](#taxonomy) endpoints. Language, file extension, robotics format, and capability values
come from the first page's `facets`, which count every published listing (or every search match
when `query` is set) regardless of the other filters. Price, sample price, price per task, and scale
filters are `min_`/`max_` pairs (for example `min_price` and `max_price`); send either bound or
both, and both are inclusive. A sample price bound only matches listings that offer a sample.
Asset count pairs bound how many assets of one type a listing includes: `min_codebases`/`max_codebases`,
`min_tasksets`/`max_tasksets` (HUD tasksets and Harbor bundles together),
`min_environments`/`max_environments`, `min_robotics_datasets`/`max_robotics_datasets`, and
`min_raw_data`/`max_raw_data`. A listing without that type counts zero.
`rare_languages_only=true` keeps listings whose codebases are at most 40% JavaScript, TypeScript,
and Python combined, by language bytes; listings without a language byte breakdown never match.

<div className="api-endpoints">
  <AccordionGroup>
    <Accordion title={<Endpoint method="GET" path="/v2/listings/browse" note="Search and filter the published catalog." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `query` | query | `string?` | | |
      | `tags` | query | `string[]?` | | |
      | `tag_slugs` | query | `string[]?` | | |
      | `asset_types` | query | `string[]?` | | |
      | `owned` | query | `boolean` | | Defaults to `False`. |
      | `verified_only` | query | `boolean` | | When true, only DV quality certified listings. Defaults to `False`. |
      | `min_price` | query | `number?` | | Buy-now price floor. |
      | `max_price` | query | `number?` | | Buy-now price ceiling. |
      | `has_active_bids` | query | `boolean` | | Only listings with at least one submitted bid. Defaults to `False`. |
      | `sample_available` | query | `boolean?` | | True: only listings offering a sample; False: only listings without; omit: any. |
      | `min_sample_price` | query | `number?` | | Sample price floor (implies sample available). |
      | `max_sample_price` | query | `number?` | | Sample price ceiling (implies sample available). |
      | `min_vendor_tier` | query | `integer?` | | |
      | `vendor_tiers` | query | `integer[]?` | | Exact seller vendor tiers. |
      | `min_tasks` | query | `integer?` | | Minimum HUD taskset plus Harbor bundle task count. |
      | `max_tasks` | query | `integer?` | | Maximum HUD taskset plus Harbor bundle task count. |
      | `min_price_per_task` | query | `number?` | | Floor on buy-now price divided by task count; listings without tasks never match. |
      | `max_price_per_task` | query | `number?` | | Ceiling on buy-now price divided by task count; listings without tasks never match. |
      | `min_loc` | query | `integer?` | | |
      | `max_loc` | query | `integer?` | | |
      | `min_zip_files` | query | `integer?` | | |
      | `max_zip_files` | query | `integer?` | | |
      | `min_zip_size_gb` | query | `number?` | | |
      | `max_zip_size_gb` | query | `number?` | | |
      | `min_codebases` | query | `integer?` | | Minimum attached codebases. |
      | `max_codebases` | query | `integer?` | | Maximum attached codebases. |
      | `min_tasksets` | query | `integer?` | | Minimum attached HUD tasksets plus Harbor bundles. |
      | `max_tasksets` | query | `integer?` | | Maximum attached HUD tasksets plus Harbor bundles. |
      | `min_environments` | query | `integer?` | | Minimum attached environments. |
      | `max_environments` | query | `integer?` | | Maximum attached environments. |
      | `min_robotics_datasets` | query | `integer?` | | Minimum attached robotics datasets. |
      | `max_robotics_datasets` | query | `integer?` | | Maximum attached robotics datasets. |
      | `min_raw_data` | query | `integer?` | | Minimum attached Raw data zips. |
      | `max_raw_data` | query | `integer?` | | Maximum attached Raw data zips. |
      | `languages` | query | `string[]?` | | Codebase languages. |
      | `rare_languages_only` | query | `boolean` | | Only listings whose codebases are at most 40% JavaScript, TypeScript, and Python combined, by language bytes; listings without a language byte breakdown never match. Defaults to `False`. |
      | `file_extensions` | query | `string[]?` | | Raw data file extensions, lowercase without the dot. |
      | `robotics_formats` | query | `string[]?` | | Declared robotics dataset formats. |
      | `capabilities` | query | `string[]?` | | Environment capabilities. |
      | `sort` | query | `recommended \| recent \| price_low \| price_high` | | recommended prefers DV quality certified, then recency; with no filters it leads with the admin-featured listings in their curated order. Defaults to `recommended`. |
      | `limit` | query | `integer` | | Defaults to `24`. |
      | `cursor` | query | `string?` | | Keyset position from the previous page's next\_cursor; omit for the first page (which also carries counts and facets). |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/listings/browse \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "items": [
          {
            "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "title": "string",
            "review_status": "string",
            "catalog_status": "string",
            "created_at": "2026-07-26T17:04:11Z",
            "archived_at": "2026-07-26T17:04:11Z",
            "asset_types": [
              "string"
            ],
            "assets": [],
            "carries_retired_sku": false,
            "catalog_scale": {
              "asset_counts": {},
              "languages": [],
              "loc": 0,
              "task_count": 0,
              "zip_file_count": 0,
              "zip_size_bytes": 0
            },
            "deprecation": {
              "types": [],
              "retires_at": "2026-07-26T17:04:11Z"
            },
            "domain_tags": [
              "string"
            ]
          }
        ],
        "limit": 0,
        "counts": {
          "all": 0,
          "owned": 0
        },
        "facets": {
          "tags": {},
          "asset_types": {},
          "capabilities": {},
          "file_extensions": {},
          "languages": {},
          "lifecycle_stages": {},
          "robotics_formats": {},
          "tag_slugs": {}
        },
        "locked": false,
        "next_cursor": "string"
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/listings/browse/access" note="Whether your team can browse, and progress toward the vendor browse gate." />}>
      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/listings/browse/access \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "published_count": 0,
        "required_count": 0,
        "unlocked": false
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/listings/browse/by-ids" note="Resolve specific published listings; missing ids are no longer published." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `ids` | query | `string[]?` | | |
      | `sort` | query | `recommended \| recent \| price_low \| price_high` | | Defaults to `recent`. |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/listings/browse/by-ids \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "listings": [
          {
            "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "title": "string",
            "review_status": "string",
            "catalog_status": "string",
            "created_at": "2026-07-26T17:04:11Z",
            "archived_at": "2026-07-26T17:04:11Z",
            "asset_types": [
              "string"
            ],
            "assets": [],
            "carries_retired_sku": false,
            "catalog_scale": {
              "asset_counts": {},
              "languages": [],
              "loc": 0,
              "task_count": 0,
              "zip_file_count": 0,
              "zip_size_bytes": 0
            },
            "deprecation": {
              "types": [],
              "retires_at": "2026-07-26T17:04:11Z"
            },
            "domain_tags": [
              "string"
            ]
          }
        ]
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/listings/browse/{listing_id}" note="The buyer-facing record: pricing, inventory, delivery, terms." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `listing_id` | path | `uuid` | yes | |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/listings/browse/<listing_id> \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "title": "string",
        "review_status": "string",
        "catalog_status": "string",
        "created_at": "2026-07-26T17:04:11Z",
        "archived_at": "2026-07-26T17:04:11Z",
        "asset_types": [
          "string"
        ],
        "assets": [],
        "available_from": "string",
        "bundle_download_url": "string",
        "bundle_manifest": {},
        "bundle_url": "string"
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/listings/browse/{listing_id}/quality" note="The evidence behind the DV quality badge, buyer-redacted." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `listing_id` | path | `uuid` | yes | |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/listings/browse/<listing_id>/quality \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "certified": false,
        "certified_at": "2026-07-26T17:04:11Z",
        "checks": [],
        "environment_checks_passed": 0,
        "environment_checks_total": 0
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/listings/browse/{listing_id}/tasksets/{taskset_id}" note="Preview one of a listing's tasksets." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `listing_id` | path | `uuid` | yes | |
      | `taskset_id` | path | `uuid` | yes | |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/listings/browse/<listing_id>/tasksets/<taskset_id> \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "name": "string",
        "created_at": "2026-07-26T17:04:11Z",
        "column_order": [
          "string"
        ],
        "columns": {}
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/listings/browse/{listing_id}/tasksets/{taskset_id}/tasks" note="First-page task preview for a listing's taskset." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `listing_id` | path | `uuid` | yes | |
      | `taskset_id` | path | `uuid` | yes | |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/listings/browse/<listing_id>/tasksets/<taskset_id>/tasks \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "tasks": [
          {
            "task": {
              "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "taskset_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "name": "string",
              "created_at": "2026-07-26T17:04:11Z",
              "activity_log": [],
              "assignee_user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "binarized": false,
              "column_values": {},
              "description": "string",
              "external_id": "string",
              "latest_version_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "tags": []
            },
            "version": {
              "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "task_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "version": 0,
              "created_at": "2026-07-26T17:04:11Z",
              "agent_config": {},
              "brief": {},
              "build_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "current_state": "draft",
              "environment": {},
              "internally_reviewed_at": "2026-07-26T17:04:11Z",
              "internally_reviewed_by": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "lifecycle_stage": "string"
            }
          }
        ],
        "task_stats": [
          {
            "task_version_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "traces": [
              {}
            ],
            "last_run_build_version": 0,
            "latest_env_build_version": 0
          }
        ],
        "derived_column_values": {}
      }
      ```
    </Accordion>
  </AccordionGroup>
</div>

### Taxonomy

The vocabularies vendors classify with and buyers filter by. Pass the returned values into browse
filters; an unknown value matches nothing rather than erroring.

<div className="api-endpoints">
  <AccordionGroup>
    <Accordion title={<Endpoint method="GET" path="/v2/domains" note="The marketplace domain taxonomy." />}>
      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/domains \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "domains": [
          {
            "slug": "string",
            "label": "string"
          }
        ]
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/inventory-tags" note="Tags vendors may apply and buyers may filter by." />}>
      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/inventory-tags \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "inventory_tags": [
          {
            "slug": "string",
            "label": "string",
            "description": "string",
            "category": "string"
          }
        ]
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/content-tags" note="Content tags a vendor may declare on an Others asset." />}>
      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/content-tags \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "content_tags": [
          {
            "slug": "string",
            "label": "string"
          }
        ]
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/asset-types" note="Enabled asset types a vendor may compose from." />}>
      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/asset-types \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "asset_types": [
          {
            "slug": "string",
            "label": "string",
            "is_enabled": false,
            "supports_proposals": false,
            "deprecation": {
              "deprecated_at": "2026-07-26T17:04:11Z",
              "retires_at": "2026-07-26T17:04:11Z",
              "retired": false,
              "accepts_new_listings": false,
              "message": "string"
            }
          }
        ],
        "deprecated_asset_types": [
          {
            "slug": "string",
            "label": "string",
            "is_enabled": false,
            "deprecation": {
              "deprecated_at": "2026-07-26T17:04:11Z",
              "retires_at": "2026-07-26T17:04:11Z",
              "retired": false,
              "accepts_new_listings": false,
              "message": "string"
            },
            "listing_kinds": [
              "string"
            ]
          }
        ]
      }
      ```
    </Accordion>
  </AccordionGroup>
</div>

## Buying

The key-holding team's own buyer history. Purchasing, bidding, and accepting offers stay in the
web app.

### Purchases and bids

<div className="api-endpoints">
  <AccordionGroup>
    <Accordion title={<Endpoint method="GET" path="/v2/listings/browse/purchases" note="Your team's completed listing purchases." />}>
      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/listings/browse/purchases \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "purchases": [
          {
            "purchase": {
              "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "listing_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "status": "string",
              "purchase_kind": "string",
              "asset_scope": {},
              "price": 0.0,
              "buyer_fee": 0.0,
              "total": 0.0,
              "currency": "string",
              "created_at": "2026-07-26T17:04:11Z",
              "agreement_document_id": "string",
              "agreement_signed_at": "2026-07-26T17:04:11Z"
            },
            "listing": {
              "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "title": "string",
              "review_status": "string",
              "catalog_status": "string",
              "created_at": "2026-07-26T17:04:11Z",
              "archived_at": "2026-07-26T17:04:11Z",
              "asset_types": [],
              "assets": [],
              "carries_retired_sku": false,
              "catalog_scale": {},
              "deprecation": {},
              "domain_tags": []
            },
            "listing_detail_available": false
          }
        ]
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/listings/browse/offers" note="Your team's bids across all listings." />}>
      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/listings/browse/offers \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "offers": [
          {
            "offer": {
              "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "listing_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "status": "submitted",
              "amount": 0.0,
              "currency": "string",
              "created_at": "2026-07-26T17:04:11Z",
              "updated_at": "2026-07-26T17:04:11Z",
              "decided_at": "2026-07-26T17:04:11Z"
            },
            "listing": {
              "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "title": "string",
              "review_status": "string",
              "catalog_status": "string",
              "created_at": "2026-07-26T17:04:11Z",
              "archived_at": "2026-07-26T17:04:11Z",
              "asset_types": [],
              "assets": [],
              "carries_retired_sku": false,
              "catalog_scale": {},
              "deprecation": {},
              "domain_tags": []
            },
            "listing_detail_available": false
          }
        ]
      }
      ```
    </Accordion>
  </AccordionGroup>
</div>

### Your opportunities

Listing requests your team posted, plus read-only project opportunity and bid history.

<div className="api-endpoints">
  <AccordionGroup>
    <Accordion title={<Endpoint method="GET" path="/v2/buyer/opportunities" note="Listing requests your team owns." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `status` | query | `string?` | | |
      | `offset` | query | `integer` | | Defaults to `0`. |
      | `limit` | query | `integer` | | Defaults to `50`. |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/buyer/opportunities \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "items": [
          {
            "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "title": "string",
            "status": "string",
            "owner_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "created_at": "2026-07-26T17:04:11Z",
            "updated_at": "2026-07-26T17:04:11Z",
            "visibility_mode": "string",
            "accepted_asset_types": [
              "string"
            ],
            "closed_at": "2026-07-26T17:04:11Z",
            "deadline": "2026-07-26T17:04:11Z",
            "description": "string",
            "excluded_team_ids": []
          }
        ],
        "total": 0,
        "limit": 0,
        "offset": 0
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/buyer/opportunities/{opportunity_id}" note="One opportunity your team owns." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `opportunity_id` | path | `uuid` | yes | |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/buyer/opportunities/<opportunity_id> \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "title": "string",
        "status": "string",
        "owner_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "created_at": "2026-07-26T17:04:11Z",
        "updated_at": "2026-07-26T17:04:11Z",
        "visibility_mode": "string",
        "accepted_asset_types": [
          "string"
        ],
        "closed_at": "2026-07-26T17:04:11Z",
        "deadline": "2026-07-26T17:04:11Z",
        "description": "string",
        "excluded_team_ids": []
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/buyer/project-opportunities" note="Your team's historical project opportunities." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `status` | query | `string?` | | |
      | `offset` | query | `integer` | | Defaults to `0`. |
      | `limit` | query | `integer` | | Defaults to `50`. |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/buyer/project-opportunities \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "items": [
          {
            "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "title": "string",
            "status": "string",
            "owner_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "created_at": "2026-07-26T17:04:11Z",
            "updated_at": "2026-07-26T17:04:11Z",
            "visibility_mode": "string",
            "accepted_asset_types": [
              "string"
            ],
            "closed_at": "2026-07-26T17:04:11Z",
            "deadline": "2026-07-26T17:04:11Z",
            "description": "string",
            "evaluation_date": "2026-07-26T17:04:11Z"
          }
        ],
        "total": 0,
        "limit": 0,
        "offset": 0
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/buyer/project-opportunities/{opportunity_id}" note="One historical project opportunity your team owns." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `opportunity_id` | path | `uuid` | yes | |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/buyer/project-opportunities/<opportunity_id> \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "title": "string",
        "status": "string",
        "owner_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "created_at": "2026-07-26T17:04:11Z",
        "updated_at": "2026-07-26T17:04:11Z",
        "visibility_mode": "string",
        "accepted_asset_types": [
          "string"
        ],
        "closed_at": "2026-07-26T17:04:11Z",
        "deadline": "2026-07-26T17:04:11Z",
        "description": "string",
        "evaluation_date": "2026-07-26T17:04:11Z"
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/buyer/project-opportunities/{opportunity_id}/bids" note="Vendor bid history on one of your project opportunities." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `opportunity_id` | path | `uuid` | yes | |
      | `offset` | query | `integer` | | Defaults to `0`. |
      | `limit` | query | `integer` | | Defaults to `50`. |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/buyer/project-opportunities/<opportunity_id>/bids \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "items": [
          {
            "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "opportunity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "team_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "num_tasks": 0,
            "status": "string",
            "created_at": "2026-07-26T17:04:11Z",
            "updated_at": "2026-07-26T17:04:11Z",
            "activity": {
              "hud_events": [],
              "vendor_events": []
            },
            "attachments": [],
            "completed_at": "2026-07-26T17:04:11Z",
            "delivery_taskset_ids": [],
            "delivery_taskset_names": {}
          }
        ],
        "total": 0,
        "limit": 0,
        "offset": 0
      }
      ```
    </Accordion>
  </AccordionGroup>
</div>

## Account

<div className="api-endpoints">
  <AccordionGroup>
    <Accordion title={<Endpoint method="GET" path="/v2/wallet" note="Your team's credits balance." />}>
      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/wallet \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "credits_balance": "string",
        "earnings": {
          "total": "string",
          "pending": "string",
          "available": "string"
        },
        "currency": "usd"
      }
      ```
    </Accordion>

    <Accordion title={<Endpoint method="GET" path="/v2/vendor/notifications" note="Your team's notification feed with unread count." />}>
      | Parameter | In | Type | Required | Description |
      | - | - | - | - | - |
      | `limit` | query | `integer` | | Defaults to `50`. |

      ```bash Request theme={"dark"}
      curl https://api.datavendor.ai/v2/vendor/notifications \
        -H "Authorization: Bearer $HUD_API_KEY"
      ```

      ```json Response 200 theme={"dark"}
      {
        "notifications": [
          {
            "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "team_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "type": "opportunity_published",
            "title": "string",
            "message": "string",
            "read": false,
            "created_at": "2026-07-26T17:04:11Z",
            "link": "string",
            "opportunity_bid_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "opportunity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "project_opportunity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "task_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          }
        ],
        "unread_count": 0
      }
      ```
    </Accordion>
  </AccordionGroup>
</div>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.