Later Influence (Mavrck) Reporting API

The Reporting API exposes Later Influence campaign performance for aggregation outside the platform: instance-level KPIs and time series, campaign performance and estimated ROI, social-network channel mix and return on investment, individual creator performance and post-level content analytics. OpenAPI 3.0.0, published by SwaggerHub owner `mavrck`. Authenticates with a clientId/clientSecret exchange at POST /oauth/token that returns a JWT bearer token. This v1 has been publicly announced as deprecated in favour of a v2 at reporting.api.later.com.

Documentation

Specifications

Other Resources

OpenAPI Specification

mavrck-instance-level-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Later Influence™ Instance Level API
  description: "\n# Description\nThe Reporting API enables deep analysis and reporting of marketing campaigns, social media performance, and influencer effectiveness.\nIt provides comprehensive performance insights at multiple levels:\n- Instance Level: Get instance details, overall performance, and performance over time\n- Campaign Level: Retrieve detailed campaign performance metrics\n- Social Network Level: Analyze performance across different social networks and calculate return on investment\n- Influencer Level: Evaluate individual influencer performance\n- Post Level: Access granular performance data for individual posts\n\n# Authentication\nIn order to use the Reporting API, OAuth2 authentication is required. The API uses the client credentials flow for authentication. To obtain an access token:\n\n1. Request the client credentials (client ID and client secret) from the support team.\n2. Make a POST request to the token endpoint: `https://api.mavrck.co/oauth/token`, including your client credentials in the request body.\n\nCurl Example: \n```\ncurl --request POST \\\n  --url 'https://api.mavrck.co/oauth/token' \\\n  --header 'Content-Type: application/json' \\\n  --header 'accept: application/json' \\\n  --data '{\n    \"clientId\": \"<client_id>\",\n    \"clientSecret\": \"<client_secret>\"\n  }'\n```\n\n3. Include the obtained access token in the Authorization header of your API requests:\n\nCurl Example: \n```\ncurl --request GET \\\n  --url 'https://api.mavrck.co/v1/reporting/instance/details' \\\n  --header 'Content-Type: application/json' \\\n  --header 'accept: application/json' \\\n  --header 'Authorization: Bearer **<your_access_token>**' \\\n```\n\nFor security reasons, access tokens have a limited lifespan of 12 hours. You should implement a mechanism to refresh the token when it expires.\n\n# Data Availability\n- Most endpoints return analytics that are current up to the previous day, as several social media platforms apply a 24-hour reporting delay.\n- Data access is limited to the specific account or instances associated with the provided API credentials.\n- Analytics are recorded on a daily basis and appear only when they fall within the selected date-range filters. For example, if a post was published a week ago but receives its first interaction today, that interaction will only be included when today’s date is part of the chosen range.\n\n# Base Filters\nAll endpoints support the following filters:\n- `startDate` (ISO 8601 format, e.g. 2024-01-01)\n- `endDate` (ISO 8601 format, e.g. 2024-01-01). There is a limit of up to 2 years for the selected date range.\n- `instanceIds` array of instance ids. If not provided, all instances associated with the API credentials will be considered.\n- `campaignIds` array of campaign ids, if no campaign ids are provided, all campaigns for the instance will be used\n- `reportingGroupIds` array of reporting group ids, if no reporting group ids are provided, all reporting groups for the instance will be used\n\n# Pagination\n- The pagination is available for endpoints returning large datasets.\n- Use `pageSize` and `pageNumber` query parameters to control the results. For the `pageSize` parameter, the default is 50 and the maximum is 100.\n\n# Versioning\n- API versioning supported through URI path\n\n# Changelog\n\n---\n\n## 2025-11-25 Introduce Multi-instance support\n### Added\n- `GET /instances` API - Retrieve the list of instances accessible by the provided API credentials.\n- `GET /instances/details` API - Get detailed information about the instances associated with the provided API credentials such as `influencersCount`, `campaignsCount`, and other relevant metrics. It is similar to the existing `GET /instance/details` endpoint but supports multiple instances.\n\n### Changed\n- All endpoints now support an `instanceIds` query parameter, allowing you to filter results by specific instance IDs when your credentials have access to multiple instances.\n- `GET /campaigns/performance` response includes a new string field `instanceId`.\n- `GET /post/performance` response includes a new string field `instanceId`.\n\n"
  version: 1.2.1
  contact:
    name: Developer
    url: https://help-influence.later.com/hc/en-us
    email: urvash.chheda@later.com
  termsOfService: https://later.com/terms/
