This skill enables you to interact with all Publer API endpoints.
Business plan required. The Publer API is only available to Business plan users.
Base URL: https://app.publer.com/api/v1
Required headers on almost every request:
text
Authorization: Bearer-API YOUR_API_KEY
Publer-Workspace-Id: YOUR_WORKSPACE_ID
Content-Type: application/json
Note: Bearer-API (not Bearer) is the correct format.
If the user hasn't provided their API key, ask for it before making any calls. Never hardcode or expose API keys.
API key scopes: workspaces, accounts, posts, media, analytics
AreaMethodEndpointUsersGET/users/meWorkspacesGET/workspacesAccountsGET/accountsPostsGET/postsPosts — Schedule/DraftPOST/posts/schedulePosts — Publish NowPOST/posts/schedule/publishPosts — UpdatePUT/posts/{id}Posts — DeleteDELETE/postsJob StatusGET/job_status/{job_id}Media — ListGET/mediaMedia — Direct UploadPOST/mediaMedia — URL UploadPOST/media/from-urlMedia OptionsGET/workspaces/{workspace_id}/media_optionsAnalytics — Charts ListGET/analytics/chartsAnalytics — Chart DataGET/analytics/:account_id/chart_dataAnalytics — Post InsightsGET/analytics/:account_id/post_insightsAnalytics — Hashtag InsightsGET/analytics/:account_id/hashtag_insightsAnalytics — Hashtag PostsGET/analytics/:account_id/hashtag_performing_postsAnalytics — Best TimesGET/analytics/:account_id/best_timesAnalytics — MembersGET/analytics/membersCompetitors — ListGET/competitors/:account_idCompetitors — AnalyticsGET/competitors/:account_id/analytics
For full request/response shapes, read references/api-reference.md.
Map the user's request to one or more API calls from the table above.
GET /workspaces first.GET /accounts.scheduled_at must be ISO 8601 with timezone, at least 1 minute in the future.from/ to date range (YYYY-MM-DD). They are co-required./media or /media/from-url, then referenced by ID in posts.Use the correct HTTP method and headers. POST/PUT use Content-Type: application/json. Media direct upload uses multipart/form-data.
Post creation and URL media uploads are asynchronous:
{ "success": true, "data": { "job_id": "..." } }GET /job_status/{job_id} until status is "complete" or "failed"payload.failures even on "complete" — partial failures are possibleBearer-API format.Publer-Workspace-Id header is present.errors[] array to user and ask them to correct input.X-RateLimit-Reset, use exponential backoff.GET /workspaces then GET /accountsPOST /posts/schedule with state: "scheduled", network content, and scheduled_at per accountGET /job_status/{job_id} until completeSame as above but use POST /posts/schedule/publish and omit scheduled_at.
Use multiple keys under networks with per-platform text/type:
json
"networks": {
"facebook": { "type": "status", "text": "Longer Facebook copy..." },
"twitter": { "type": "status", "text": "Short tweet #hashtag" },
"linkedin": { "type": "status", "text": "Professional LinkedIn copy..." }
}
POST /media (multipart) for direct upload, or POST /media/from-url for URL importvalidity object in response for network compatibilitymedia.id in the media[] array inside the network object when creating postGET /posts?state=scheduledPUT /posts/{id}) or delete ( DELETE /posts?post_ids[]=...) on requestGET /analytics/charts to get available IDs, then GET /analytics/:account_id/chart_data?chart_ids[]=...&from=...&to=...GET /analytics/:account_id/post_insights?from=...&to=...GET /analytics/:account_id/hashtag_insightsGET /analytics/:account_id/best_times?from=...&to=...GET /competitors/:account_id to list competitorsGET /competitors/:account_id/analytics for aggregate metricscompetitors=true&competitor_id=... on post insights and best times endpoints for deeper comparisonBearer-API YOUR_KEY — not BearerPubler-Workspace-Id header. Exception: GET /workspaces/{workspace_id}/media_options uses workspace ID in the path./users/me and /workspaces do not require the workspace header.page param throughout. Post insights and hashtag insights return 10 per page.default network key: Use "default" as the network to apply same content to all accounts.sort_type: Lowercase asc/ desc — unlike post/hashtag insights which use ASC/ DESC.reach field: May be omitted in members analytics and competitor analytics for unsupported networks — handle gracefully.references/api-reference.md — Full endpoint docs with all request/response shapes, field enums, media specs, daily post limits, and error handling. Read this when you need exact field names, response shapes, or need to handle a case not covered above.