API Documentation

Programmatic access to Future Science data and submission endpoints

1.

Overview

The Future Science Public API provides free, read-only access to all published initiatives and contributions on the platform. No authentication is required. All responses are returned in JSON format.

2.

Base URL

All API endpoints are available under the following base path:

https://future-science.org/api/v1/public/
3.

Authentication

No authentication is required. The public API is open to everyone. All endpoints are read-only.

4.

Pagination

List endpoints paginate with cursor (1-indexed page) and limit (max 100). The common page/pageSize aliases are also accepted. Walking every page returns the full collection. The response includes a meta object with pagination details.

Query Parameters

ParameterTypeDescription
cursornumberPage number, 1-indexed (alias: page). Starts at 1.
limitnumberNumber of items per page (1–100, default 10). Alias: pageSize.
pagenumberAlias for cursor — page number, 1-indexed (starts at 1).
pageSizenumberAlias for limit — number of items per page (1–100, default 10).
searchstringSearch term to filter results by text content
sortstringSort field and order (e.g. publishedAt:desc, id:desc, createdAt:asc)

Pagination Response

{
  "meta": {
    "pagination": {
      "page": 1,
      "pageSize": 10,
      "total": 42,
      "pageCount": 5,
      "self": "https://future-science.org/api/v1/public/contributions?cursor=1&limit=10",
      "first": "https://future-science.org/api/v1/public/contributions?cursor=1&limit=10",
      "last": "https://future-science.org/api/v1/public/contributions?cursor=5&limit=10",
      "next": "https://future-science.org/api/v1/public/contributions?cursor=2&limit=10",
      "prev": null
    }
  }
}

Each list response also includes absolute navigation links — self, first, last, next and prev (next/prev are null at the ends) — so you can walk the whole collection without building URLs by hand.

4b.

Inline Content

Pass ?include=content to contribution endpoints to inline each paper's manuscript as markdown under a content field, read directly from object storage. content is null when no manuscript file exists. Content pages are heavier, so limit defaults to 20 and is capped at 50, and these responses are never cached. File URLs (submittedFiles.file.url and cover.url) are returned as absolute URLs.

GET /api/v1/public/contributions/:id?include=content
{
  "data": {
    "id": 10,
    "documentId": "xyz789abc012",
    "title": "Toward Open Peer Review",
    "submittedFiles": {
      "file": { "url": "https://future-science.org/strapi/uploads/paper.md" }
    },
    "content": "# Toward Open Peer Review\n\n..."
  }
}
4c.

Filtering

The global GET /contributions endpoint can be narrowed to a single initiative using Strapi-style bracketed filter parameters. Filter by the initiative slug, documentId, or numeric id (only the $eq operator is supported):

GET /api/v1/public/contributions?filters[initiative][slug][$eq]=mirror
GET /api/v1/public/contributions?filters[initiative][documentId][$eq]=abc123def456
GET /api/v1/public/contributions?filters[initiative][id][$eq]=12

The filter is applied server-side and reflected in the total and pageCount, and is preserved across the pagination links. A filter that matches nothing returns an empty data array with total 0 (a normal 200, not an error). The same initiative a contribution is filtered by is the one returned in its initiative field.

5.

Endpoints

GET/api/v1/public/initiatives

List Initiatives

Returns a paginated list of all published initiatives with their metadata.

ParameterTypeDescription
cursornumberPage number, 1-indexed (alias: page). Starts at 1.
limitnumberNumber of items per page (1–100, default 10). Alias: pageSize.
pagenumberAlias for cursor — page number, 1-indexed (starts at 1).
pageSizenumberAlias for limit — number of items per page (1–100, default 10).
searchstringSearch term to filter results by text content
sortstringSort field and order (e.g. publishedAt:desc, id:desc, createdAt:asc)
Response
{
  "data": [
    {
      "id": 1,
      "documentId": "abc123def456",
      "title": "Archive of Academic Commentary",
      "type": "Open Review Archive",
      "presentation": "An open archive for...",
      "logo": { "url": "/strapi/uploads/logo.png" },
      "leadEditor": {
        "firstName": "Jane",
        "lastName": "Doe",
        "institution": "University of Example"
      },
      "editorialBoard": [...],
      "supportingDocuments": [...],
      "publishedAt": "2025-06-15T10:30:00.000Z"
    }
  ],
  "meta": {
    "pagination": {
      "page": 1, "pageSize": 10,
      "total": 8, "pageCount": 1
    }
  }
}
GET/api/v1/public/initiatives/:id

Get Initiative

