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!
RESULTS OVERVIEW

Plagiarism Results Overview

Get a comprehensive overview of your completed plagiarism check results. This endpoint provides summary data, peer comparison scores, and visualization-ready data for building dashboards and reports.

Endpoint

POST https://codequiry.com/api/v1/check/overview

Overview Features

The overview endpoint gives you a bird's-eye view of your plagiarism check results, perfect for dashboards, reports, and quick analysis. It focuses on peer-to-peer comparisons between your uploaded submissions.

Peer Comparison Focus: This overview shows similarity scores between uploaded files (peer comparison). For database and web results, use the detailed results endpoint.
What You'll Get
  • Summary Dashboard Data: Ready-to-use data for charts and visualizations
  • Submission List: All uploaded files with their highest similarity scores
  • Peer Comparisons: Detailed comparison matrix between submissions
  • Chart Data: Pre-formatted data for bar charts and graphs
  • Dashboard Link: Direct URL to view results in Codequiry dashboard

Request Parameters

Simple request requiring only your completed check ID to retrieve the overview data.

Parameter Type Required Description
check_id Integer Required ID of completed check to get overview for
Request Examples
JSON Response
                curl -X POST \
  'https://codequiry.com/api/v1/check/overview?check_id=2810' \
  -H 'Accept: application/json' \
  -H 'apikey:  YOUR_API_KEY_HERE '
                
JSON Format
CSV Export
                curl -X POST \
  'https://codequiry.com/api/v1/check/overviewCSV?check_id=2810' \
  -H 'Accept: text/csv' \
  -H 'apikey:  YOUR_API_KEY_HERE '
                
CSV Format
JSON Response
        {
    "overviewURL": "https://dashboard.codequiry.com/course/api/assignment/2810/overview",
    "submissions": [
        {
            "id": 14587,
            "filename": "student1_assignment",
            "status_id": 4,
            "created_at": "2024-01-15 14:35:22",
            "updated_at": "2024-01-15 14:45:18",
            "result1": "12.50",
            "result2": "8.75",
            "result3": "15.20",
            "total_result": "85.45",
            "submissionresults": [
                {
                    "id": 463587,
                    "submission_id": 14587,
                    "submission_id_compared": 14588,
                    "score": "23.80",
                    "created_at": null,
                    "updated_at": null
                },
                {
                    "id": 463588,
                    "submission_id": 14587,
                    "submission_id_compared": 14589,
                    "score": "85.45",
                    "created_at": null,
                    "updated_at": null
                }
            ]
        },
        {
            "id": 14588,
            "filename": "student2_assignment",
            "status_id": 4,
            "created_at": "2024-01-15 14:35:22",
            "updated_at": "2024-01-15 14:45:18",
            "result1": "5.25",
            "result2": "3.80",
            "result3": "7.10",
            "total_result": "23.80",
            "submissionresults": [
                {
                    "id": 463589,
                    "submission_id": 14588,
                    "submission_id_compared": 14589,
                    "score": "12.30",
                    "created_at": null,
                    "updated_at": null
                }
            ]
        }
    ],
    "bardata": [
        {
            "submission": "student1_assignment",
            "score": "85.45"
        },
        {
            "submission": "student2_assignment",
            "score": "23.80"
        }
    ]
}
        
JSON Response
Testing Note: This endpoint requires a completed check with results. The check must have status_id = 4 (completed).

Response Data Structure

Main Response Fields
Field Type Description
overviewURL String Direct link to view results in Codequiry dashboard
submissions Array List of all submissions with their scores and comparisons
bardata Array Simplified data for creating charts (filename + highest score)
Submission Object Fields
Field Description
id Unique submission identifier
filename Original filename (without .zip extension)
total_result Highest similarity score found for this submission
submissionresults Array of peer comparisons showing which submissions were compared

Understanding Similarity Scores

Low Similarity (0-30%)

Acceptable similarity levels. Code appears original with minimal matching patterns. Likely original work.

Medium Similarity (30-70%)

Moderate similarity detected. Requires manual review to determine cause. Review recommended.

High Similarity (70%+)

Significant similarity indicating potential plagiarism or code sharing. Investigation needed.

Data Visualization Examples

Using the bardata for Charts

The bardata array is perfectly formatted for creating visualizations:

JavaScript Chart.js Example
                // Extract labels and data from bardata
const labels = data.bardata.map(item => item.submission);
const scores = data.bardata.map(item => parseFloat(item.score));

// Create bar chart
new Chart(ctx, {
    type: 'bar',
    data: {
        labels: labels,
        datasets: [{
            label: 'Similarity Score (%)',
            data: scores,
            backgroundColor: scores.map(score =>
                score > 70 ? '#dc3545' :
                score > 30 ? '#ffc107' : '#28a745'
            )
        }]
    }
});
                
Chart.js
Python Visualization
                import matplotlib.pyplot as plt

# Extract data from API response
submissions = [item['submission'] for item in bardata]
scores = [float(item['score']) for item in bardata]

# Create color-coded bar chart
colors = ['red' if score > 70 else 'orange' if score > 30 else 'green' for score in scores]

plt.figure(figsize=(10, 6))
plt.bar(submissions, scores, color=colors)
plt.ylabel('Similarity Score (%)')
plt.title('Plagiarism Detection Results')
plt.xticks(rotation=45)
plt.show()
                
Python

Data Analysis Examples

The JSON response provides rich data that can be processed for various analytical purposes:

Processing Tip: Use the bardata array for creating similarity charts and the submissionresults for detailed statistics.
JavaScript Analysis Example
        // Analyze overview data for insights
function analyzeResults(overview) {
    const submissions = overview.submissions;

    // Calculate risk distribution
    const riskDistribution = {
        high: submissions.filter(s => parseFloat(s.total_result) > 70).length,
        medium: submissions.filter(s => parseFloat(s.total_result) > 30 && parseFloat(s.total_result) <= 70).length,
        low: submissions.filter(s => parseFloat(s.total_result) <= 30).length
    };

    // Find most similar pair
    let maxSimilarity = 0;
    let similarPair = null;

    overview.bardata.forEach(comparison => {
        if (comparison.similarity > maxSimilarity) {
            maxSimilarity = comparison.similarity;
            similarPair = comparison;
        }
    });

    return { riskDistribution, similarPair, maxSimilarity };
}
        
Analysis Function

Error Responses & Special Cases

Check Not Completed (422 Unprocessable Entity)
        {
    "error": "The check has not been completed."
}
        
Error Response
Special Score Values
Score: -0.1

Error parsing files. Possible causes: corrupted ZIP, no parseable files, encoding issues.

Score: 0.00

No similarity detected. Either completely original or no common patterns found.

Best Practices

Dashboard Integration

Use bardata for quick visualizations. Sort submissions by total_result. Color-code by similarity thresholds. Link to overviewURL for details.

Data Processing

Cache results to avoid repeated calls. Process JSON data in your preferred format. Filter by score thresholds. Check for -0.1 error scores.

Investigation

Focus on scores above 30%. Check submissionresults for peer matches. Use detailed results for deeper analysis. Consider context and assignment type.