servers:
- url: https://api.mavrck.co
security:
- JWT: []
tags:
- name: Instance Level
paths:
  /v1/reporting/instances:
    get:
      description: Get all instances accessible by the provided API credentials
      operationId: getAllowedInstances
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ReportingApiResponseDto'
                - properties:
                    data:
                      $ref: '#/components/schemas/InstancesResponseDto'
                    meta:
                      example: null
      summary: ''
      tags:
      - Instance Level
  /v1/reporting/instance/details:
    get:
      description: Get details for associated instance available for the provided API credentials. If the credentials have access to multiple instances, the first one will be returned, consider using `GET /instances/details` to get details for all instances.
      operationId: getInfoAboutInstanceAndCampaigns
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ReportingApiResponseDto'
                - properties:
                    data:
                      $ref: '#/components/schemas/InstanceDetailsResponseDto'
                    meta:
                      example: null
      summary: ''
      tags:
      - Instance Level
  /v1/reporting/instances/details:
    get:
      description: Get details for all the associated instances available for the provided API credentials
      operationId: getInfoAboutMultipleInstancesAndCampaigns
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ReportingApiResponseDto'
                - properties:
                    data:
                      type: array
                      items:
                        $ref: '#/components/schemas/InstanceDetailsResponseDto'
                    meta:
                      example: null
      summary: ''
      tags:
      - Instance Level
  /v1/reporting/instance/performance:
    get:
      description: Get instance performance details.
      operationId: getInstancePerformance
      parameters:
      - name: startDate
        required: true
        in: query
        description: Start date for the report, YYYY-MM-dd format
        schema:
          format: date-time
          type: string
      - name: endDate
        required: true
        in: query
        description: End date for the report, YYYY-MM-dd format
        schema:
          format: date-time
          type: string
      - name: instanceIds
        required: false
        in: query
        description: A list of instance ids. If not provided, all instances associated with the API credentials will be considered.
        schema:
          type: array
          items:
            type: string
      - name: campaignIds
        required: false
        in: query
        description: A list of campaign ids (max 50 items)
        schema:
          type: array
          items:
            type: number
      - name: reportingGroupIds
        required: false
        in: query
        description: A list of reporting group ids
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ReportingApiResponseDto'
                - properties:
                    data:
                      $ref: '#/components/schemas/InstancePerformanceResponseDto'
                    meta:
                      example: null
      summary: ''
      tags:
      - Instance Level
  /v1/reporting/instance/performance-over-time:
    get:
      description: Get instance performance details over time.
      operationId: getPerformanceOverTime
      parameters:
      - name: startDate
        required: true
        in: query
        description: Start date for the report, YYYY-MM-dd format
        schema:
          format: date-time
          type: string
      - name: endDate
        required: true
        in: query
        description: End date for the report, YYYY-MM-dd format
        schema:
          format: date-time
          type: string
      - name: instanceIds
        required: false
        in: query
        description: A list of instance ids. If not provided, all instances associated with the API credentials will be considered.
        schema:
          type: array
          items:
            type: string
      - name: campaignIds
        required: false
        in: query
        description: A list of campaign ids (max 50 items)
        schema:
          type: array
          items:
            type: number
      - name: reportingGroupIds
        required: false
        in: query
        description: A list of reporting group ids
        schema:
          type: array
          items:
            type: string
      - name: pageSize
        required: false
        in: query
        description: Number of items per page
        schema:
          default: 50
          type: number
      - name: pageNumber
        required: false
        in: query
        description: The page you would like to get data for
        schema:
          default: 1
          type: number
      - name: granularity
        required: false
        in: query
        schema:
          default: month
          type: string
          enum:
          - year
          - quarter
          - month
          - week
          - day
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ReportingApiGranularResponseDto'
                - properties:
                    data:
                      type: array
                      items:
                        type: object
                        properties:
                          metrics:
                            $ref: '#/components/schemas/InstancePerformanceOverTimeMetricsDto'
                          date:
                            $ref: '#/components/schemas/PerformanceOverTimeDateDto'
      summary: ''
      tags:
      - Instance Level
