Comunicate.top API Publications API

A publication ties an article to a publisher site. It is the only place in the API that spends credits or money.

Operations 3

POST /partner/publications Request publication #
GET /partner/publications List publications #
GET /partner/publications/{publicationId} One publication #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/comunicate-top-api-publications-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

comunicate-top-api-publications-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Comunicate.top Publications API
  version: 1.0.0
  description: 'Publish articles (advertorials, press releases) on 3.800+ websites in Romania, Italy and beyond: catalogue, articles, publications, campaigns, reports.'
  contact:
    url: https://comunicate.top/ro/contact
servers:
- url: https://app.comunicate.top/api/v1
tags:
- name: Publications
  description: A publication ties an article to a publisher site. It is the only place in the API that spends credits or money.
paths:
  /partner/publications:
    post:
      operationId: post_publications
      summary: Request publication
      description: 'One article, one or more publications.


        **Payment ambiguity is never guessed.** When several owned packages cover the same site, the request is rejected with `409` and the list of options; the integration picks one and retries with `packageTypeId`. Guessing would consume the wrong package, and that cannot be undone.


        Required scope: `PUBLICATIONS_WRITE`.'
      tags:
      - Publications
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - articleId
              - siteIds
              - campaignType
              properties:
                articleId:
                  type: string
                  format: uuid
                  description: The article to publish.
                siteIds:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: The publications chosen from the catalogue.
                campaignType:
                  type: string
                  description: The campaign type. Must be among the site's `acceptedCampaigns`.
                packageTypeId:
                  type: string
                  format: uuid
                  description: Which package pays, when several cover the site.
                licenseNumber:
                  type: string
                  description: The operator’s ONJN gambling licence. Required when `campaignType` is `"CASINO"` — gambling advertising must display it, and the platform writes it onto the article itself before sending it.
                extrasBySite:
                  type: object
                  additionalProperties: true
                  description: Extras requested per site — `"HOMEPAGE_PLACEMENT"`, `"FACEBOOK_SHARE"`, at most both. The key is `siteId`, the value a list of types; each one requested must have an active offer on that site (see `GET /partner/catalog`), otherwise the request is rejected.
                scheduledFor:
                  type: string
                  format: date-time
                  description: When it should go live, if not immediately.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '400':
          description: Invalid input
        '401':
          description: Missing or invalid API key
        '403':
          description: The key lacks the required scope
      security:
      - apiKey: []
      - oauth2:
        - PUBLICATIONS_WRITE
    get:
      operationId: get_publications
      summary: List publications
      description: 'All the organisation''s publications. `status` filters. Cursor-paginated: the response''s `nextCursor` is sent back as `cursor` for the next page, `null` on the last one.


        For tracking state, webhooks are better: `publication.published` arrives with the article URL the moment it goes live, while polling burns your rate limit without learning anything extra.


        Required scope: `PUBLICATIONS_READ`.'
      tags:
      - Publications
      parameters:
      - name: status
        in: query
        required: false
        description: '`DRAFT`, `AWAITING_APPROVAL`, `APPROVED`, `PUBLISHING`, `PUBLISHED`, `FAILED`, `REJECTED`, `CANCELLED`.'
        schema:
          type: string
      - name: cursor
        in: query
        required: false
        description: The id of the last publication seen. Absent on the first page.
        schema:
          type: string
          format: uuid
      - name: limit
        in: query
        required: false
        description: How many publications per page.
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '400':
          description: Invalid input
        '401':
          description: Missing or invalid API key
        '403':
          description: The key lacks the required scope
      security:
      - apiKey: []
      - oauth2:
        - PUBLICATIONS_READ
  /partner/publications/{publicationId}:
    get:
      operationId: get_publications_publicationId
      summary: One publication
      description: 'The whole publication, with its event history and the reason, when it failed or was rejected.


        Required scope: `PUBLICATIONS_READ`.'
      tags:
      - Publications
      parameters:
      - name: publicationId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '400':
          description: Invalid input
        '401':
          description: Missing or invalid API key
        '403':
          description: The key lacks the required scope
      security:
      - apiKey: []
      - oauth2:
        - PUBLICATIONS_READ
components:
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: API key from Integrations (bk_live_…)
    oauth2:
      type: oauth2
      description: OAuth 2.1 with PKCE (S256). Dynamic client registration at https://app.comunicate.top/api/v1/oauth/register. The access token is an API key and is accepted everywhere an API key is.
      flows:
        authorizationCode:
          authorizationUrl: https://app.comunicate.top/api/v1/oauth/authorize
          tokenUrl: https://app.comunicate.top/api/v1/oauth/token
          refreshUrl: https://app.comunicate.top/api/v1/oauth/token
          scopes:
            CATALOG_READ: catalog read
            ARTICLES_READ: articles read
            ARTICLES_WRITE: articles write
            MEDIA_WRITE: media write
            PUBLICATIONS_READ: publications read
            PUBLICATIONS_WRITE: publications write
            CAMPAIGNS_READ: campaigns read
            CAMPAIGNS_WRITE: campaigns write
            BALANCE_READ: balance read
            REPORTS_READ: reports read