Comunicate.top API Writing orders API

The API starts no generation. You place an order, we see it, we write it or decline it with a reason, and you learn the outcome the same way. The reason is simple: a key runs inside a script and can ask for a thousand articles overnight, out of quotas that belong to the platform and are shared by every client. And a model-written text delivered automatically, seen by nobody here, goes out to publishers under our name.

Operations 4

POST /partner/redactare Order an article #
GET /partner/redactare Your orders #
GET /partner/redactare/{orderId} Order status #
POST /partner/redactare/{orderId}/anuleaza Cancel an order #

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-writing-orders-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-writing-orders-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Comunicate.top Writing orders 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: Writing orders
  description: 'The API starts no generation. You place an order, we see it, we write it or decline it with a reason, and you learn the outcome the same way.


    The reason is simple: a key runs inside a script and can ask for a thousand articles overnight, out of quotas that belong to the platform and are shared by every client. And a model-written text delivered automatically, seen by nobody here, goes out to publishers under our name.'
paths:
  /partner/redactare:
    post:
      operationId: post_redactare
      summary: Order an article
      description: 'The response is the order, with `status: "NOUA"`. When it is done, the same order has `status: "LIVRATA"` and `articleId` filled in.


        **It is paid from the money balance, not from credits.** A credit is “one publication included” from a package, not hours of writing. The price is reserved the moment the order arrives and consumed on delivery; a rejection, a cancellation or a writing failure on our side releases it in full. With no balance the order is refused with `400` and is not created at all — better a refusal at the door than an article written on credit.


        `fapte` is the one measured field that changes the quality of the text. With the client''s data in front of it, the article uses their exact figures; without it, it stays general — correct, but less useful. The rule is strict: **only what appears there may appear in the article as a figure or a name**.


        Required scope: `ARTICLES_WRITE`.'
      tags:
      - Writing orders
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - tema
              - campaignType
              - cuvinte
              properties:
                tema:
                  type: string
                  description: One sentence, as you would tell a writer. The title comes from it.
                campaignType:
                  type: string
                  description: One of the types from `campaign-types`.
                cuvinte:
                  type: string
                  enum:
                  - '500'
                  - '700'
                  - '1000'
                  - '1500'
                  description: Target length.
                cuvantCheie:
                  type: string
                  description: One only, one to four words.
                brand:
                  type: string
                  description: The promoted brand.
                adresaPromovata:
                  type: string
                  description: The URL the article points to.
                fapte:
                  type: string
                  description: 'One item per entry: prices, years in business, certifications, who can be quoted.'
                campaignId:
                  type: string
                  format: uuid
                  description: The campaign the delivered article joins.
                note:
                  type: string
                  description: Anything else you want to tell us about the order.
                idempotencyKey:
                  type: string
                  description: 'Chosen by you — a locally generated UUID is enough. Sent again with exactly the same data, it returns the order already created instead of making a new one. Recommended for any code that might resend the request after a timeout: without a key, a resend creates a second order and a second money reservation.'
      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:
        - ARTICLES_WRITE
    get:
      operationId: get_redactare
      summary: Your orders
      description: '`status` filters. Most recent first.


        Required scope: `ARTICLES_READ`.'
      tags:
      - Writing orders
      parameters:
      - name: status
        in: query
        required: false
        description: '`NOUA`, `IN_LUCRU`, `LIVRATA`, `REFUZATA`, `ANULATA`.'
        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:
        - ARTICLES_READ
  /partner/redactare/{orderId}:
    get:
      operationId: get_redactare_orderId
      summary: Order status
      description: 'States: `NOUA` (received), `IN_LUCRU` (someone here picked it up), `LIVRATA` (`articleId` filled in, `chargedCents` says what was charged), `REFUZATA` (with `rejectionReason`), `ANULATA`, `ESUATA` (writing failed on our side). In the last three, the reserved amount returns to the balance.


        `articleId` is returned **only on delivery**. While it is being written the draft is ours: if the model produced something weak, it gets rewritten or declined, without anyone having had the chance to send it on.


        A `redaction.delivered` webhook saves you from polling — a human review sits between the request and the article, and its duration cannot be predicted.


        Required scope: `ARTICLES_READ`.'
      tags:
      - Writing orders
      parameters:
      - name: orderId
        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:
        - ARTICLES_READ
  /partner/redactare/{orderId}/anuleaza:
    post:
      operationId: post_redactare_orderId_anuleaza
      summary: Cancel an order
      description: 'Only while it is `NOUA`. Once someone here has picked it up the work is done or in progress and cancelling is no longer yours to do: you get `409`, and closing it stays a declined order with a reason, from our side.


        Required scope: `ARTICLES_WRITE`.'
      tags:
      - Writing orders
      parameters:
      - name: orderId
        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:
        - ARTICLES_WRITE
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