Developer API

Code Plagiarism
Detection API

Build plagiarism detection into your apps. Check code against 20+ billion sources.

const response = await fetch('https://codequiry.com/api/v1/check', { method: 'POST', headers: { 'apikey': 'YOUR_API_KEY' }, body: formData }); // Check created!
CHECK STATUS

Get Check Status & Monitor Progress

Monitor your plagiarism check progress and retrieve detailed results. Use this endpoint to check if your analysis is complete, track processing status, and get plagiarism scores for all submissions when the check finishes.

API Endpoint
POST https://codequiry.com/api/v1/check/get

How Status Checking Works

This endpoint provides complete, real-time information about your check, including its current processing status, all uploaded submissions, and their plagiarism scores (when analysis is complete). It's perfect for building progress indicators, polling for completion, or retrieving final results.

Real-time Monitoring: Poll this endpoint every 15-30 seconds to track analysis progress. When status_id changes to 4 (completed), results are ready to retrieve.
What You'll Get
Check Metadata

Current status, creation time, and processing state of your plagiarism check

All Submissions

Complete list of uploaded files with individual status and metadata

Plagiarism Scores

Similarity percentages for each submission (when analysis completes)

Status Details

Human-readable status messages and timestamp information for tracking

Request Parameters

Send a simple request with your check ID to retrieve the current status and all submission data.

Parameter Type Required Description
check_id Integer Required ID of the check to retrieve status for (from create check response)
Example Request
		curl -X POST \
  'https://codequiry.com/api/v1/check/get?check_id=2810' \
  -H 'Accept: application/json' \
  -H 'apikey:  YOUR_API_KEY_HERE '
		
cURL Command
Note: Replace 2810 with your actual check ID from the create check response.
Example Response
		{
    "check": {
        "id": 2821,
        "name": "Java Assignment Check",
        "created_at": "2024-01-15 15:54:15",
        "updated_at": "2024-01-15 16:02:29",
        "status_id": 4,
        "job_id": 8847
    },
    "status": "Checks completed",
    "submission_count": 3,
    "submissions": [
        {
            "id": 14587,
            "filename": "student1_assignment",
            "status_id": 4,
            "created_at": "2024-01-15 15:55:23",
            "updated_at": "2024-01-15 16:02:29",
            "result1": "0.00",
            "result2": "0.00",
            "result3": "0.00",
            "total_result": "48.65",
            "assignmentstatuses": {
                "id": 4,
                "status": "Checks completed",
                "icon": "icon dripicons-checkmark text-white",
                "color": "success",
                "created_at": null,
                "updated_at": null
            }
        },
        {
            "id": 14588,
            "filename": "student2_assignment",
            "status_id": 4,
            "created_at": "2024-01-15 15:55:23",
            "updated_at": "2024-01-15 16:02:29",
            "result1": "0.00",
            "result2": "0.00",
            "result3": "0.00",
            "total_result": "0.00",
            "assignmentstatuses": {
                "id": 4,
                "status": "Checks completed",
                "icon": "icon dripicons-checkmark text-white",
                "color": "success",
                "created_at": null,
                "updated_at": null
            }
        },
        {
            "id": 14589,
            "filename": "student3_assignment",
            "status_id": 4,
            "created_at": "2024-01-15 15:55:23",
            "updated_at": "2024-01-15 16:02:29",
            "result1": "0.00",
            "result2": "0.00",
            "result3": "0.00",
            "total_result": "48.65",
            "assignmentstatuses": {
                "id": 4,
                "status": "Checks completed",
                "icon": "icon dripicons-checkmark text-white",
                "color": "success",
                "created_at": null,
                "updated_at": null
            }
        }
    ]
}
		
JSON Response
Understanding the Response
  • check.status_id — Current processing status (see status reference below)
  • status — Human-readable status description for display in your UI
  • submission_count — Total number of files uploaded to this check
  • submissions — Array of all uploaded files with their individual scores
  • total_result — Highest similarity score found for each submission
  • job_id — Internal processing ID (0 = not started, >0 = processing/completed)

Check Status Reference

The status_id field indicates the current state of your plagiarism check. Use these values to build progress indicators and determine when results are ready:

Status 1: New Assignment

Just Created

Check has been created but no files have been uploaded yet

Action: Upload files to this check

Status 2: Ready for Checking

Files Uploaded

Files have been uploaded and the check is ready to start analysis

Action: Start the plagiarism analysis

Status 3: Failed Submissions

Processing Error

One or more submissions failed during processing

Action: Review failed submissions and re-upload if needed

Status 4: All Submissions Passed

Completed Successfully

Analysis finished successfully—plagiarism scores and results are ready

Action: Retrieve detailed results and reports

Status 5: Suspicious Submissions

Flagged for Review

Analysis completed and suspicious similarities were detected in submissions

Action: Review flagged submissions for potential plagiarism

Status 6: Checking in Progress

Analysis In Progress

Currently analyzing code for plagiarism—results not yet available

Action: Poll this endpoint every 15-30 seconds

Status 7: Queued

Waiting for Server Pickup

Check is queued and waiting for a server to begin processing

Action: Poll this endpoint every 15-30 seconds

Best Practices for Status Polling

Polling Frequency
  • Poll every 15-30 seconds during processing
  • Implement exponential backoff for long checks
  • Stop polling when status_id reaches 3, 4, or 5
  • Set maximum polling duration (10-15 minutes)
Implementation
  • Use async/await or promises for cleaner code
  • Handle network errors gracefully
  • Show progress indicators to users
  • Cache results once completed
User Experience
  • Display estimated completion time
  • Show submission count being processed
  • Notify users when results are ready
  • Provide option to view partial results
Performance
  • Don't poll faster than necessary
  • Use webhooks for large-scale operations
  • Cache check metadata between polls
  • Batch multiple check statuses if needed

Error Responses

Invalid Check ID (422 Unprocessable Entity)
        {
    "error": "Invalid check_id provided"
}
        
Error Response
Common Issue: Verify the check_id exists and is associated with your API key. Check IDs from other accounts won't be accessible.