> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.defdex.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.defdex.io/_mcp/server.

# Programs

Programs describe published initiatives and research or acquisition programs.
Retrieve them with `GET /api/v1/datasets/programs`; read a returned item with
`GET /api/v1/datasets/programs/{record_id}`.

## Find a program

```sh
curl --fail-with-body --get \
  'https://app.defdex.io/api/v1/datasets/programs' \
  --header "Authorization: Bearer $DEFDEX_API_KEY" \
  --data-urlencode 'q=SBIR' \
  --data-urlencode 'limit=10'
```

Use exact filters for a known `id`, `slug`, `code`, `agency_id`, `parent_id`,
`kind`, `status` or another published field. `q` searches name and description;
it is not a code-prefix, fuzzy or ranked search. An exact code match may return
multiple programs; inspect the agency and identity before selecting one.

```javascript
import { DefDexClient } from '@defdex/sdk';
const api = new DefDexClient();
const programs = await api.list('programs', { q: 'SBIR', limit: 10 });
if (programs.data.length) {
  const programId = programs.data[0].attributes.id;
  const participants = await api.list('program-participants', {
    filters: { program_id: programId }, limit: 25
  });
  console.log(participants.data);
}
```

## Read related data

Use the returned `attributes.id` as `program_id` for these collections:

| Dataset                     | Published relationship or measure                           |
| --------------------------- | ----------------------------------------------------------- |
| `program-participants`      | Organization participants, roles, confidence and as-of date |
| `program-operators`         | Operators associated with a program                         |
| `program-systems`           | Systems associated with a program                           |
| `program-facilities`        | Associated facilities                                       |
| `program-obligations`       | Obligated USD by fiscal year                                |
| `program-obligation-totals` | Published obligation totals                                 |
| `program-award-memberships` | Exact award-key memberships                                 |
| `program-award-evidence`    | Supporting program/award evidence                           |
| `awards`                    | Published award rows with a direct `program_id`             |

The [catalog](/dataset-catalog) lists all fields. Relationship completeness varies:
an empty result is not proof that a program has no participants, funding or awards.
Read `program-obligation-method` for published methodology and keep evidence and
membership basis with any total. Do not add direct award rows, membership totals and
aggregate totals together: those can represent overlapping dollars.

Programs use organization UUIDs in `agency_id`, program UUIDs in `parent_id` and
stable record IDs for detail retrieval. There is no automatic relationship expansion
or server-side join endpoint. Traverse exact published keys in separate requests.