Back to all products
REST API Reference

Drillbit Folder Management
API Documentation

Complete reference for integrating plagiarism detection, AI content analysis, and report generation into your application or platform.

Base URL https://s1.drillbitplagiarismcheck.com

Authentication Required for All Endpoints

Every API request (except the authenticate call itself) must include a valid JWT Bearer token in the Authorization header. Obtain your token by calling POST /authentication/authenticate first. Pass it as Authorization: Bearer <token> in all subsequent requests.

🔐
Authentication
POST /authentication/authenticate Authenticate user

Authenticates a user with their credentials and returns a JWT Bearer token. This is the only endpoint that does not require an existing token.

Request Body · application/json
FieldTypeDescription
usernamestringRegistered email address of the user
passwordstringAccount password
{
  "username": "john.doe@university.edu",
  "password": "••••••••••••"
}
200 OK
Response Fields
FieldTypeDescription
tokenstringJWT Bearer token — include in all subsequent requests
rolestringUser role (e.g. lim-admin)
usernamestringAuthenticated user's email address
namestringDisplay name of the user
in_flagbooleanInstitution flag
ai_flagbooleanAI detection feature enabled for this account
mfabooleanMulti-factor authentication status
idintegerUnique user identifier
con_typestring | nullConnection type — null if not applicable
{
  "token":    "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJqb2huLmRvZUB1...",
  "role":     "lim-admin",
  "username": "john.doe@university.edu",
  "name":     "John Doe",
  "in_flag":  false,
  "ai_flag":  false,
  "mfa":      false,
  "id":       100123,
  "con_type": null
}
💡 Store the token securely and pass it as Authorization: Bearer <token> in every subsequent request header.
📁
Folders
GET /pro/folders List folders

Returns a paginated list of assignment folders sorted by the specified field.

Headers
Authorization: Bearer <token>
Query Parameters
ParameterTypeDefaultDescription
pageinteger0Page index (0-based)
sizeinteger24Results per page
fieldstringass_idField to sort by
orderBystringdescasc or desc
GET /pro/folders?page=0&size=24&field=ass_id&orderBy=desc
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
200 OK
Top-level Fields
FieldTypeDescription
grammar_subscriptionstringGrammar check subscription status (YES/NO)
foldersobjectPaginated folder data with links, content array and page metadata
translationstringTranslation feature status
in_flagbooleanInstitution flag for this account
folders.content[ ] — Folder Object
FieldTypeDescription
folder_idintegerUnique folder identifier
folder_namestringDisplay name of the folder
mail_idstringOwner's email address
created_datestringFolder creation timestamp
end_datestringFolder expiry date
small_sourcesstringExclude small sources
ex_referencesstringExclude references section
ex_quotesstringExclude quoted text
grammarstringGrammar check enabled
ex_phrasesstringExclude specific phrases
db_studentpaperstringCheck against student paper database
db_publicationsstringCheck against publications database
db_internetstringCheck against internet sources
institution_repositorystringCheck against institution repository
no_of_submissionsintegerNumber of papers submitted in this folder
phrasesobjectUp to 15 excluded phrases (p1–p15), null if unused
email_notificationsstringEmail alerts on submission completion
exclude_thresholdintegerMinimum word count to exclude a source
folders.page — Pagination
FieldTypeDescription
sizeintegerResults per page
totalElementsintegerTotal number of folders
totalPagesintegerTotal number of pages
numberintegerCurrent page index (0-based)
{
  "grammar_subscription": "YES",
  "translation": "no",
  "in_flag": false,
  "folders": {
    "content": [
      {
        "folder_id": 100201,
        "folder_name": "Research Papers Q1",
        "mail_id": "john.doe@university.edu",
        "created_date": "2026-01-10 09:00:00",
        "end_date": "2026-12-31 00:00:00",
        "small_sources": "NO",
        "ex_references": "NO",
        "ex_quotes": "NO",
        "grammar": "NO",
        "ex_phrases": "NO",
        "db_studentpaper": "YES",
        "db_publications": "YES",
        "db_internet": "YES",
        "institution_repository": "YES",
        "no_of_submissions": 5,
        "phrases": { "pId": 100001, "p1": null /* p2–p15 null */ },
        "email_notifications": "NO",
        "exclude_threshold": 14
      }
    ],
    "page": {
      "size": 24,
      "totalElements": 5,
      "totalPages": 1,
      "number": 0
    }
  }
}
💡 Use totalPages to paginate. Increment page from 0 up to totalPages - 1.
POST /pro/folder Create folder

