API reference

Integrate plagiarism detection and AI content analysis directly into your publishing, editorial, or LMS workflow.

Base URL

https://code.mannaplag.mannaanalytics.com/api

The Manna Plag API gives journal publishers, editorial management systems, and institutional repositories programmatic access to plagiarism detection and AI content analysis, so originality checking can be built directly into your own workflow.

Authentication

Every request requires an API key in the Authorization header. Generate keys from your dashboard under API Keys → Generate new key. Keys are prefixed MAPL_ and shown only once at creation.

Authorization: Api-Key MAPL_your_key_here

Rate limits & quotas

Usage is governed by your monthly paper quota. Each document submission counts as one paper. Once the limit is reached the API returns HTTP 429. Quotas reset on the 1st of each month.

PlanPapers / monthPrice
API Starter100₹3,000/mo
API Growth400₹10,000/mo
API Scale2,000₹35,000/mo
API EnterpriseCustomContact sales

Quickstart

  1. Generate an API key from Dashboard → API Keys → Generate new key. Copy it immediately. It is shown only once.
  2. Verify your key with GET /auth/me/.
  3. Upload a document with POST /submissions/upload/.
  4. Poll for status every 15–30 seconds with GET /submissions/{submission_id}/.
  5. Retrieve the report with GET /submissions/reports/{report_id}/.

Endpoints

GET/auth/me/

Get account info

Verify your API key and retrieve your account details. Use this to test authentication.

Example request (cURL)

curl https://code.mannaplag.mannaanalytics.com/api/auth/me/ \
  -H "Authorization: Api-Key MAPL_your_key_here"

Example response

{
  "id": "5e694c3c-ac60-462b-92db-4e602f021b54",
  "email": "publisher@journal.com",
  "full_name": "Dr. Priya Sharma",
  "role": "publisher",
  "organisation": "Indian Journal of Research",
  "is_verified": true
}
POST/submissions/upload/

Submit a document for plagiarism check

Upload a PDF or DOCX manuscript. Returns a submission_id to track processing status. Maximum file size 50MB.

Parameters

fileFilerequiredPDF or DOCX file, max 50MB
titlestringoptionalOptional document title

Example request (cURL)

curl -X POST https://code.mannaplag.mannaanalytics.com/api/submissions/upload/ \
  -H "Authorization: Api-Key MAPL_your_key_here" \
  -F "file=@research_paper.pdf" \
  -F "title=My Research Paper"

Example response

{
  "message": "Manuscript uploaded. Checking in progress.",
  "submission_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "status": "pending",
  "file_name": "research_paper.pdf"
}
GET/submissions/{submission_id}/

Poll submission status

Check the processing status of a submitted document. Poll every 15–30 seconds. Status values: pending, processing, complete, failed.

Parameters

submission_idUUIDrequiredID returned from the upload endpoint

Example request (cURL)

curl https://code.mannaplag.mannaanalytics.com/api/submissions/{submission_id}/ \
  -H "Authorization: Api-Key MAPL_your_key_here"

Example response

// While processing
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "status": "processing",
  "file_name": "research_paper.pdf"
}

// When complete
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "status": "complete",
  "report_id": "7cb9b6a2-1234-4321-abcd-ef0123456789",
  "overall_similarity": 14.5,
  "verbatim_score": 8.2,
  "mosaic_score": 6.3,
  "flagged_chunks": 12,
  "total_chunks": 84
}
GET/submissions/reports/{report_id}/

Get full plagiarism report

Retrieve the complete similarity report including matched sources, DOI links, and flagged text.

Parameters

report_idUUIDrequiredreport_id from a completed submission

Example request (cURL)

curl https://code.mannaplag.mannaanalytics.com/api/submissions/reports/{report_id}/ \
  -H "Authorization: Api-Key MAPL_your_key_here"

Example response

{
  "id": "7cb9b6a2-1234-4321-abcd-ef0123456789",
  "overall_similarity": 14.5,
  "verbatim_score": 8.2,
  "mosaic_score": 6.3,
  "flagged_chunks": 12,
  "total_chunks": 84,
  "matches": [
    {
      "source_title": "Deep Learning in Medical Imaging",
      "source_doi": "10.1234/dlmi.2023.001",
      "source_url": "https://doi.org/10.1234/dlmi.2023.001",
      "similarity_pct": 8.5,
      "matched_text": "The convolutional neural network..."
    }
  ]
}
POST/checker/analyze/

AI content detection

Detect AI-generated text in a manuscript. Returns an overall AI score and section-level breakdown with flagged sentences. Citations are excluded from scoring.

Parameters

