@fopost/sdk
v0.2.3
Published
Official TypeScript SDK for the FoPost API. Schedule and publish to +30 social platforms from your code.
Maintainers
Readme
@fopost/sdk
Official TypeScript / Node.js SDK for the FoPost API. Schedule and publish to +30 social platforms from your code.
npm install @fopost/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.
Quick start
import { FoPost } from '@fopost/sdk';
const fopost = new FoPost({ apiKey: process.env.FOPOST_API_KEY! });
// List your accounts
const accounts = await fopost.accounts.list({ workspaceId: '9b2f6c1e-…' });
// Create a post, then publish it immediately
const post = await fopost.posts.create({
workspaceId: '9b2f6c1e-…',
content: [{ text: 'Hello from the SDK' }],
accounts: accounts.map((a) => a.id),
});
await fopost.posts.publish(post.id);
// Schedule for later
await fopost.posts.create({
workspaceId: '9b2f6c1e-…',
status: 'scheduled',
scheduleAt: '2026-06-01T10:00:00Z',
content: [{ text: 'Scheduled with the SDK' }],
accounts: [accounts[0].id],
});AI features
// Caption assist
const { caption, credits } = await fopost.ai.generateCaption({
currentCaption: 'shipping a new feature',
platforms: ['twitter', 'linkedin'],
});
// Rewrite for each platform
const rewrites = await fopost.ai.rewrite({
content: 'Long article-style draft...',
platforms: ['twitter', 'linkedin', 'bluesky'],
});
// Blog → social fan-out
const repurposed = await fopost.ai.repurposeUrl({
url: 'https://example.com/blog/post',
platforms: ['twitter', 'linkedin', 'bluesky', 'threads'],
});
// Check your balance
const balance = await fopost.ai.credits();
console.log(`${balance.creditsRemaining} of ${balance.creditsTotal} credits left`);Configuration
new FoPost({
apiKey: process.env.FOPOST_API_KEY!, // required
baseUrl: 'https://api.fopost.com', // optional, override for self-hosted
fetch: customFetch, // optional, inject your fetch impl
});| Env var | Used for |
| ---------------- | ------------------------------------------------ |
| FOPOST_API_KEY | API key (you pass it explicitly to new FoPost) |
Error handling
import { FoPost, FoPostError } from '@fopost/sdk';
try {
await fopost.posts.publish('9b2f6c1e-…');
} catch (err) {
if (err instanceof FoPostError) {
console.error(`API ${err.status}${err.code ? ` (${err.code})` : ''}: ${err.message}`);
} else {
throw err;
}
}Resources
| 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 |
Contributing
Issues and pull requests are welcome at fopost/fopost-js.
npm install
npm run lint # tsc --noEmit
npm run build # tsup -> dist/License
MIT