Creates a new assignment folder with plagiarism check configuration. All boolean fields accept "YES" or "NO".

Headers
Authorization: Bearer <token>
Content-Type:  application/json
Request Body · application/json
FieldTypeDescription
folder_namestringDisplay name for the folder
exclude_referencestringExclude references section from check
exclude_quotesstringExclude quoted text from similarity
exclude_small_sourcesstringIgnore small matching sources
grammar_checkstringEnable grammar analysis
exclude_phrasesstringExclude specific phrases from matching
db_studentpaperstringCheck against student paper database
db_publicationsstringCheck against publications database
db_internetstringCheck against internet sources
institution_repositorystringCheck against institution repository
email_notificationsstringSend email on completion
exclude_thresholdintegerMinimum word count to exclude a source
{
  "folder_name":           "Research Papers Q2",
  "exclude_reference":     "NO",
  "exclude_quotes":        "NO",
  "exclude_small_sources": "NO",
  "grammar_check":         "NO",
  "exclude_phrases":       "NO",
  "db_studentpaper":       "YES",
  "db_publications":       "YES",
  "db_internet":           "YES",
  "institution_repository":"YES",
  "email_notifications":   "NO",
  "exclude_threshold":     14
}
201 Created
Response Fields
FieldTypeDescription
statusintegerHTTP status code
messagestringHuman-readable result message
timeStampstringServer timestamp of the operation
_links.self.hrefstringURL of the newly created folder resource
{
  "status":    201,
  "message":   "Folder has been created successfully.",
  "timeStamp": "08-04-2026 08:16:08",
  "_links": {
    "self": {
      "href": "https://s1.drillbitplagiarismcheck.com/pro/folder/100201"
    }
  }
}
PUT /pro/folder/{folder_id} Update folder

Updates the name and configuration settings of an existing assignment folder.

Headers
Authorization: Bearer <token>
Content-Type:  application/json
Path Parameters
ParameterTypeRequiredDescription
folder_idintegerrequiredUnique identifier of the folder to update
Request Body · application/json
{
  "folder_name":           "Updated Folder Name",
  "exclude_reference":     "NO",
  "exclude_quotes":        "NO",
  "exclude_small_sources": "NO",
  "grammar_check":         "NO",
  "exclude_phrases":       "NO",
  "db_studentpaper":       "YES",
  "db_publications":       "YES",
  "db_internet":           "YES",
  "institution_repository":"YES",
  "email_notifications":   "NO",
  "exclude_threshold":     14
}
201 Created
Response Fields
FieldTypeDescription
statusintegerHTTP status code
messagestringHuman-readable result message
timeStampstringServer timestamp of the operation
{
  "status":    201,
  "message":   "Folder has been updated successfully.",
  "timeStamp": "08-04-2026 08:20:32"
}
DELETE /pro/folder/{folder_id} Delete folder

Permanently deletes an assignment folder and all its contents. This action is irreversible — all submissions and reports within the folder will be removed.

Headers
Authorization: Bearer <token>
Path Parameters
ParameterTypeRequiredDescription
folder_idintegerrequiredUnique identifier of the folder to delete
DELETE /pro/folder/100201
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
200 OK
Response Fields
FieldTypeDescription
statusintegerHTTP status code
messagestringHuman-readable result message
timeStampstringServer timestamp of the operation
{
  "status":    200,
  "message":   "Folder deleted successfully.",
  "timeStamp": "08-04-2026 08:18:07"
}
📄
Submissions
GET /pro/folder/{folder_id}/submissions List submissions