Returns a single published initiative by its document ID. Its contributions are not inlined on this response — enumerate them via the dedicated, paginated endpoint below.

ParameterTypeDescription
idstringThe document ID of the resource
Response
{
  "data": {
    "id": 1,
    "documentId": "abc123def456",
    "title": "Archive of Academic Commentary",
    "type": "Open Review Archive",
    "presentation": "An open archive for...",
    "logo": { "url": "/strapi/uploads/logo.png" },
    "leadEditor": {
      "firstName": "Jane",
      "lastName": "Doe",
      "institution": "University of Example",
      "links": [{ "url": "https://..." }]
    },
    "editorialBoard": [
      { "firstName": "John", "lastName": "Smith", ... }
    ],
    "supportingDocuments": [...],
    "institutionalPartners": [...],
    "publishedAt": "2025-06-15T10:30:00.000Z"
  }
}
GET/api/v1/public/initiatives/:id/contributions

List Initiative Contributions

Returns a paginated list of a single initiative's published contributions. Walk every page to enumerate the full set.

ParameterTypeDescription
idstringThe document ID of the resource
cursornumberPage number, 1-indexed (alias: page). Starts at 1.
limitnumberNumber of items per page (1–100, default 10). Alias: pageSize.
pagenumberAlias for cursor — page number, 1-indexed (starts at 1).
pageSizenumberAlias for limit — number of items per page (1–100, default 10).
searchstringSearch term to filter results by text content
sortstringSort field and order (e.g. publishedAt:desc, id:desc, createdAt:asc)
includestringSet to content to inline each contribution's manuscript markdown (contribution endpoints only). When inlining content, limit defaults to 20 and is capped at 50.
Response
{
  "data": [
    {
      "id": 10,
      "documentId": "xyz789abc012",
      "title": "Toward Open Peer Review",
      "type": "Article",
      "author": { "firstName": "Jane", "lastName": "Doe" },
      "publishedAt": "2025-07-01T08:00:00.000Z"
    }
  ],
  "meta": {
    "pagination": {
      "page": 1, "pageSize": 10,
      "total": 595, "pageCount": 60
    }
  }
}
GET/api/v1/public/contributions

List Contributions

Returns a paginated list of all published contributions with their metadata.

ParameterTypeDescription
cursornumberPage number, 1-indexed (alias: page). Starts at 1.
limitnumberNumber of items per page (1–100, default 10). Alias: pageSize.
pagenumberAlias for cursor — page number, 1-indexed (starts at 1).
pageSizenumberAlias for limit — number of items per page (1–100, default 10).
searchstringSearch term to filter results by text content
sortstringSort field and order (e.g. publishedAt:desc, id:desc, createdAt:asc)
includestringSet to content to inline each contribution's manuscript markdown (contribution endpoints only). When inlining content, limit defaults to 20 and is capped at 50.
Response
{
  "data": [
    {
      "id": 10,
      "documentId": "xyz789abc012",
      "title": "Toward Open Peer Review",
      "subtitle": "A comparative analysis",
      "type": "Article",
      "abstract": "This paper explores...",
      "language": "English",
      "author": { "firstName": "Jane", "lastName": "Doe" },
      "keywords": [{ "keyword": "open access" }],
      "publishedAt": "2025-07-01T08:00:00.000Z"
    }
  ],
  "meta": {
    "pagination": {
      "page": 1, "pageSize": 10,
      "total": 42, "pageCount": 5
    }
  }
}
GET/api/v1/public/contributions/:id

Get Contribution

Returns a single published contribution by its document ID, including full details such as authors, keywords, abstract, and files. Add ?include=content to inline the manuscript markdown.

ParameterTypeDescription
idstringThe document ID of the resource
includestringSet to content to inline each contribution's manuscript markdown (contribution endpoints only). When inlining content, limit defaults to 20 and is capped at 50.
Response
{
  "data": {
    "id": 10,
    "documentId": "xyz789abc012",
    "title": "Toward Open Peer Review",
    "subtitle": "A comparative analysis",
    "type": "Article",
    "otherType": null,
    "abstract": "This paper explores...",
    "language": "English",
    "author": {
      "firstName": "Jane", "lastName": "Doe"
    },
    "keywords": [{ "keyword": "open access" }],
    "submittedFiles": {
      "file": { "url": "https://future-science.org/strapi/uploads/paper.md" },
      "cover": { "url": "https://future-science.org/strapi/uploads/cover.png" }
    },
    "additionalMaterials": [...],
    "selfArchive": true,
    "isOriginal": true,
    "publishedAt": "2025-07-01T08:00:00.000Z"
  }
}
GET/api/v1/public/initiatives/:id/export

