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

# Company & App Profiles

> Read and write the structured context injected into every briefing, and preview the exact text the agent receives.

```
GET    /v1/cofounder/company
PATCH  /v1/cofounder/company
PATCH  /v1/cofounder/company/apps/:appId
POST   /v1/cofounder/company/confirm
POST   /v1/cofounder/company/extract
GET    /v1/cofounder/company/preview?appId=…
```

See [Company Knowledge Base](../concepts/knowledge-base) for the concepts.

## GET /company

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl "https://api.appeeky.com/v1/cofounder/company" -H "X-API-Key: $KEY"
```

```jsonc theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "data": {
    "company": {
      "companyName": "Appeeky",
      "oneLiner": "Mobile sales analytics for iOS developers",
      "website": "https://appeeky.com",
      "stage": "launched",
      "teamSize": 2,
      "businessModel": "subscription",
      "primaryMarkets": ["US", "TR"],
      "mission": null,
      "companyValues": [],
      "icp": "Indie iOS developers and small studios",
      "positioning": "Developer-grade insight without living in a browser",
      "differentiators": ["Native iOS app", "Paired web dashboard"],
      "brandVoice": "Direct, technical, no exclamation marks",
      "constraints": ["Never recommend removing the free tier"],
      "source": "user",
      "confirmedAt": "2026-07-26T21:14:00Z"
    },
    "appProfiles": [ /* one per app, same shape as PATCH below */ ],
    "isEmpty": false,
    "needsReview": false
  }
}
```

* **`isEmpty`** — nothing is filled in, so nothing is injected into runs.
* **`needsReview`** — an auto-drafted profile with actual content is still unconfirmed. A blank draft doesn't count, so this never puts a review banner over an empty form.
* **`confirmedAt: null`** — still a draft. It is *injected anyway*, flagged low-confidence, but its `constraints` / `doNotTouch` rules stay inactive until confirmed.

## PATCH /company

Send only the fields you're changing. An edit counts as confirmation — you just typed it.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X PATCH "https://api.appeeky.com/v1/cofounder/company" \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"stage":"scaling","constraints":["Never remove the free tier","No paywall before onboarding"]}'
```

| Field                                         | Type      | Notes                                                                                |
| --------------------------------------------- | --------- | ------------------------------------------------------------------------------------ |
| `companyName`                                 | string    | ≤ 200 chars                                                                          |
| `oneLiner`                                    | string    | ≤ 400 chars                                                                          |
| `website`                                     | string    | Also the crawl seed for auto-drafting                                                |
| `stage`                                       | enum      | `idea` · `pre_launch` · `launched` · `scaling`                                       |
| `teamSize`                                    | int       | Shapes how feasible a proposed action is                                             |
| `businessModel`                               | enum      | `subscription` · `iap` · `paid` · `ads` · `b2b` · `mixed`                            |
| `primaryMarkets`                              | string\[] | Country codes, max 20                                                                |
| `mission`, `icp`, `positioning`, `brandVoice` | string    | Prose                                                                                |
| `companyValues`, `differentiators`            | string\[] |                                                                                      |
| `constraints`                                 | string\[] | **Hard rules.** Rendered as blocking; the agent won't propose actions that break one |

Passing `null` clears a field. An array always replaces — send the full list.

## PATCH /company/apps/:appId

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X PATCH "https://api.appeeky.com/v1/cofounder/company/apps/6479581124" \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"doNotTouch":["app name","the free tier","MX pricing"]}'
```

| Field                            | Type      | Notes                                               |
| -------------------------------- | --------- | --------------------------------------------------- |
| `productOneLiner`                | string    |                                                     |
| `targetUser`                     | string    | May narrow the company ICP                          |
| `coreJobs`                       | string\[] | Jobs-to-be-done                                     |
| `monetization`, `pricingSummary` | string    |                                                     |
| `keyDifferentiators`             | string\[] |                                                     |
| `knownWeaknesses`                | string\[] | Stops the agent "discovering" what you already know |
| `roadmapFocus`                   | string    | This quarter's bet                                  |
| `doNotTouch`                     | string\[] | **Hard rules** for this app                         |

## POST /company/confirm

Accepts an auto-draft as-is, without editing it. This is what activates the hard rules.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST "https://api.appeeky.com/v1/cofounder/company/confirm" \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"appIds":["6479581124"]}'
```

Confirms the company profile plus every listed app profile. `{"confirmed": true}` on success.

## POST /company/extract

Derives profile fields from `business_context.md`. Explicit rather than automatic, because it both writes and queues.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST "https://api.appeeky.com/v1/cofounder/company/extract" \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"appId":"6479581124"}'
```

```jsonc theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "data": {
    "status": "ok",
    "filled":   [{ "field": "icp", "scope": "company" }],
    "proposed": [{ "field": "companyName", "scope": "company" }],
    "unchanged": 4,
    "lowConfidence": 1,
    "rewordsDropped": 2
  }
}
```

* **`filled`** — the field was empty, so the value was written straight in.
* **`proposed`** — the field disagreed, so it became a [knowledge patch](./knowledge-patches) for you to review.
* **`rewordsDropped`** — proposals that restated your value with less in it, thrown away rather than queued.
* **`status: "skipped"`** with a `reason` when there's no document or nothing usable in it.

## GET /company/preview

The exact text injected into that app's runs — profiles *and* pinned documents together, because that's what the agent actually receives.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl "https://api.appeeky.com/v1/cofounder/company/preview?appId=6479581124" -H "X-API-Key: $KEY"
```

```jsonc theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "data": {
    "appId": "6479581124",
    "rendered": "## Company\nAppeeky — Mobile sales analytics…",
    "estimatedTokens": 612,
    "profileTokens": 331,
    "libraryTokens": 281,
    "alwaysInjectPaths": ["business_context.md"],
    "isEmpty": false
  }
}
```

Useful for keeping always-on context under budget: total should stay ≤ 2,500 tokens or it starts displacing the store data the briefing is about.

## Related

* [Documents API](./documents) — `business_context.md` and the rest of the Library
* [Knowledge Patches API](./knowledge-patches) — the review queue