Returns a paginated list of paper submissions within a specific folder.

Headers
Authorization: Bearer <token>
Path Parameters
ParameterTypeRequiredDescription
folder_idintegerrequiredFolder to list submissions from
Query Parameters
ParameterTypeDefaultDescription
pageinteger0Page index (0-based)
sizeinteger24Results per page
fieldstringpaper_idField to sort by
orderBystringdescasc or desc
GET /pro/folder/100201/submissions?page=0&size=24&field=paper_id&orderBy=desc
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
200 OK
Submission Object Fields
FieldTypeDescription
paper_idintegerUnique paper identifier
folder_idintegerParent folder identifier
folder_namestringParent folder display name
namestringSubmitter's name
mail_idstringSubmitter's email
titlestringDocument title
date_upstringUpload timestamp
percentstringSimilarity percentage
total_charstringTotal characters in document
total_wordsstringTotal word count
total_pagesstringTotal page count
file_lengthstringFile size (e.g. "17 Kb")
d_keystringReport download key / token
statusstringSubmission status (active)
original_file_namestringOriginal uploaded filename
languagestringDetected document language
document_typestringDocument category (e.g. Assignment, Article)
grammarstringGrammar score (0–100) or "--" if not checked
aistringAI content percentage or "--" if not checked
og_percentstringOriginal similarity percentage before exclusions
ai_supintegerAI detection supported flag (1 = yes)
flagintegerError flag (0 = no error, 1 = error)
{
  "_embedded": {
    "submissionsDTOList": [
      {
        "paper_id":           200101,
        "folder_id":          100201,
        "folder_name":        "Research Papers Q1",
        "name":               "Jane Smith",
        "mail_id":            "jane.smith@university.edu",
        "title":              "Machine Learning Overview",
        "date_up":            "2026-03-10 11:20:00",
        "percent":            "18",
        "total_char":         "5420",
        "total_words":        "890",
        "total_pages":        "3",
        "file_length":        "14 Kb",
        "d_key":              "ABCDE12345FGHIJ67890",
        "status":             "active",
        "original_file_name": "ml_overview.docx",
        "language":           "English",
        "document_type":      "Assignment",
        "grammar":            "85",
        "ai":                 "12",
        "og_percent":         "18",
        "ai_sup":             1,
        "flag":               0
      }
    ]
  },
  "page": {
    "size":          24,
    "totalElements": 3,
    "totalPages":    1,
    "number":        0
  }
}
GET /pro/folder/{folder_id}/submission/{paper_id} Get submission

Returns the full details of a single paper submission including analysis results.

Headers
Authorization: Bearer <token>
Path Parameters
ParameterTypeRequiredDescription
folder_idintegerrequiredFolder containing the paper
paper_idintegerrequiredUnique paper identifier
GET /pro/folder/100201/submission/200101
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
200 OK
Response Fields
FieldTypeDescription
paper_idintegerUnique paper identifier
folder_idintegerParent folder identifier
titlestringDocument title
percentstringSimilarity percentage
aistringAI content percentage
grammarstringGrammar score (0–100)
d_keystringReport download key / token
document_typestringDocument category
languagestringDetected document language
statusstringSubmission status
flagintegerError flag (0 = no error)
{
  "paper_id":           200101,
  "folder_id":          100201,
  "folder_name":        "Research Papers Q1",
  "name":               "Jane Smith",
  "mail_id":            "jane.smith@university.edu",
  "title":              "Machine Learning Overview",
  "date_up":            "2026-03-10 11:20:00",
  "percent":            "18",
  "total_char":         "5420",
  "total_words":        "890",
  "total_pages":        "3",
  "file_length":        "14 Kb",
  "d_key":              "ABCDE12345FGHIJ67890",
  "status":             "active",
  "original_file_name": "ml_overview.docx",
  "language":           "English",
  "document_type":      "Assignment",
  "grammar":            "85",
  "ai":                 "12",
  "og_percent":         "18",
  "ai_sup":             1,
  "flag":               0
}
POST /pro/folder/{folder_id}/submission Submit paper

