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}/stories
  • POST /organizations/{organization_id}/publications/{publication_id}/stories
  • GET /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.


POST/organizations/{organization_id}/publications/{publication_id}/stories

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'

GET/organizations/{organization_id}/publications/{publication_id}/stories

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}'

PATCH/organizations/{organization_id}/publications/{publication_id}/stories/{story_id}

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
    }
  }'

POST/organizations/{organization_id}/publications/{publication_id}/stories/{story_id}/publish

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/organizations/{organization_id}/publications/{publication_id}/stories/{story_id}

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}'