components:
  schemas:
    InstancePerformanceResponseDto:
      type: object
      properties:
        engagements:
          type:
          - number
          - 'null'
          example: 1000
          description: Total number of engagements
        impressions:
          type:
          - number
          - 'null'
          example: 10000
          description: Total number of impressions
        engagementRate:
          type:
          - number
          - 'null'
          example: 0.1
          description: Engagement rate as a decimal
        postsCount:
          type:
          - number
          - 'null'
          example: 50
          description: Total number of posts
        valueGenerated:
          type:
          - number
          - 'null'
          example: 5000
          description: Total value generated
        returnOnInvestment:
          type:
          - number
          - 'null'
          example: 2.5
          description: Return on investment as a ratio
        estimatedContentCost:
          type:
          - number
          - 'null'
          example: 2000
          description: Is calculated based on how many posts received metrics in the selected time range vs the amount of money paid to the author(influencer)
        campaignsCost:
          type:
          - number
          - 'null'
          example: 3000
          description: Is calculated based on the paid amount to influencers participating in the selected campaigns
        conversionValue:
          type:
          - number
          - 'null'
          example: 7500
          description: Total tracking links conversion value
      required:
      - engagements
      - impressions
      - engagementRate
      - postsCount
      - valueGenerated
      - returnOnInvestment
      - estimatedContentCost
      - campaignsCost
      - conversionValue
    ReportingApiResponseDto:
      type: object
      properties:
        data:
          type: object
          additionalProperties: false
        meta:
          type:
          - object
          - 'null'
          description: Metadata containing page information
          properties:
            page:
              type: number
              example: 1
            totalPages:
              type: number
              example: 10
      required:
      - data
      - meta
    PerformanceOverTimeDateDto:
      type: object
      properties:
        year:
          type: number
          description: Year
          example: 2023
        quarter:
          type: number
          description: Quarter
          example: 4
        month:
          type: number
          description: Month
          example: 10
        week:
          type: number
          description: Week
          example: 42
        day:
          type: number
          description: Day
          example: 15
        fullDate:
          type: string
          description: ISO 8601 date format (YYYY-MM-DD)
          example: '2023-10-15'
      required:
      - year
    InstancePerformanceOverTimeMetricsDto:
      type: object
      properties:
        likes:
          type:
          - number
          - 'null'
          example: 100
          description: Number of likes
        comments:
          type:
          - number
          - 'null'
          example: 50
          description: Number of comments
        shares:
          type:
          - number
          - 'null'
          example: 25
          description: Number of shares
        clicks:
          type:
          - number
          - 'null'
          example: 200
          description: Number of clicks
        engagements:
          type:
          - number
          - 'null'
          example: 375
          description: Total number of engagements
        impressions:
          type:
          - number
          - 'null'
          example: 1000
          description: Number of impressions
        valueGenerated:
          type:
          - number
          - 'null'
          example: 500.5
          description: Value generated
        engagementRate:
          type:
          - number
          - 'null'
          example: 0.375
          description: Engagement rate
        cpe:
          type:
          - number
          - 'null'
          example: 1.33
          description: Cost per engagement
        cpm:
          type:
          - number
          - 'null'
          example: 5
          description: Cost per mille (thousand impressions)
      required:
      - likes
      - comments
      - shares
      - clicks
      - engagements
      - impressions
      - valueGenerated
      - engagementRate
      - cpe
      - cpm
    ReportingApiGranularResponseDto:
      type: object
      properties:
        data:
          type: object
          description: A data object containing a generic metrics object | array and a date object
          additionalProperties: true
        meta:
          type: object
          description: Metadata containing page information
          properties:
            page:
              type: number
              example: 1
            totalPages:
              type: number
              example: 10
      required:
      - data
      - meta
    InstancesResponseDto:
      type: object
      properties:
        instanceIds:
          description: A list of instance ids the API credentials have access to
          example:
          - instance_123
          - instance_456
          type: array
          items:
            type: string
      required:
      - instanceIds
    InstanceDetailsResponseDto:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the instance
          example: instance_123
        campaignsCount:
          type: number
          description: Number of campaigns associated with the instance
          example: 5
        influencersCount:
          type: number
          description: Number of influencers associated with the instance
          example: 10
        campaigns:
          description: List of campaigns associated with the instance
          example:
          - id: 49761
            title: demo campaign 1
            description: ''
            status: LIVE
            startDate: '2023-06-06T06:52:00.000Z'
          - id: 49762
            title: demo campaign 2
            description: null
            status: LIVE
            startDate: '2023-06-07T06:29:00.000Z'
          type: array
          items:
            $ref: '#/components/schemas/InstanceCampaignDto'
      required:
      - id
      - campaignsCount
      - influencersCount
      - campaigns
    InstanceCampaignDto:
      type: object
      properties:
        id:
          type: number
          description: Unique identifier for the campaign
          example: 1
        title:
          type:
          - string
          - 'null'
          description: Title of the campaign
          example: Summer Sale Campaign
        description:
          type:
          - string
          - 'null'
          description: Description of the campaign
          example: This campaign is focused on summer sales.
        status:
          type:
          - string
          - 'null'
          description: Status of the campaign
          example: active
        startDate:
          type:
          - string
          - 'null'
          description: Start date of the campaign
          format: date-time
          example: '2023-10-01T00:00:00Z'
      required:
      - id
      - title
      - description
      - status
      - startDate
  securitySchemes:
    JWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT obtained from the OAuth2 token endpoint