The ShipMate own-voice engine is available as a REST API. One Bearer token, and any app can generate authentic, on-voice content for any user. No style training on your end. We handle the voice engine.
Extract a style profile, call generate, get on-voice drafts. No prompting, no template wrangling.
Extract a style profile
POST writing samples to /api/style/extract. ShipMate learns vocabulary, tone, sentence patterns, and what to avoid. One call, done.
curl -X POST https://api.shipmate.so/api/style/extract \
-H "Authorization: Bearer sk-sm-..." \
-H "Content-Type: application/json" \
-d '{"samples": ["Just shipped OAuth with magic link fallback..."]}'Call /api/generate
Send a brief description of what you or your user shipped. Specify the target platform. The engine handles the rest.
curl -X POST https://api.shipmate.so/api/generate \
-H "Authorization: Bearer sk-sm-..." \
-H "Content-Type: application/json" \
-d '{"entry": "shipped OAuth with magic link fallback", "platforms": ["linkedin", "x_twitter"]}'Get on-voice drafts back
Receive platform-ready posts that sound like the person who wrote those samples. Review, approve, or publish.
{
"posts": [
{
"platform": "linkedin",
"content": "Just shipped OAuth with magic link fallback..."
},
{
"platform": "x_twitter",
"content": "OAuth is live. Magic links as fallback..."
}
]
}Log what you shipped. Get posts in your exact voice. One API key, no extra apps or tab switching.
Wire ShipMate into n8n, Zapier, or your own scripts. Trigger on a commit, get a draft in your voice.
Embed "write in your voice" into any social app, scheduler, CRM, or newsletter tool. One endpoint, any voice.
Many clients, many voices, one API. A separate style profile per client. Scale without ghostwriters.
Brand-voice consistency across every channel, every author, every market. Set it once, enforce it everywhere.
Included quota each month. Only pay for what goes over. Cancel any time.
Prices shown in EUR, detected from your browser locale (switch anytime with the toggle above). Metered overage billed at the end of each period. See the full API docs for quota details and rate-limit headers.
The CC (control-center) dashboard embeds ShipMate as a proxied service: one API key in env, one style profile per user, every generation call routed through a backend that shields the key from clients. Ship that pattern in any product.
Your backend holds a single ShipMate API key. Your end-users never see it. Each generation call passes their style profile inline.
Extract a voice profile from each user's writing samples once. Store it in your DB. Pass it inline to every generate call. Fully multi-tenant.
All requests flow through your own backend. The CC (control-center) reference implementation includes an SSRF guard that rejects off-origin path injection.
1. Backend proxy (TypeScript)
// Your backend proxy (Next.js example)
// Based on the CC/control-center shipmate-proxy pattern
export async function POST(req: Request) {
const session = await getSession(req);
if (!session) return new Response("Unauthorized", { status: 401 });
const upstream = await fetch(
`${process.env.SHIPMATE_API_URL}/api/generate`,
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SHIPMATE_API_KEY}`,
"Content-Type": "application/json",
},
body: req.body,
}
);
return new Response(upstream.body, {
status: upstream.status,
headers: { "Content-Type": "application/json" },
});
}2. Extract + generate per user (curl)
# Step 1: extract a style profile for a new user
curl -X POST https://shipmate.so/api/style/extract \
-H "Authorization: Bearer ${SHIPMATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"textSamples": [
"Shipped dark mode. Took 3 hours...",
"OAuth is live. Magic links as fallback..."
]
}'
# -> { "text": "Voice: direct and concise..." }
# Step 2: store the result keyed by YOUR user's ID
# in your own database
# Step 3: generate content for that user
curl -X POST https://shipmate.so/api/generate \
-H "Authorization: Bearer ${SHIPMATE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"activityData": {
"anchorText": "Shipped the analytics dashboard",
"anchorType": "commit"
},
"styleProfile": {
"styleDescriptionText": "Voice: direct and concise...",
"fewShotExamples": []
},
"targetPlatforms": ["linkedin", "x_twitter"]
}'Create a free account, generate an API key from your settings, and start integrating. The free tier includes 50 generations per month so you can validate the proxy pattern and multi-profile flow before committing to a plan.
Or go straight to /settings/api-keys if you already have an account.
Custom quota, dedicated support, white-label options, SLA. Tell us what you are building and we will scope a plan together.