ShipIt Intent API

Let AI coding assistants automatically log your ships, track progress, and manage projects

Quick Start

1. Generate your API key

Visit your profile page and generate an API key.

2. Set environment variable

export SHIPIT_API_KEY=shipit_your_key_here

3. Add to your AI assistant config

For Claude Code, add to your CLAUDE.md:

# ShipIt Integration
When I mention shipping, releasing, or deploying code:
1. Fetch https://shipit.day/api/v1/intent to understand capabilities
2. Use my SHIPIT_API_KEY environment variable for authentication
3. Log releases/updates to ShipIt automatically

My ShipIt username: [your-username]

Try It Now

Test the API in 30 seconds

1. Discover all intents (no auth required)

curl https://shipit.day/api/v1/intent | jq

Generate your API key to see personalized examples

Sign In to Get Started

Intent Discovery

The Intent API is self-describing. AI agents can discover all available capabilities automatically:

GET https://shipit.day/api/v1/intent

No authentication required. Returns JSON schema with all available intents, trigger phrases, and examples.

Authentication

All API requests (except intent discovery) require authentication using your API key:

Header (Recommended)

X-Api-Key: shipit_your_key_here

Query Parameter (Alternative)

?api_key=shipit_your_key_here

Rate Limits

100 requests per minute

Per API key

Response headers:

  • X-RateLimit-Limit - Maximum requests per window
  • X-RateLimit-Remaining - Requests remaining
  • Retry-After - Seconds to wait (when rate limited)

Available Intents

Create Project

Create a new project to track

POST /api/v1/projects

Trigger phrases:

create project start tracking new launch
View example request
curl -X POST https://shipit.day/api/v1/projects \
  -H "X-Api-Key: shipit_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "project": {
      "name": "TaskFlow",
      "github_repo_url": "https://github.com/username/taskflow",
      "deadline": "2026-03-15",
      "description": "AI-powered task management",
      "launch_goals": [
        "Complete user authentication",
        "Build task creation UI",
        "Implement AI suggestions"
      ]
    }
  }'

List Projects

Get all your projects (owned + collaborated)

GET /api/v1/projects

Query parameters:

  • status - Filter by: active, launched, abandoned, failed
  • page - Page number (default: 1)
  • per_page - Items per page (default: 20, max: 100)

Log Journal Entry

Create a build log / progress update

POST /api/v1/projects/:slug/journal_entries

Trigger phrases:

log update ship update milestone achieved

Visibility Options:

private_entry Only you can see this (default)
team_only Your team members can see this
public_entry Everyone can see this

Entry Types:

regular Standard journal entry (respects visibility)
milestone Major achievement (always public, overrides visibility)
View examples

Private Entry (Just Me)

curl -X POST https://shipit.day/api/v1/projects/yourproject/journal_entries \
  -H "X-Api-Key: shipit_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "journal_entry": {
      "title": "Private development notes",
      "content": "Working on refactoring. Still debugging.",
      "visibility": "private_entry",
      "entry_type": "regular"
    }
  }'

Team Entry (My Team)

curl -X POST https://shipit.day/api/v1/projects/yourproject/journal_entries \
  -H "X-Api-Key: shipit_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "journal_entry": {
      "title": "Sprint planning update",
      "content": "Team sync: focusing on user onboarding next week.",
      "visibility": "team_only",
      "entry_type": "regular"
    }
  }'

Public Entry (Everyone)

curl -X POST https://shipit.day/api/v1/projects/yourproject/journal_entries \
  -H "X-Api-Key: shipit_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "journal_entry": {
      "title": "Public update",
      "content": "Making great progress on the new features!",
      "visibility": "public_entry",
      "entry_type": "regular"
    }
  }'

Milestone (Always Public)

curl -X POST https://shipit.day/api/v1/projects/yourproject/journal_entries \
  -H "X-Api-Key: shipit_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "journal_entry": {
      "title": "Version 1.0 Released!",
      "content": "Major milestone: First production release is live!",
      "entry_type": "milestone"
    }
  }'
# Note: Milestones are ALWAYS public, even if you set visibility to private_entry

Mark Shipped

Mark project as successfully launched

