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

# Quickstart

> Get started with the Shipstar API in under 5 minutes

## Prerequisites

Before you begin, you'll need:

* A Shipstar account ([sign up here](https://app.shipstar.ai))
* An API key from your [Dashboard](https://app.shipstar.ai/dashboard)
* At least one GitHub repository connected

## Get Your API Key

<Steps>
  <Step title="Log in to Dashboard">
    Go to [app.shipstar.ai](https://app.shipstar.ai) and log in to your account.
  </Step>

  <Step title="Navigate to API Keys">
    Click on **API Keys** in the sidebar to access your API key management.
  </Step>

  <Step title="Create a New Key">
    Click **Create API Key**, give it a name, and copy your new API key.

    <Warning>
      Store your API key securely. You won't be able to see it again after creation.
    </Warning>
  </Step>
</Steps>

## Connect a GitHub Repository

Before generating content, install the Shipstar GitHub App and select repositories to track:

<Steps>
  <Step title="Install the GitHub App">
    In the dashboard, go to **Sources** and click **Install GitHub App**. GitHub asks which organization (or personal account) to install on and which repositories Shipstar may read — access is read-only (repository metadata and commits). Non-admins can request the install; an org admin approves it.
  </Step>

  <Step title="Select Repositories">
    Back in **Sources**, choose which of the installed repositories this project tracks. Shipstar analyzes commits from these repos when generating content.
  </Step>
</Steps>

<Note>
  Installed Shipstar from GitHub first? Sign in and use **Link existing installation** on the Sources page — or open the link on the post-install page — to attach it to your project. Existing connections made through the legacy GitHub OAuth flow keep working; Sources offers a one-click upgrade.
</Note>

## Generate Your First Content

### Generate a Changelog

Use the following request to generate a changelog from your recent commits:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.shipstar.ai/api/internal/sources/github/changelog" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{}'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.shipstar.ai/api/internal/sources/github/changelog', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({})
  });

  const data = await response.json();
  console.log(data);
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.shipstar.ai/api/internal/sources/github/changelog',
      headers={'Authorization': 'Bearer YOUR_API_KEY'},
      json={}
  )

  data = response.json()
  print(data)
  ```
</CodeGroup>

### Example Response

```json theme={null}
{
  "content_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "pending"
}
```

Content generation runs in the background. The status will transition from `pending` to `processing` to `completed`.

### Check Content Status

Poll for the result using the content ID:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://api.shipstar.ai/api/internal/sources/content/a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```javascript JavaScript theme={null}
  const result = await fetch(
    'https://api.shipstar.ai/api/internal/sources/content/a1b2c3d4-e5f6-7890-abcd-ef1234567890',
    {
      headers: {
        'Authorization': 'Bearer YOUR_API_KEY'
      }
    }
  );

  const content = await result.json();
  console.log(content);
  ```

  ```python Python theme={null}
  import requests

  result = requests.get(
      'https://api.shipstar.ai/api/internal/sources/content/a1b2c3d4-e5f6-7890-abcd-ef1234567890',
      headers={'Authorization': 'Bearer YOUR_API_KEY'}
  )

  content = result.json()
  print(content)
  ```
</CodeGroup>

### Customize the Date Range

By default, Shipstar analyzes the last 7 days of commits. You can specify a custom range:

```bash cURL theme={null}
curl -X POST "https://api.shipstar.ai/api/internal/sources/github/changelog" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "start_date": "2025-03-01T00:00:00Z",
    "end_date": "2025-03-31T23:59:59Z",
    "product_name": "My Product"
  }'
```

### Steer the Audience and Focus

Every generation endpoint also accepts an optional `guidelines` object — a technical-depth preset (`audience`) and free-text instructions that override your project's [content guidelines](/guides/content-guidelines) for this one run:

```bash cURL theme={null}
curl -X POST "https://api.shipstar.ai/api/internal/sources/github/changelog" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "guidelines": {
      "audience": "business",
      "instructions": "British spelling; do announce docs-site changes."
    }
  }'
```

`audience` is one of `technical`, `business`, or `mixed`; `instructions` is up to 2000 characters. Omit either field to inherit the project default.

## Publish Your Content

Once content is generated, publish it to get a public URL:

```bash cURL theme={null}
curl -X POST "https://api.shipstar.ai/api/internal/content/a1b2c3d4-e5f6-7890-abcd-ef1234567890/publish" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```json Response theme={null}
{
  "public_slug": "my-product-changelog-march-2025",
  "is_published": true,
  "public_url": "https://api.shipstar.ai/api/v1/changelog/my-product-changelog-march-2025"
}
```

Published content is accessible without authentication at the public URL and includes an RSS feed.

## Try Other Content Types

Replace the endpoint path to generate different types of content:

| Content Type | Endpoint |
| - | - |
| Daily Product Update | `POST /sources/github/daily-product-update` |
| Weekly Product Update | `POST /sources/github/weekly-product-update` |
| Blog Post | `POST /sources/github/blog-post` |
| LinkedIn Post | `POST /sources/github/linkedin-post` |
| Twitter Thread | `POST /sources/github/twitter-thread` |
| Feature Page | `POST /sources/github/feature-page` |
| KB Articles | `POST /sources/github/kb-articles` |
| Changelog | `POST /sources/github/changelog` |
| Release Notes Email | `POST /sources/github/release-notes-email` |

All endpoints accept the same request body with optional `start_date`, `end_date`, `product_name`, `guidelines` (`{ "audience", "instructions" }`), and `repos` (a list of tracked repository full names to restrict the commit source — omit to use every active tracked repo); blog posts additionally accept `idea` and `blog_options`.

## Next Steps

<CardGroup cols={2}>
  <Card title="How It Works" icon="gear" href="/how-it-works">
    Learn how Shipstar transforms commits into content
  </Card>

  <Card title="Authentication" icon="key" href="/guides/authentication">
    Deep dive into API authentication
  </Card>

  <Card title="Error Handling" icon="triangle-exclamation" href="/guides/error-handling">
    Learn how to handle API errors
  </Card>

  <Card title="API Reference" icon="terminal" href="/api-reference/overview">
    Explore the full API documentation
  </Card>
</CardGroup>


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