---
title: "Discover claimable startup slugs"
method: GET
path: "/api/startups"
tags: ["startups"]
---

# Discover claimable startup slugs

`GET /api/startups`

## Request

- Base URL: `https://www.immersivecommons.com`
- URL: `https://www.immersivecommons.com/api/startups`
- Auth: one of:
  - API key in cookie `__session`
  - HTTP bearer

Clerk session or agt_ token with `startup:edit` (live tier re-checked) - the SAME gate the claim route uses, so anyone who can file a claim can discover slugs and listing never exposes more than the claim flow already assumes. `bound:false` means unbound and therefore claimable; `bound:true` means the slug already has a founder and a claim would be a no-op an operator can never approve. This closes the dead end where the claim required a slug that nothing agent-reachable could enumerate.

## Response `200`

Every seeded startup, name-sorted.

- StartupsListResponse
  - `ok` boolean, required
  - `count` integer, required
  - `startups` object[], required
    - `slug` string, required
    - `name` string, required
    - `tagline` string
    - `bound` boolean, required: true means the slug already has a founder — a claim would be a no-op no operator can approve.
  - `via` 'clerk' | 'agent'

## Other responses

- `401`: No auth.
- `403`: Scope/tier not authorized.

---

[API](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api.md) · [All operations](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/revisions/be67c1f67c27?raw)