fileFilerequiredPDF or DOCX file, max 50MB

Example request (cURL)

curl -X POST https://code.mannaplag.mannaanalytics.com/api/checker/analyze/ \
  -H "Authorization: Api-Key MAPL_your_key_here" \
  -F "file=@research_paper.pdf"

Example response

{
  "id": "9ab12cd3-ef45-6789-abcd-ef0123456789",
  "status": "complete",
  "overall_ai_score": 23.5,
  "file_name": "research_paper.pdf",
  "word_count": 8420,
  "sections": [
    {
      "section_name": "Introduction",
      "ai_score": 45.2,
      "flagged_sentences": [
        "Large language models have demonstrated..."
      ]
    },
    {
      "section_name": "Methodology",
      "ai_score": 4.1,
      "flagged_sentences": []
    }
  ]
}

Support ticket endpoints

These endpoints power the Support section of your dashboard and use your normal session token (not an API key).

POST/tickets/create/

Create a support ticket

Open a new support ticket. Returns the generated ticket number.

Parameters

namestringrequiredYour name
emailstringrequiredContact email
subjectstringrequiredShort summary of the issue
messagestringrequiredFull description of the issue
categorystringoptionale.g. Billing, Technical, Account
prioritystringoptionalLow, Medium, or High
sourcestringoptionalWhere the ticket originated, e.g. Website

Example request (cURL)

curl -X POST https://code.mannaplag.mannaanalytics.com/api/tickets/create/ \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Priyanga","email":"priyanga@example.com","subject":"Payment not reflecting","message":"Paid via Razorpay but subscription still shows inactive.","category":"Billing","priority":"High","source":"Website"}'

Example response

{
  "message": "Ticket created successfully.",
  "ticket_number": "TKT-000001",
  "ticket_id": 1
}
GET/tickets/my/

List my tickets

Return every support ticket opened by the authenticated user, most recent first.

Example request (cURL)

curl https://code.mannaplag.mannaanalytics.com/api/tickets/my/ \
  -H "Authorization: Bearer <access_token>"

Example response

[
  {
    "ticket_id": 1,
    "ticket_number": "TKT-000001",
    "subject": "Payment not reflecting",
    "category": "Billing",
    "priority": "High",
    "status": "Open",
    "created_at": "2026-07-10T10:32:10+05:30",
    "updated_at": "2026-07-10T10:32:10+05:30"
  }
]
GET/tickets/{ticket_id}/

Ticket detail

Retrieve the full detail of a single ticket, including its message and current status.

Parameters

ticket_idintegerrequiredID of the ticket to retrieve

Example request (cURL)

curl https://code.mannaplag.mannaanalytics.com/api/tickets/1/ \
  -H "Authorization: Bearer <access_token>"

Example response

{
  "ticket_id": 1,
  "ticket_number": "TKT-000001",
  "name": "Priyanga",
  "email": "priyanga@example.com",
  "subject": "Payment not reflecting",
  "message": "Paid via Razorpay but subscription still shows inactive.",
  "category": "Billing",
  "priority": "High",
  "status": "Open",
  "created_at": "2026-07-10T10:32:10+05:30",
  "updated_at": "2026-07-10T10:32:10+05:30"
}
POST/tickets/{ticket_id}/reopen/

Reopen a closed ticket

Move a resolved or closed ticket back to Open status, for example if the issue recurs.

Parameters

ticket_idintegerrequiredID of the ticket to reopen

Example request (cURL)

curl -X POST https://code.mannaplag.mannaanalytics.com/api/tickets/1/reopen/ \
  -H "Authorization: Bearer <access_token>"

Example response

{
  "message": "Ticket reopened successfully.",
  "ticket_id": 1,
  "status": "Open"
}

Error codes

All error responses return JSON with an error field describing the problem.

CodeStatusDescription
200OKRequest succeeded
202AcceptedDocument uploaded, processing started
400Bad RequestInvalid file type, missing fields, or file too large (>50MB)
401UnauthorizedMissing or invalid API key
404Not FoundSubmission or report not found
429Too Many RequestsMonthly paper quota exceeded — upgrade plan to continue
500Server ErrorInternal error — contact support@mannaanalytics.com

Example 429 response:

{
  "error": "Monthly paper limit reached. You have used 400 of 400 papers this month.",
  "quota_used": 400,
  "quota_limit": 400,
  "plan": "API Growth",
  "upgrade_url": "/choose-plan"
}

Support

Email support@mannaanalytics.com for API support, integration questions, or to report issues.

Manna Analytics Private Limited · 3/343, Town Railway Nagar, Nagercoil 629001, Tamil Nadu, India