Uploads a paper file to a folder for plagiarism analysis. Use multipart/form-data. Analysis runs asynchronously — results are delivered via webhook callback.

Headers
Authorization: Bearer <token>
Content-Type:  multipart/form-data
Path Parameters
ParameterTypeRequiredDescription
folder_idintegerrequiredTarget folder for the submission
Form Fields
FieldTypeRequiredDescription
filefilerequiredDocument file (PDF, DOCX, etc.)
namestringrequiredSubmitter's name
titlestringrequiredDocument title
POST /pro/folder/100201/submission
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
Content-Type:  multipart/form-data

file=@research_paper.pdf&name=Jane+Smith&title=ML+Overview
200 OK
Response Fields
FieldTypeDescription
statusintegerHTTP status code
messagestringUpload result message
timeStampstringServer timestamp of the upload
submissions.paper_idintegerNewly assigned paper identifier
submissions.d_keystringReport download key (available after analysis)
submissions.percentstring"--" while analysis is pending
submissions.to_pagesstringTotal pages in uploaded document
submissions.linksarrayHATEOAS links to self and parent submissions list
{
  "status":    200,
  "message":   "File uploaded successfully.",
  "timeStamp": "08-04-2026 08:39:10",
  "submissions": {
    "paper_id":   200102,
    "name":       "Jane Smith",
    "title":      "ML Overview",
    "date_up":    "2026-04-08 08:39:10",
    "percent":    "--",
    "to_pages":   "12",
    "file_length":"980 Kb",
    "d_key":      "ZFULUO1RBBXZCMDQNI7Y",
    "status":     "active",
    "ai":         "--",
    "grammar":    "--",
    "links": [
      { "rel": "self",        "href": "…/pro/folder/100201/submission/200102" },
      { "rel": "submissions", "href": "…/pro/folder/100201/submissions" }
    ]
  }
}
💡 Analysis runs asynchronously. Fields like percent, ai and grammar show "--" until complete. Results are pushed to your registered webhook callback.
DELETE /pro/folder/{folder_id}/submissions?paperId={paper_id} Delete paper

Permanently removes a submitted paper from a folder. This action is irreversible.

Headers
Authorization: Bearer <token>
Path & Query Parameters
ParameterTypeRequiredDescription
folder_idintegerrequiredFolder containing the paper
paperIdintegerrequiredID of the paper to permanently delete
DELETE /pro/folder/100201/submissions?paperId=200101
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
200 OK
Response Fields
FieldTypeDescription
statusintegerHTTP status code
messagestringHuman-readable result message
timeStampstringServer timestamp of the operation
{
  "status":    200,
  "message":   "Submission(s) deleted successfully.",
  "timeStamp": "08-04-2026 08:42:59"
}
🔔
Webhooks

Callback-Based — No Polling Required

DrillBit processes submissions asynchronously (typically 10–15 minutes). Once analysis is complete, DrillBit sends a PUT request to your registered callback endpoint with full results. Contact support@drillbit.com to register your callback URL.

PUT {your_callback_endpoint} Analysis complete callback

When plagiarism analysis is complete, DrillBit sends a PUT request to your registered callback URL. Your endpoint must accept this payload and return 200 OK.

Workflow
① Upload file
② DrillBit processes
(10–15 min)
③ PUT callback sent
to your endpoint
Callback Payload Fields
FieldTypeDescription
paper_idintegerUnique identifier for the processed document
similaritystringSimilarity percentage (e.g. "23%")
download_urlstringURL to download the similarity report
flagintegerError flag — 1 = error, 0 = no error
PUT https://partner-api.example.com/drillbit/callback
Content-Type: application/json

{
  "paper_id":       200101,
  "similarity":     "18%",
  "download_url":   "https://s1.drillbitplagiarismcheck.com/reports/200101",
  "flag":           0
 }
