API Documentation

Welcome to the AiRxiv API documentation. Our API allows you to programmatically submit papers for AI-powered peer review, retrieve results, and browse published papers.

Base URL

https://airxiv-backend.onrender.com

Quick Start

# Submit a paper for review
curl -X POST https://airxiv-backend.onrender.com/api/review \
  -F "paper_file=@paper.pdf" \
  -F "document_type=academic_paper"

Authentication

Currently, the AiRxiv API is open and free to use. No API key or authentication is required.

Future Plans: API keys will be required for paid plans. Free tier will allow 100 requests per month.

API Endpoints

POST /api/review

Submit a paper for AI-powered peer review.

Request Parameters

Parameter Type Required Description
paper_file file Yes* PDF file to review
arxiv_url string Yes* arXiv or TechRxiv URL
document_type string No academic_paper, engineering_report, test_report, whitepaper (default: test_report)

* Either paper_file or arxiv_url is required

Example Requests

Python
import requests

# Submit PDF file
files = {'paper_file': open('paper.pdf', 'rb')}
data = {'document_type': 'academic_paper'}

response = requests.post(
    'https://airxiv-backend.onrender.com/api/review',
    files=files,
    data=data
)

result = response.json()
print(f"Paper ID: {result['paper_id']}")
print(f"Overall Score: {result['review']['overall_score']}")

# Submit arXiv URL
data = {
    'arxiv_url': 'https://arxiv.org/abs/2301.12345',
    'document_type': 'academic_paper'
}

response = requests.post(
    'https://airxiv-backend.onrender.com/api/review',
    data=data
)

result = response.json()
print(result)
JavaScript (Node.js)
const FormData = require('form-data');
const fs = require('fs');
const fetch = require('node-fetch');

// Submit PDF file
const formData = new FormData();
formData.append('paper_file', fs.createReadStream('paper.pdf'));
formData.append('document_type', 'academic_paper');

fetch('https://airxiv-backend.onrender.com/api/review', {
    method: 'POST',
    body: formData
})
.then(res => res.json())
.then(data => {
    console.log('Paper ID:', data.paper_id);
    console.log('Review:', data.review);
})
.catch(err => console.error(err));
cURL
# Submit PDF file
curl -X POST https://airxiv-backend.onrender.com/api/review \
  -F "paper_file=@paper.pdf" \
  -F "document_type=academic_paper"

# Submit arXiv URL
curl -X POST https://airxiv-backend.onrender.com/api/review \
  -F "arxiv_url=https://arxiv.org/abs/2301.12345" \
  -F "document_type=academic_paper"

Response

{
  "success": true,
  "message": "Review completed successfully",
  "paper_id": "airxiv.2025.000001",
  "paper_url": "/paper/airxiv.2025.000001",
  "review": {
    "overall_score": 8.2,
    "recommendation": "Accept with minor revisions",
    "scores": {
      "novelty": 8.5,
      "methodology": 7.8,
      "clarity": 8.0,
      "reproducibility": 7.5,
      "significance": 8.7,
      "literature_review": 7.9,
      "experimental_design": 8.1,
      "results_interpretation": 8.3,
      "writing_quality": 8.4,
      "ethical_considerations": 8.0
    },
    "summary": "This paper presents a novel approach to...",
    "strengths": [
      "Strong theoretical foundation",
      "Comprehensive experiments"
    ],
    "weaknesses": [
      "Limited real-world testing",
      "Some notation inconsistencies"
    ],
    "detailed_feedback": {
      "introduction": "Well-written and clear...",
      "methodology": "Sound approach with...",
      "results": "Comprehensive analysis..."
    }
  },
  "review_file": "review_20251127_162900.json"
}
GET /api/review/{review_id}

Retrieve a saved review by ID (legacy endpoint).

Example Request

curl https://airxiv-backend.onrender.com/api/review/review_20251127_162900
GET /api/papers/list

Get a list of all published papers.

Example Request

curl https://airxiv-backend.onrender.com/api/papers/list

Response

{
  "papers": [
    {
      "id": "airxiv.2025.000001",
      "title": "Novel Approach to Machine Learning",
      "document_type": "academic_paper",
      "review_score": 8.2,
      "review_recommendation": "Accept with minor revisions",
      "created_at": "2025-11-27T08:30:00",
      "view_count": 45,
      "download_count": 12
    }
  ],
  "total": 1
}
GET /api/papers/{paper_id}

Get detailed information about a specific paper including the full review.

Example Request

curl https://airxiv-backend.onrender.com/api/papers/airxiv.2025.000001
GET /api/papers/{paper_id}/pdf

Download the PDF file of a paper.

Example Request

curl -O https://airxiv-backend.onrender.com/api/papers/airxiv.2025.000001/pdf

Error Codes

Code Meaning Description
400 Bad Request Invalid parameters or missing required fields
404 Not Found The requested resource does not exist
500 Internal Server Error An error occurred on our server

Example Error Response

{
  "detail": "Please provide either a PDF file or an arXiv URL"
}

Rate Limits

Currently, there are no strict rate limits on the API. However, we recommend:

  • Maximum 10 requests per minute
  • Maximum 100 requests per day (free tier)
  • Wait for previous review to complete before submitting new ones

Future Plans: Paid plans will offer higher rate limits and priority processing.

Need Help?

Have questions about the API? We're here to help!