Socialbakers Posts API

Published content (posts / videos / tweets) per network

OpenAPI Specification

socialbakers-posts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Emplifi (Socialbakers) Public Ads 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. Socialbakers rebranded to Emplifi in 2021; this API is the successor to the original Socialbakers Public API. Requests are authenticated with HTTP Basic auth (API token:secret) or OAuth 2.0 authorization code flow. Metrics and posts endpoints accept a JSON query body (profiles, metrics, date range) and return a `{ "success": true, ... }` envelope.'
  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:
  responses:
    RateLimited:
      description: Rate limit exceeded (1000 req/hour account, 500 req/hour user)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    PagedSuccess:
      description: Successful, cursor-paginated response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PagedEnvelope'
    Unauthorized:
      description: Authentication failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  requestBodies:
    PostsQuery:
      required: true
      description: Posts query — profiles and a date range, cursor-paginated.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PostsQuery'
  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
    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
    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
  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: {}