PATCH /api/v1/projects/:slug/ship

Trigger phrases:

mark as shipped we shipped launch complete

Abandon Project

Send project to graveyard

PATCH /api/v1/projects/:slug/abandon

Resurrect Project

Restore project from graveyard

PATCH /api/v1/projects/:slug/resurrect

Update Project

Modify project details (limited fields)

PATCH /api/v1/projects/:slug

Authorization: Owner only

Allowed fields:

  • description - Project description
  • producthunt_url - Product Hunt URL

Note: name, deadline, and github_repo_url cannot be changed after creation

View example
curl -X PATCH https://shipit.day/api/v1/projects/taskflow \
  -H "X-Api-Key: shipit_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "project": {
      "description": "Updated description",
      "producthunt_url": "https://producthunt.com/posts/myapp"
    }
  }'

Complete Goal

Mark a launch goal as completed

PATCH /api/v1/projects/:slug/launch_goals/:goal_id/complete

Authorization: Team members (owner + collaborators)

View example
curl -X PATCH https://shipit.day/api/v1/projects/taskflow/launch_goals/uuid-here/complete \
  -H "X-Api-Key: shipit_your_key"

Uncomplete Goal

Mark a goal as not completed

PATCH /api/v1/projects/:slug/launch_goals/:goal_id/uncomplete

Authorization: Team members (owner + collaborators)

Get Project Stats

Get public statistics for a project

GET /api/v1/projects/:slug/stats

✓ Public (no auth required)

View example
curl https://shipit.day/api/v1/projects/taskflow/stats | jq

Get Project Activity

Get activity feed (journal entries)

GET /api/v1/projects/:slug/activity

Query parameters:

  • page - Page number (default: 1)
  • per_page - Items per page (default: 20, max: 50)

Note: Respects visibility rules (public, team, private)

Delete Project

Permanently delete a project

DELETE /api/v1/projects/:slug

Authorization: Owner only

Requires confirmation: confirm=delete

View example
curl -X DELETE https://shipit.day/api/v1/projects/taskflow?confirm=delete \
  -H "X-Api-Key: shipit_your_key"

Update Journal Entry

Update a journal entry

PATCH /api/v1/projects/:slug/journal_entries/:id

Authorization: Author only

Allowed fields:

  • title - Entry title
  • content - Entry content
  • visibility - private_entry, team_only, public_entry

Note: Milestone entries remain public regardless of visibility parameter

Delete Journal Entry

Delete a journal entry

DELETE /api/v1/projects/:slug/journal_entries/:id

Authorization: Author only

View example
curl -X DELETE https://shipit.day/api/v1/projects/taskflow/journal_entries/123 \
  -H "X-Api-Key: shipit_your_key"

Invite Collaborator

Create an invite link for a team member

POST /api/v1/projects/:slug/collaborators/invite

Authorization: Owner only

Team limit: Maximum 4 collaborators (plus owner = 5 total)

View example
curl -X POST https://shipit.day/api/v1/projects/taskflow/collaborators/invite \
  -H "X-Api-Key: shipit_your_key"

Get User Profile

Get current user's profile and stats

GET /api/v1/user/me

Returns your profile, API usage stats, and project statistics

View example
curl -H "X-Api-Key: shipit_your_key" \
  https://shipit.day/api/v1/user/me | jq

Integration Examples

Claude Code

Add to your project's CLAUDE.md:

# ShipIt Integration
Automatically track my progress on ShipIt:
- When I ship features, log them to ShipIt
- Use SHIPIT_API_KEY environment variable
- My username: [your-username]

User Workflow Example

Developer: "I just shipped the authentication feature!"

Claude Code:

  1. Fetches /api/v1/intent
  2. Matches "shipped" → log_journal_entry intent
  3. Calls API to create journal entry
  4. Responds: "Logged to ShipIt! https://shipit.day/projects/your-project"

Error Handling

All errors return JSON with an error field:

401 Unauthorized

Missing or invalid API key

403 Forbidden

You don't have permission for this action

404 Not Found

Resource doesn't exist

422 Unprocessable Entity

Validation error (includes errors field)

429 Too Many Requests

Rate limit exceeded (check Retry-After header)