openapi: 3.2.0 info: title: Emplifi (Socialbakers) Public Posts API version: '3' description: The Emplifi Public API (v3) — formerly the Socialbakers API — provides programmatic access to social media analytics, published content, profile and post metrics, community engagement, social listening, Facebook Ads, digital asset management (Assets), and customer care (Care) data across Facebook, Instagram, X/Twitter, YouTube, LinkedIn, Pinterest, TikTok and Snapchat. contact: name: Emplifi API Support url: https://api.emplifi.io/ x-apievangelist: method: derived source: https://api.emplifi.io/ (Emplifi API v3 documentation) + https://github.com/Emplifi/public-api-tableau-wdc note: Derived from the published Emplifi Public API documentation and the official Emplifi public-api-tableau-wdc connector source. Endpoint paths, methods, auth schemes and the response envelope are taken from those public sources; request/response schemas are representative, not verbatim. servers: - url: https://api.emplifi.io description: Emplifi Public API production security: - basicAuth: [] - oauth2: [] tags: - name: Posts description: Published content (posts / videos / tweets) per network paths: /3/facebook/page/posts: post: operationId: getFacebookPosts summary: Facebook page posts tags: - Posts requestBody: $ref: '#/components/requestBodies/PostsQuery' responses: '200': $ref: '#/components/responses/PagedSuccess' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimited' /3/instagram/profile/posts: post: operationId: getInstagramPosts summary: Instagram profile posts tags: - Posts requestBody: $ref: '#/components/requestBodies/PostsQuery' responses: '200': $ref: '#/components/responses/PagedSuccess' '401': $ref: '#/components/responses/Unauthorized' /3/youtube/profile/videos: post: operationId: getYoutubeVideos summary: YouTube profile videos tags: - Posts requestBody: $ref: '#/components/requestBodies/PostsQuery' responses: '200': $ref: '#/components/responses/PagedSuccess' '401': $ref: '#/components/responses/Unauthorized' /3/twitter/profile/tweets: post: operationId: getTwitterTweets summary: X/Twitter profile tweets tags: - Posts requestBody: $ref: '#/components/requestBodies/PostsQuery' responses: '200': $ref: '#/components/responses/PagedSuccess' '401': $ref: '#/components/responses/Unauthorized' /3/linkedin/page/posts: post: operationId: getLinkedinPosts summary: LinkedIn page posts tags: - Posts requestBody: $ref: '#/components/requestBodies/PostsQuery' responses: '200': $ref: '#/components/responses/PagedSuccess' '401': $ref: '#/components/responses/Unauthorized' /3/pinterest/profile/posts: post: operationId: getPinterestPosts summary: Pinterest profile posts tags: - Posts requestBody: $ref: '#/components/requestBodies/PostsQuery' responses: '200': $ref: '#/components/responses/PagedSuccess' '401': $ref: '#/components/responses/Unauthorized' /3/tiktok/profile/posts: post: operationId: getTiktokPosts summary: TikTok profile posts tags: - Posts requestBody: $ref: '#/components/requestBodies/PostsQuery' responses: '200': $ref: '#/components/responses/PagedSuccess' '401': $ref: '#/components/responses/Unauthorized' /3/snapchat/profile/posts: post: operationId: getSnapchatPosts summary: Snapchat profile posts tags: - Posts requestBody: $ref: '#/components/requestBodies/PostsQuery' responses: '200': $ref: '#/components/responses/PagedSuccess' '401': $ref: '#/components/responses/Unauthorized' components: schemas: ErrorEnvelope: type: object properties: success: type: boolean const: false errors: type: array items: type: object properties: code: type: integer errors: type: array items: type: string required: - success - errors PagedEnvelope: type: object properties: success: type: boolean const: true data: type: array items: type: object additionalProperties: true next: type: - string - 'null' description: Cursor for the next page remaining: type: - integer - 'null' description: Number of items remaining required: - success PostsQuery: type: object properties: profiles: type: array items: type: string date_start: type: string format: date date_end: type: string format: date cursor: type: string required: - profiles - date_start - date_end responses: RateLimited: description: Rate limit exceeded (1000 req/hour account, 500 req/hour user) content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' Unauthorized: description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' PagedSuccess: description: Successful, cursor-paginated response content: application/json: schema: $ref: '#/components/schemas/PagedEnvelope' requestBodies: PostsQuery: required: true description: Posts query — profiles and a date range, cursor-paginated. content: application/json: schema: $ref: '#/components/schemas/PostsQuery' securitySchemes: basicAuth: type: http scheme: basic description: HTTP Basic authorization. Credentials are your Emplifi API `token` and `secret`, base64-encoded as `token:secret`. oauth2: type: oauth2 description: OAuth 2.0 authorization code flow. Create a Custom integration in Emplifi Settings to obtain client credentials. flows: authorizationCode: authorizationUrl: https://api.emplifi.io/oauth2/0/auth tokenUrl: https://api.emplifi.io/oauth2/0/token scopes: {}