Builder API

Let your agent keep
your profile current.

ShipStacked has a real API. Bearer token auth. Clean JSON. Your agent can update your profile, post your builds, and keep your Velocity Score high — without you lifting a finger.

Get your API key →Jump to quickstart

Quickstart

Three steps. Your agent is live in under 5 minutes.

01

Create your ShipStacked profile

Sign up at shipstacked.com/join — takes 5 minutes. This is the one thing your agent can't do for you, and that's intentional.

02

Generate an API key

Go to your dashboard → API Keys section → Create key. Name it after your agent. Copy it — you'll only see it once.

03

Brief your agent

Give your agent the key and the system prompt below. It handles the rest.

Endpoints

Base URL: https://shipstacked.com/api/v1
Authentication: Authorization: Bearer sk_ss_...

GET
/me

Fetch your full profile, skills, projects, velocity score, and verification status.

PATCH
/profile

Update profile fields and skills. Only send fields you want to change.

POST
/builds

Post a build to the Build Feed. Include outcome and url to count towards auto-verification.

GET
/builds

Fetch your 20 most recent build posts.

POST
/avatar

Upload a profile photo. Accepts base64 image or public image URL.

PATCH /profile — fields

All fields are optional. Only include what you want to update.

full_namestringYour full name
rolestringYour role title e.g. 'AI Automation Engineer'
biostringOne-line bio shown on your profile card
aboutstringLonger about section
locationstringCity, Country
availabilitystringfreelance | full-time | contract | part-time | open
primary_professionstringDeveloper | Designer | Consultant | Marketer | Founder | Other
day_ratestringUnder $200/day | $200-500/day | $500-1000/day | $1000+/day
timezonestringe.g. UTC+0 (GMT)
languagesstring[]Spoken languages e.g. ['English', 'Spanish']
github_urlstringFull URL to your GitHub profile
x_urlstringFull URL to your X/Twitter profile
linkedin_urlstringFull URL to your LinkedIn profile
website_urlstringYour personal site or portfolio
skillsobject[]Array of { category, name } — replaces all existing skills
projectsobject[]Array of { title, description, outcome, project_url } — replaces all existing projects
publishedbooleanSet to true to make your profile public

Valid skill categories:

claude_use_caselanguageframeworkai_toolllmdomain
# JavaScript / Node.js
const res = await fetch('https://shipstacked.com/api/v1/profile', {
  method: 'PATCH',
  headers: {
    'Authorization': 'Bearer sk_ss_your_key_here',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    role: 'AI Automation Engineer',
    bio: 'I build production-grade AI systems that eliminate manual work at scale.',
    location: 'London, UK',
    availability: 'freelance',
    primary_profession: 'Developer',
    day_rate: '$500-1000/day',
    skills: [
      { category: 'claude_use_case', name: 'Automation and workflows' },
      { category: 'claude_use_case', name: 'Agent systems' },
      { category: 'ai_tool', name: 'Claude Code' },
      { category: 'framework', name: 'n8n' }
    ]
  })
})

POST /builds — fields

titlestringrequiredWhat you built — keep it specific
problem_solvedstringWhat problem this solved
outcomestringThe measurable result. Required for auto-verification.
tools_usedstringe.g. Claude API, n8n, Supabase
time_takenstringe.g. 2 weekends, 4 days
urlstringLink to the live project. Required for auto-verification.

Auto-verification tip: Include both outcome and url in your build posts. These are required for ShipStacked to auto-verify your profile. Your agent should always include them.

# JavaScript / Node.js
const res = await fetch('https://shipstacked.com/api/v1/builds', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sk_ss_your_key_here',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    title: 'AI contract review tool for a law firm',
    problem_solved: 'Contract reviews were taking 4 hours each.',
    outcome: 'Review time cut from 4 hours to 20 minutes. Client is productising it.',
    tools_used: 'Claude API, n8n, Supabase',
    time_taken: '2 weekends',
    url: 'https://yourproject.com'
  })
})

GET /me — example response

# JavaScript / Node.js — recommended for agents
const res = await fetch('https://shipstacked.com/api/v1/me', {
  headers: { 'Authorization': 'Bearer sk_ss_your_key_here' }
})
const { profile } = await res.json()

# Terminal (must be single line — no line breaks)
curl https://shipstacked.com/api/v1/me -H "Authorization: Bearer sk_ss_your_key_here"
{
  "ok": true,
  "profile": {
    "username": "james-m",
    "full_name": "James M.",
    "role": "AI Automation Engineer",
    "verified": true,
    "published": true,
    "velocity_score": 74,
    "github_connected": false,
    "skills": [
      { "category": "claude_use_case", "name": "Automation and workflows" },
      { "category": "ai_tool", "name": "Claude Code" }
    ],
    "profile_url": "https://shipstacked.com/u/james-m"
  }
}

Claude system prompt template

Copy this prompt, paste in your API key, and give it to your Claude agent. It will keep your profile updated automatically every time you tell it about something you shipped.

You are my ShipStacked profile manager. Your job is to keep my builder profile 
current and post my builds automatically.

My API key: sk_ss_[YOUR_KEY]
Base URL: https://shipstacked.com/api/v1

When I tell you about something I shipped:
1. POST to /builds with the title, problem_solved, outcome, tools_used, time_taken, and url
2. If my skills or role have changed, PATCH /profile to update them
3. Confirm the post_url so I can share it

Always include outcome and url in build posts — they're required for verification.

Current profile: GET /me to check my current state before making updates.

Rate limits and limits

Requests per minute60 per API key
API keys per profile5 maximum
Build posts via APIUnlimited
Profile updatesUnlimited
Key visibilityShown once at generation — store it securely

Ready to automate?

Get your API key

Sign up as a builder, go to your dashboard, and generate a key.
Your agent does the rest.

Create free profileGo to dashboard →