Official TypeScript / Node.js SDK for the OwlStack API. Schedule and publish to 31 social platforms from your code.
npm install @owlstackapp/sdkRequires Node 18 or newer. Ships ESM and CommonJS builds with TypeScript types.
0.x release. The public API is still settling and minor versions may contain breaking changes. Pin an exact version if that matters to you.
import { OwlStack } from '@owlstackapp/sdk';
const owl = new OwlStack({ apiKey: process.env.OWLSTACK_API_KEY! });
// List your accounts
const accounts = await owl.accounts.list({ workspaceId: '9b2f6c1e-…' });
// Create a post, then publish it immediately
const post = await owl.posts.create({
workspaceId: '9b2f6c1e-…',
content: [{ text: 'Hello from the SDK' }],
accounts: accounts.map((a) => a.id),
});
await owl.posts.publish(post.id);
// Schedule for later
await owl.posts.create({
workspaceId: '9b2f6c1e-…',
status: 'scheduled',
scheduleAt: '2026-06-01T10:00:00Z',
content: [{ text: 'Scheduled with the SDK 🦉' }],
accounts: [accounts[0].id],
});// Caption assist
const { caption, credits } = await owl.ai.generateCaption({
currentCaption: 'shipping a new feature',
platforms: ['twitter', 'linkedin'],
});
// Rewrite for each platform
const rewrites = await owl.ai.rewrite({
content: 'Long article-style draft...',
platforms: ['twitter', 'linkedin', 'bluesky'],
});
// Blog → social fan-out
const repurposed = await owl.ai.repurposeUrl({
url: 'https://example.com/blog/post',
platforms: ['twitter', 'linkedin', 'bluesky', 'threads'],
});
// Check your balance
const balance = await owl.ai.credits();
console.log(`${balance.creditsRemaining} of ${balance.creditsTotal} credits left`);new OwlStack({
apiKey: process.env.OWLSTACK_API_KEY!, // required
baseUrl: 'https://api.owlstack.app', // optional, override for self-hosted
fetch: customFetch, // optional, inject your fetch impl
});| Env var | Used for |
|---|---|
OWLSTACK_API_KEY |
API key (you pass it explicitly to new OwlStack) |
import { OwlStack, OwlStackError } from '@owlstackapp/sdk';
try {
await owl.posts.publish('9b2f6c1e-…');
} catch (err) {
if (err instanceof OwlStackError) {
console.error(`API ${err.status}${err.code ? ` (${err.code})` : ''}: ${err.message}`);
} else {
throw err;
}
}| Namespace | Methods |
|---|---|
posts |
list, get, create, update, delete, publish, cancel, retry, preflight, deliveries |
accounts |
list, get, health |
workspaces |
list, get |
labels |
list |
ai |
credits, generateCaption, rewrite, repurposeUrl |
Issues and pull requests are welcome at owlstacks/owlstack-js.
npm install
npm run lint # tsc --noEmit
npm run build # tsup -> dist/MIT