Import Post History

Social media post history API for importing historical posts

Import a connected account's historical posts through one async job, so your product has a backlog to show on day one.

Trigger an async import of historical posts from a connected social account, poll for status, and access the imported post list in one workflow.

Last updated: July 2026

One API key. No per-account fees. 15 platforms.

API key authScheduled publishing15 platforms
Quick start
API request
1// Step 1: Trigger async import for a connected account2const trigger = await fetch(3  "https://api.bundle.social/api/v1/social-account/acc_123/import-posts",4  {5    method: "POST",6    headers: { "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY }7  }8);9const { importId } = await trigger.json();1011// Step 2: Poll until complete12const status = await fetch(13  `https://api.bundle.social/api/v1/social-account/acc_123/import-posts/${importId}`,14  { headers: { "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY } }15);16const { state, importedCount } = await status.json();
Official APIs500k+ connected accountsDirect engineer support

Pulling historical post data natively

Native social APIs paginate historical posts differently across platforms, making consistent imports complex.
Import jobs are long-running operations that block simple request-response patterns.
Teams typically build custom scrapers or rely on data exports that go stale immediately.

What bundle.social handles

Trigger a post history import with one API call and poll for completion without managing the pagination yourself.
Access imported posts through the dashboard and API once the import job completes.
Combine imported history with new scheduled posts for a single source of truth.

Historical data should be part of your workflow, not a one-off export

Importing post history gives your reporting and analytics a starting point. bundle.social handles the pagination and state management so your team gets the data without the plumbing.

Workflow

How it works

Connect accounts once, then create and schedule posts with channel-specific fields from one API.

01

Connect the account

The social account must be connected before an import can be triggered.

02

Trigger the import

POST to the import endpoint for the connected account. A job ID is returned immediately.

03

Poll and read

Poll the import status endpoint. When the state is complete, access imported posts through the post list API.

Product architecture

Build social media workflows without rebuilding every platform

Social media post history API for reporting and onboarding workflows

Agencies, SaaS dashboards, AI content tools, and internal marketing teams reach for a post history API when they need context from before an account was connected. Reporting questions usually start with a comparison, and a fresh integration has nothing to compare against. Manual exports fill that gap briefly and go stale the day they are downloaded.

bundle.social imports historical posts from connected accounts into the same post list as content your product schedules. Your backend triggers the import for a connected account, polls the returned job until it completes, and reads imported posts through the standard post endpoints. Analytics, client reporting, and content audits get a baseline immediately.

Historical imports are asynchronous jobs, not single requests

Native platforms paginate history differently, and an account with years of content cannot be walked inside one request. The import endpoint returns a job identifier rather than data, and posts become available once that job reports completion. Treating the trigger response as the result is the most common cause of a dashboard that renders half an account.

bundle.social handles the pagination and state so your product only tracks the job. Each connected account gets its own import identifier, so several imports can run and be polled independently, which is what makes onboarding an agency's full client list practical instead of a sequence of manual runs.

Imported history joins scheduled posts and analytics

Historical data is only useful when it sits next to everything else. Imported posts, scheduled content, delivery status, comments, and analytics describe one account, and reporting that keeps them in separate systems forces every question to be answered twice.

bundle.social returns imported posts through the same post list used for new content, so one query covers an account's full timeline. How far back that timeline reaches depends on each native platform's historical window and permissions, so reporting should state the range it covers rather than imply a complete archive.

Capabilities

Post history import built for reporting workflows

Trigger, poll, and access historical post data without building your own pagination or state management.

One-call import trigger

POST to the import endpoint and receive a job ID immediately. No pagination or cursor management required.

Poll until complete

Check import status with a single GET endpoint and read posts once the state reaches COMPLETED.

Unified post list access

Imported history appears in the same post list endpoint as posts your team scheduled in bundle.social.

Developer example

Trigger an import and check status

Examples use bundle.social's public API shape: API key authentication, a post date, selected social account types, and platform-specific data.

TypeScript
API request
1// Trigger2const trigger = await fetch(3  "https://api.bundle.social/api/v1/social-account/acc_instagram_123/import-posts",4  {5    method: "POST",6    headers: { "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY }7  }8);9const { importId } = await trigger.json();1011// Poll (repeat until state === "COMPLETED")12const poll = async () => {13  const res = await fetch(14    `https://api.bundle.social/api/v1/social-account/acc_instagram_123/import-posts/${importId}`,15    { headers: { "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY } }16  );17  return res.json();18};

Supported content

Historical postsPost metadataEngagement snapshotsAccount post lists

Honest limitations

  • The amount of history available depends on the native platform's API and the connected account's permissions.
  • Import jobs are asynchronous. Do not assume completion immediately after triggering.
  • Some platforms limit how far back post history can be fetched.

Guarantees

Developer-first infrastructure

Visible post status

Track scheduled, processing, posted, retrying, and error states per post.

Verbose errors

When native APIs fail, we return human-readable error messages and actionable recovery steps.

Flat pricing

No per-post counting. Predictable pricing for teams managing many users, workspaces, and connected accounts.

Same-day support

Direct access to the engineers building the API. We respond to technical issues the same day, sometimes the same hour.

FAQ

Questions developers ask before building

How long does an import take?

It depends on the account's post volume and the platform's API. Poll the status endpoint until the state returns COMPLETED.

How far back does the import go?

This depends on the native platform. Each platform has its own historical data window and API limits.

Can I import history across multiple teams?

Yes, across teams. Trigger a separate import job for each team's connected account. Each returns its own importId for independent polling.

What do I do with imported posts?

Imported posts appear in your post list and feed into analytics and reporting workflows alongside newly created scheduled posts.

Which platforms support post history import?

Supported platforms are listed in the bundle.social docs. Availability depends on each native platform's API access rules.