Article Import API
Introduction
The PressMatrix Article Import API enables publishers to create, update, list, retrieve, delete, and publish article-based content for a publication.
The technical endpoint resource is named stories, and request/response bodies use the story envelope.
The base URL is:
https://editor.pressmatrix.com/api/v2/importer
Authentication
All endpoints require token-based authentication via the Authorization header.
Authorization Header
Authorization: Token {TOKEN_GENERATED_BY_PMX}
Overview
The API exposes these endpoints:
GET /organizations/{organization_id}/publications/{publication_id}/storiesPOST /organizations/{organization_id}/publications/{publication_id}/storiesGET /organizations/{organization_id}/publications/{publication_id}/stories/{story_id}PUT /organizations/{organization_id}/publications/{publication_id}/stories/{story_id}PATCH /organizations/{organization_id}/publications/{publication_id}/stories/{story_id}DELETE /organizations/{organization_id}/publications/{publication_id}/stories/{story_id}POST /organizations/{organization_id}/publications/{publication_id}/stories/{story_id}/publish
- Name
organization_id- Type
- integer
- Description
PressMatrix organization ID.
- Name
publication_id- Type
- integer
- Description
PressMatrix publication ID.
- Name
story_id- Type
- integer
- Description
Article ID in the technical stories resource.
- Name
page- Type
- integer
- Description
Optional page number for paginated list endpoints.
- Name
per- Type
- integer
- Description
Optional number of items per page.
Article fields
- Name
name- Type
- string
- Description
Internal article name. Required when creating an article.
- Name
title- Type
- string
- Description
Article title shown to readers.
- Name
preview- Type
- string
- Description
Short article summary.
- Name
content- Type
- string
- Description
Article body in Markdown.
- Name
external_id- Type
- string
- Description
Customer-provided identifier. List filters use partial matching.
- Name
released_at- Type
- string
- Description
ISO 8601 date and time from which the article is visible.
- Name
language- Type
- string
- Description
Two-letter language code, for example
de.
- Name
cents- Type
- integer
- Description
Price in the smallest currency unit.
- Name
currency- Type
- string
- Description
ISO 4217 currency code, for example
EUR.
- Name
image- Type
- file
- Description
Optional image upload via multipart/form-data. Supported MIME types are JPEG, PNG, and GIF. Maximum file size is 5 MB.
Create article
Creates a new article. Use JSON for metadata-only articles, or multipart/form-data when uploading an image.
JSON request
curl --location 'https://editor.pressmatrix.com/api/v2/importer/organizations/{organization_id}/publications/{publication_id}/stories' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Token {TOKEN_GENERATED_BY_PMX}' \
--data '{
"story": {
"name": "Example Article",
"title": "Example Article",
"preview": "Short article summary.",
"content": "# Example Article\n\nArticle body in Markdown.",
"external_id": "article-001",
"released_at": "2026-07-10T12:00:00Z",
"cents": 199,
"currency": "EUR",
"language": "de",
"subscription_required": false,
"purchase_required": false
}
}'
Multipart request
curl --location 'https://editor.pressmatrix.com/api/v2/importer/organizations/{organization_id}/publications/{publication_id}/stories' \
--header 'Accept: application/json' \
--header 'Authorization: Token {TOKEN_GENERATED_BY_PMX}' \
--form 'story[name]="Example Article"' \
--form 'story[title]="Example Article"' \
--form 'story[released_at]="2026-07-10T12:00:00Z"' \
--form 'story[cents]="199"' \
--form 'story[currency]="EUR"' \
--form 'story[language]="de"' \
--form 'story[image]=@article-image.png'
List articles
Returns a paginated list of articles for the publication.
- Name
from- Type
- string
- Description
Return articles created on or after this ISO 8601 timestamp.
- Name
to- Type
- string
- Description
Return articles created on or before this ISO 8601 timestamp.
- Name
external_id- Type
- string
- Description
Filter by a single external ID value or a comma-separated list of values. Each value is matched partially.
- Name
search- Type
- string
- Description
Search across title, content, and product identifiers.
Request
curl --location 'https://editor.pressmatrix.com/api/v2/importer/organizations/{organization_id}/publications/{publication_id}/stories?search=Example&page=1&per=20' \
--header 'Accept: application/json' \
--header 'Authorization: Token {TOKEN_GENERATED_BY_PMX}'
Update article
Use PATCH to update selected article fields. Use PUT when replacing the full set of article attributes.
Patch request
curl --request PATCH 'https://editor.pressmatrix.com/api/v2/importer/organizations/{organization_id}/publications/{publication_id}/stories/{story_id}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Token {TOKEN_GENERATED_BY_PMX}' \
--data '{
"story": {
"title": "Updated Example Article",
"preview": "Updated article summary.",
"purchase_required": true
}
}'
Publish article
Publishes an article after all required fields and publishing prerequisites are satisfied.
Request
curl --request POST 'https://editor.pressmatrix.com/api/v2/importer/organizations/{organization_id}/publications/{publication_id}/stories/{story_id}/publish' \
--header 'Accept: application/json' \
--header 'Authorization: Token {TOKEN_GENERATED_BY_PMX}'
Delete article
Deletes an article from normal API responses.
Request
curl --request DELETE 'https://editor.pressmatrix.com/api/v2/importer/organizations/{organization_id}/publications/{publication_id}/stories/{story_id}' \
--header 'Accept: application/json' \
--header 'Authorization: Token {TOKEN_GENERATED_BY_PMX}'