Export Initiative Contributions

Returns an initiative's published contributions with each manuscript inlined as markdown (always behaves as include=content). limit defaults to 20 and is capped at 50; paginate with the absolute next link to export the whole initiative. Responses are never cached.

ParameterTypeDescription
idstringThe document ID of the resource
cursornumberPage number, 1-indexed (alias: page). Starts at 1.
limitnumberNumber of items per page (1–100, default 10). Alias: pageSize.
pagenumberAlias for cursor — page number, 1-indexed (starts at 1).
pageSizenumberAlias for limit — number of items per page (1–100, default 10).
searchstringSearch term to filter results by text content
sortstringSort field and order (e.g. publishedAt:desc, id:desc, createdAt:asc)
Response
{
  "data": [
    {
      "id": 10,
      "documentId": "xyz789abc012",
      "title": "Toward Open Peer Review",
      "submittedFiles": {
        "file": { "url": "https://future-science.org/strapi/uploads/paper.md" }
      },
      "content": "# Toward Open Peer Review\n\n..."
    }
  ],
  "meta": {
    "pagination": {
      "page": 1, "pageSize": 20,
      "total": 595, "pageCount": 30,
      "self": "https://future-science.org/api/v1/public/initiatives/abc/export?cursor=1&limit=20&include=content",
      "next": "https://future-science.org/api/v1/public/initiatives/abc/export?cursor=2&limit=20&include=content",
      "prev": null
    }
  }
}
6.

Response Fields

Initiative Fields

FieldDescription
documentIdUnique document identifier
titleTitle of the initiative
typeType of initiative
presentationDescription text of the initiative
logoLogo image object
leadEditorLead editor details (name, institution, links)
editorialBoardList of editorial board members
supportingDocumentsAttached supporting documents
publishedAtPublication timestamp

Contribution Fields

FieldDescription
documentIdUnique document identifier
titleTitle of the contribution
subtitleSubtitle (optional)
typeType of contribution
otherTypeCustom type label when type is "Other"
abstractAbstract text
languageLanguage of the contribution
authorList of authors (name, institution, email, links)
keywordsList of keywords
submittedFilesSubmitted files and cover
additionalMaterialsAdditional material links
selfArchiveSelf-archiving details (DOI, license, copyright, reference)
isOriginalWhether this is an original submission
initiativeThe initiative this contribution belongs to: an object with id, documentId, slug and title (null if none). When a contribution is linked to more than one initiative, a single representative is returned, matching the initiative filter.
publishedAtPublication timestamp
7.

Initiative Types

Initiatives on Future Science are categorized into the following types:

Open Review JournalA researcher-led journal with open and transparent peer review. Reviews, author replies, and editorial decisions are publicly accessible.
Open Review Conference ProceedingsA volume collecting peer-reviewed contributions from academic events, including multimedia material such as recorded talks.
Open Review ArchiveAn open archive where any researcher can deposit work that undergoes community-driven open evaluation.
Open Review NotebookA closed archive reserved for a specific community (e.g. a laboratory), allowing shared work and internal open review.
AI-Reviewed JournalA journal using artificial intelligence to assist with the editorial and review process, including document processing and reviewer matching.
Fully Autonomous JournalAn experimental environment where article generation, peer review, and editorial decisions are performed by autonomous AI agents.
OtherA custom initiative type defined by the lead editor.
8.

Contribution Types

Contributions submitted to initiatives can be of the following types:

Article
Conference paper
Book
Book chapter
Response to a contribution
Response to a review
Unreviewed manuscript
Peer-review
Revised manuscript
Podcast
Other
Literature review
9.

Example Request & Response

Request

GET /api/v1/public/initiatives?cursor=1&limit=2

Response

{
  "data": [
    {
      "id": 1,
      "documentId": "abc123def456",
      "title": "Archive of Academic Commentary",
      "type": "Open Review Archive",
      "presentation": "An open archive for...",
      "logo": { "url": "/uploads/logo.png" },
      "leadEditor": {
        "firstName": "Jane",
        "lastName": "Doe",
        "institution": "University of Example"
      },
      "editorialBoard": [...],
      "publishedAt": "2025-06-15T10:30:00.000Z"
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "pageSize": 2,
      "total": 8,
      "pageCount": 4
    }
  }
}
10.

Error Responses

When a resource is not found, the API returns a 404 status with an error message:

// 404 Not Found
{
  "error": "Initiative not found"
}

// 404 Not Found
{
  "error": "Contribution not found"
}

The public API has no strict rate limits, but please use it responsibly. Excessive automated requests may be throttled.