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

# Sources

> Browse the directory and inspect currently executable operations.

Browsing is free. The directory covers verified listings; it does not imply
that every upstream endpoint has an accepted execution contract.

## List sources

```http theme={null}
GET /v2/sources
```

Requires <code>sources:read</code>.

| Query | Type | Meaning |
| - | - | - |
| <code>search</code> | String, at most 200 characters | Name, description, category, tags, sectors and capabilities |
| <code>category</code> | String | Exact returned category |
| <code>tag</code> | String | Exact returned tag |
| <code>sector</code> | String | Exact returned sector |
| <code>capability</code> | String | Sources advertising that capability; check execution availability separately |
| <code>offset</code> | Integer | Page start; continue with <code>next\_offset</code> |
| <code>limit</code> | Integer 1–50 | Page size, default 20 |

```bash theme={null}
curl -G https://gateway.apiosk.com/v2/sources \
  -H "Authorization: Bearer $APIOSK_KEY" \
  --data-urlencode "search=company registry"
```

The response has <code>sources</code>, <code>total</code> for this
filter, <code>catalog\_total</code> for the entire directory and
<code>next\_offset</code> for pagination. Counts are live and can change.
Each provider group is counted once. Pulse Network can contain many nested
services; <code>service\_count</code> is the full number and
<code>services</code> contains the matching services in this query.

For each row:

* <code>endpoint\_count</code> counts registered endpoints, including
  endpoints that cannot currently run.
* <code>capabilities</code> can include advertised capabilities.
* <code>executable\_capabilities</code> lists capabilities accepted by the
  current runtime.
* <code>available\_in\_v2</code> is true when at least one operation in the
  source group can run.
* <code>readiness</code> describes contract and evidence coverage. An
  unmeasured endpoint is not proof of reliable execution.

## Read one executable source

```http theme={null}
GET /v2/sources/{source_id}
```

Requires <code>sources:read</code>. Use a source's returned slug, for
example:

```bash theme={null}
curl https://gateway.apiosk.com/v2/sources/kvk-dutch-business-register \
  -H "Authorization: Bearer $APIOSK_KEY"
```

The response lists only currently executable <code>operations</code>.
Each operation includes its <code>id</code>, <code>source\_id</code>,
input fields and schemas, outputs, current buyer price and optional
variants. For a provider group, each operation names the member service
that actually runs it. Use that operation and its inputs in
[Call a source](/api/execute).

A directory entry with no accepted operation can return
<code>404 source\_not\_found</code> on this detail route. It remains
discoverable so you can see its published metadata; it cannot be bought
through the buyer API until a contract is accepted.

## Resolve a European capability to fitting sources

```http theme={null}
POST /v2/capabilities/resolve
```

Requires <code>sources:read</code>. This read-only route accepts one of
<code>eu.company.profile</code>, <code>eu.tenders.search</code> or
<code>eu.statistics.query</code>, an optional two-letter country, and
structured input using the fact-type names returned by source detail.
An optional <code>operation</code> narrows the response to one metric or
lookup operation within the capability.

```bash theme={null}
curl https://gateway.apiosk.com/v2/capabilities/resolve \
  -H "Authorization: Bearer $APIOSK_KEY" \
  -H "Content-Type: application/json" \
  -d '{"capability":"eu.company.profile","country":"NL","input":{"company.name":"Mollie B.V."}}'
```

The response returns primary and supplementary sources with only their
active, accepted operations. Each operation names its exact endpoint,
required and missing inputs, output fields, freshness interval, current
price, and <code>run\_url</code>. <code>ready</code> means the supplied
inputs fit that operation's schema; it is not evidence that the upstream
source has a record for the subject. <code>ready\_source\_count</code>
counts sources with at least one ready operation. No provider is called and
no balance is charged by resolution.

For Eurostat data, send a dataset code in
<code>eurostat.input.dataset</code> and a country. Apiosk fills the
<code>eurostat.input.geo</code> endpoint parameter from that country, including
Eurostat's <code>EL</code> and <code>UK</code> codes for Greece and the United
Kingdom. It does not choose a dataset or statistical measure on your behalf.

To let Apiosk choose source operations from the structured input, create one
priced plan:

```http theme={null}
POST /v2/capabilities/plan
```

This route requires <code>ask:create</code> and accepts the same body as
resolution. It returns the saved plan with one total ceiling and no purchase.
Review the exact steps, then call <code>POST /v2/asks/{id}/run</code> with
<code>ask:execute</code> and <code>max\_spend</code> to approve it once. The
ordinary worker executes the selected sources and returns saved, sourced
results. Capability plans and runs also return <code>normalized\_records</code>:
contract-extracted facts grouped by subject, with observed and expiry times.
Subjects with the same country-specific or globally unique identifier are
combined; identical facts retain all source references. Source documents
remain in <code>results</code> for inspection; subjects are never merged by
name alone. The API accepts an <code>Idempotency-Key</code> for safe plan
retries.

For a direct, single-source call, use
<code>POST /v2/sources/{source_id}/run</code> with the returned
<code>operation</code> and that operation's <code>input</code>. This uses the
same pricing, key spending limits, ledger and result metadata. It executes
immediately within the key's spending limits.

For CBS observation tables with no required parameters, specify the exact
<code>operation</code> when planning, such as
<code>statistics.cbs-company-counts</code>. The planner does not guess a
statistical metric from a country alone. General questions can use
<code>POST /v2/ask/plan</code> to get a model-built plan.

The tender group currently offers TenderNed public-contract browsing and
organisation-based TED matches. It does not expose general TED Search API
queries through Apiosk yet. EU Funding & Tenders provides funding calls,
not procurement notices, so it is outside <code>eu.tenders.search</code>.
Likewise PDOK location data is outside <code>eu.statistics.query</code>.

## Browse endpoints inside a source

The compact endpoint index is useful when a provider publishes many services:

```http theme={null}
GET /v2/sources/{source_id}/endpoints?search=filings&limit=40&offset=0
```

Requires <code>sources:read</code>. The response contains
<code>total</code>, <code>items</code> and
<code>next\_offset</code>. Each item names the service
<code>slug</code> and <code>listing</code>, then a compact endpoint
with its id, method, path, description, category, tags and use cases.
<code>endpoint.planner\_available</code> tells you whether that exact
endpoint has a runtime-accepted planner contract. A listed endpoint
without that flag cannot be quoted or executed through the buyer API.
Search and paginate rather than downloading every endpoint at once.

For Pulse Network, use <code>pulsenetwork</code> as the source id to
browse endpoints across its nested services.

## Check readiness without a key

<code>GET /v1/source-readiness</code> returns aggregate, public contract
coverage and recorded execution outcomes. It is a diagnostic snapshot,
not a live test of every endpoint or a guarantee about source data.


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