Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.
openapi: 3.2.0
info:
title: Comunicate Eu Media API
version: 1.0.0
contact:
url: https://comunicate.eu/ro/contact
description: 'Operations tagged Media across 2 of this provider''s published API definitions: comunicate-eu-openapi.json, comunicate-eu-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://app.comunicate.eu/api/v1
tags:
- name: Media
paths:
/partner/media:
post:
operationId: post_media
summary: Upload an image
description: 'JPEG, PNG, GIF, WebP or AVIF. The type is detected from content, not from the extension or header: a disguised file is rejected.
The same image uploaded twice is not duplicated — it is recognised by checksum and the existing one is returned. The URL from the response can go straight into an article''s `featuredImageUrl`.
Required scope: `MEDIA_WRITE`.'
tags:
- Media
parameters: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- (fișier)
properties:
(fișier):
type: string
description: The image.
folderId:
type: string
format: uuid
description: The media-library folder.
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
additionalProperties: true
example:
id: 4e4a…
filename: coperta.jpg
url: /api/v1/organizations/adb4…/media/4e4a…/content
mimeType: image/jpeg
sizeBytes: 84213
width: 1200
height: 630
'400':
description: Invalid input
'401':
description: Missing or invalid API key
'403':
description: The key lacks the required scope
security:
- apiKey: []
- oauth2:
- MEDIA_WRITE
x-codeSamples:
- lang: Shell
label: curl
source: "curl --location 'https://app.comunicate.eu/api/v1/partner/media' \\\n --header 'Authorization: Bearer bk_live_…' \\\n --form 'file=@coperta.jpg'"
servers:
- url: https://app.comunicate.eu/api/v1
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.eu/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.eu/api/v1/oauth/authorize
tokenUrl: https://app.comunicate.eu/api/v1/oauth/token
refreshUrl: https://app.comunicate.eu/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
x-refined-from:
- comunicate-eu-openapi.json
- comunicate-eu-openapi.json
x-provenance:
method: harvested
publisher: Comunicate.eu
source: https://app.comunicate.eu/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)