Expected Response from Your Endpoint
Status CodeMeaning
200 OKPayload received — DrillBit considers delivery complete
4XX / 5XXError — DrillBit will treat the callback as failed
💡 Your endpoint must respond with 200 OK within a reasonable timeout. No specific response body is required.
📊
Reports
GET /analysis-gateway/api/download2/{paper_id}/{report_token} Similarity report

Downloads the full plagiarism similarity report for a submitted paper. Returns a PDF file as a binary stream.

Headers
Authorization: Bearer <token>
Path Parameters
ParameterTypeRequiredDescription
paper_idintegerrequiredUnique paper identifier
report_tokenstringrequiredSecure token (d_key) returned with the submission
GET /analysis-gateway/api/download2/200101/ABCDE12345FGHIJ67890
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
200 OK
PDF binary stream — similarity report
💡 The response is a raw PDF file. Set Content-Disposition: attachment on your client to trigger a download, or pipe the stream directly to a file.
GET /analysis-gateway/api/ai/download2/{paper_id}/{report_token} AI report

Downloads the AI-generated content detection report PDF. Identifies sections potentially written by AI tools.

Headers
Authorization: Bearer <token>
Path Parameters
ParameterTypeRequiredDescription
paper_idintegerrequiredUnique paper identifier
report_tokenstringrequiredSecure token (d_key) returned with the submission
GET /analysis-gateway/api/ai/download2/200101/ABCDE12345FGHIJ67890
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
200 OK
PDF binary stream — AI detection report
💡 The response is a raw PDF file. Pipe the binary stream to a file or trigger a browser download using Content-Disposition: attachment.
GET /analysis-gateway/api/download/summary/{paper_id}/{report_token} Summary report

Downloads a concise summary report PDF with key plagiarism metrics and match percentages.

Headers
Authorization: Bearer <token>
Path Parameters
ParameterTypeRequiredDescription
paper_idintegerrequiredUnique paper identifier
report_tokenstringrequiredSecure token (d_key) returned with the submission
GET /analysis-gateway/api/download/summary/200101/ABCDE12345FGHIJ67890
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
200 OK
PDF binary stream — summary report
💡 The response is a raw PDF file. Pipe the binary stream to a file or trigger a browser download.
GET /analysis-gateway/api/quality/download/{paper_id} Grammar report

Downloads the grammar quality report PDF for a submitted paper. Returns a detailed analysis of grammatical errors, style issues, and writing quality metrics.

Headers
Authorization: Bearer <token>
Path Parameters
ParameterTypeRequiredDescription
paper_idintegerrequiredUnique paper identifier returned on submission
GET /analysis-gateway/api/quality/download/200101
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
200 OK
PDF binary stream — grammar quality report
💡 Only the paper_id is required — no report_token needed for grammar reports.
⚠️
Error Codes
Status CodeErrorDescriptionCommon Cause
200 OKSuccessRequest completed successfully.
400 Bad RequestBad RequestThe request was malformed or missing required fields.Missing payload fields, wrong content type
401 UnauthorizedUnauthorizedAuthentication token is missing, expired, or invalid.Missing or expired JWT token
403 ForbiddenForbiddenThe user does not have permission to access this resource.Accessing another user's folder or paper
404 Not FoundNot FoundThe requested resource does not exist.Invalid folder_id, paper_id, or report_token
409 ConflictConflictThe request conflicts with the current state of the server.Duplicate submission or folder name
413 Payload Too LargePayload Too LargeThe uploaded file exceeds the maximum allowed size.File too large for single upload
422 UnprocessableUnprocessable EntityRequest was well-formed but contains semantic errors.Invalid field values or unsupported file type
429 Too Many RequestsRate LimitedToo many requests sent in a short period.Exceeded API rate limit
500 Server ErrorInternal Server ErrorAn unexpected error occurred on the DrillBit server.Contact support if this persists
503 UnavailableService UnavailableThe server is temporarily unable to handle requests.Maintenance or high server load
💡 All error responses include a JSON body with an error or message field. For persistent 5XX errors, contact support@drillbit.com.

That's all for Folder Management

Explore other DrillBit API products — Classroom Management and LMS Integration.

Back to all products