We stand with our families and colleagues in Ukraine. Help Ukraine win

PlagiarismCheck.org API

Introduction

The plagiarism checker API allows one to implement an efficient similarity detector in a convenient environment. Follow the instructions to check texts for plagiarism in your application, and visit our GitHub profile for more examples.

You need to use an API token to connect the plagiarism detector to your app. Please select the API type first to get the plagiarism check API token.

There are two types of API:

  • Single-user, where all requests for checking text are coming from one user.
  • Multiple-users, where texts can be sent from multiple users and compared against each other. If there is a match, the name of a user who submitted similar text earlier will be displayed.

Find more examples in our GitHub repository and use the Swagger page for API plagiarism checker specification.

Click below for instructions on implementing Check Plagiarism API for single or multiple users.

Single userMultiple users

Sequence

To check a text for plagiarism in your application, you MUST:

  1. Receive an authorization API token.
  2. Send the text by using the API method and receive an identification number of the text.
  3. Wait until we check the text.
  4. Check the status of the text by using the ID from 2 and the API method. If the text is not checked, go to step 3 with timeout.
  5. Receive a report by using the text ID from 2 and the API method.
  6. Render the json report in your application.

Authorization

For authorization, you MUST have a registered account with PlagiarismCheck.org and a special API token from our support team.

To receive an API token, you need to contact our Support. Also, you can sign in and copy the actual API token below.

API returns 401 Unauthorized if you provide an invalid token. You MUST send your token in the header with the name X-API-TOKEN.

Example of an HTTP header:

X-API-TOKEN: vsMKX3179tjK3CqvhE228IDeMV-eBBER

Where vsMKX3179tjK3CqvhE228IDeMV-eBBER is an example of the api token.

Send the request

The request has parameters:

  • language - language of the text. At the moment, we support only one value: en.
  • text - content of the text you want to check. It MUST NOT be shorter than 80 characters.

The Request:

curl "https://plagiarismcheck.org/api/v1/text"  \
 --request POST \
 --header  "X-API-TOKEN: cUwhcQU88K2cYn47aPCg-snWoSNNJwyW" \
 --data    "language=en" \
 --data    "text=an application programming interface (API) is a set of subroutine definitions, protocols, and tools for building application software. In general terms, it is a set of clearly defined methods of communication between various software components. A good API makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer. An API may be for a web-based system, operating system, database system, computer hardware or software library. An API specification can take many forms, but often includes specifications for routines, data structures, object classes, variables or remote calls. POSIX, Microsoft Windows API, the C++ Standard Template Library and Java APIs are examples of different forms of APIs. Documentation for the API is usually provided to facilitate usage"

The Response:

{
  "success": true,
  "data": {
    "text": {
      "id": 2,
      "filename": "an_application",
      "created_at": "1516279363000",
      "updated_at": "1516279364000",
      "submitted_at": "1516279364000",
      "is_deleted": false,
      "deleted_at": null,
      "state": 3,
      "language": "en",
      "pages": 1,
      "group_id": null,
      "user_id": 9,
      "report_id": null
    },
    "charged": 0,
    "bonus_charged": 1
  }
}
            

Check the status

This method receives an ID of the text and returns detailed information about the text. Here is a table with statuses:

IDNameDescription
2STATE_STOREDText has been stored and waiting for a check.
3STATE_SUBMITTEDText has been stored and waiting for a check.
4STATE_FAILEDText has not been checked. An error happened.
5STATE_CHECKEDText has been successfully checked and you can receive the report.

In example: "2" is the ID of text

Request:

curl "https://plagiarismcheck.org/api/v1/text/2"  \
-X GET \
-H "X-API-TOKEN: cUwhcQU88K2cYn47aPCg-snWoSNNJwyW"

Response:

{
  "data": {
    "id": 2,
    "filename": "an_application",
    "created_at": "1516279363000",
    "updated_at": "1516279369000",
    "submitted_at": "1516279364000",
    "is_deleted": false,
    "deleted_at": null,
    "state": 5,
    "language": "en",
    "pages": 1,
    "group_id": null,
    "creator": {
      "id": 9,
      "name": "Test",
      "email": "test@example.com",
      "created_at": "1516279118000",
      "updated_at": "1516279118000",
      "is_blocked": false,
      "allowed_languages": [
        "en"
      ],
      "balance": {
        "balance": 0,
        "bonus": 596,
        "hold": 0,
        "hold_bonus": 0
      },
      "avatar": null
    },
    "report": {
      "id": 1,
      "created_at": "1516279369000",
      "source_count": 0,
      "percent": "0.00"
    }
  }
}

Get the Report

This method receives an ID of the text and returns a detailed report. The text MUST be with status 5 (STATE_CHECKED). The report contains nodes, sources, and other information. Each node has text, a start position, an end position, and sources where the text was found. Each source has: content-type, percentage of plagiarism, and a URL. In example "2" is The ID of the text.

Request:

curl "https://plagiarismcheck.org/api/v1/text/report/2"  \
-X GET \
-H "X-API-TOKEN: cUwhcQU88K2cYn47aPCg-snWoSNNJwyW" 

Response:

{
  "data": {
    "report": {
      "id": 14,
      "created_at": "1513617036000",
      "source_count": 3,
      "percent": "100.00",  //percent of plagiarism
      "text_id": 14 // ID of check
    },
    "report_data": {
      "version": "1.1",
      "length": 2435,
      "created_at": "2017-12-18 11:10:35",
      "nodes": [
        {
          "enabled": true,
          "start": 0,
          "end": 205,
          "text": "Because of its location on the crossroads between Europe and Asia, and its proximity to lucrative east-west trade routes, throughout history Tbilisi was a point of contention between various global powers. ",
          "sources": [
            0,
            1,
            2
          ],
          "sources_improved": [
            {
              "source": 0,
              "cos": 1
            },
            {
              "source": 1,
              "cos": 1
            },
            {
              "source": 2,
              "cos": 0.66
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            0,
            1,
            2
          ]
        },
        {
          "enabled": true,
          "start": 206,
          "end": 327,
          "text": "The city\u0027s location to this day ensures its position as an important transit route for various energy and trade projects. ",
          "sources": [
            0,
            1
          ],
          "sources_improved": [
            {
              "source": 0,
              "cos": 1
            },
            {
              "source": 1,
              "cos": 1
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            0,
            1
          ]
        },
        {
          "enabled": true,
          "start": 328,
          "end": 486,
          "text": "Tbilisi\u0027s diverse history is reflected in its architecture, which is a mix of medieval, neoclassical, Beaux Arts, Art Nouveau, Stalinist and Modern structures.",
          "sources": [
            0,
            1
          ],
          "sources_improved": [
            {
              "source": 0,
              "cos": 1
            },
            {
              "source": 1,
              "cos": 0.7
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            0,
            1
          ]
        },
        {
          "enabled": true,
          "start": 487,
          "end": 692,
          "text": "Because of its location on the crossroads between Europe and Asia, and its proximity to lucrative east-west trade routes, throughout history Tbilisi was a point of contention between various global powers. ",
          "sources": [
            2
          ],
          "sources_improved": [
            {
              "source": 2,
              "cos": 0.66
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            2
          ]
        },
        {
          "enabled": true,
          "start": 693,
          "end": 814,
          "text": "The city\u0027s location to this day ensures its position as an important transit route for various energy and trade projects. ",
          "sources": [
            0,
            1
          ],
          "sources_improved": [
            {
              "source": 0,
              "cos": 1
            },
            {
              "source": 1,
              "cos": 1
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            0,
            1
          ]
        },
        {
          "enabled": true,
          "start": 815,
          "end": 973,
          "text": "Tbilisi\u0027s diverse history is reflected in its architecture, which is a mix of medieval, neoclassical, Beaux Arts, Art Nouveau, Stalinist and Modern structures.",
          "sources": [
            0,
            1
          ],
          "sources_improved": [
            {
              "source": 0,
              "cos": 1
            },
            {
              "source": 1,
              "cos": 0.7
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            0,
            1
          ]
        },
        {
          "enabled": true,
          "start": 974,
          "end": 1179,
          "text": "Because of its location on the crossroads between Europe and Asia, and its proximity to lucrative east-west trade routes, throughout history Tbilisi was a point of contention between various global powers. ",
          "sources": [
            2
          ],
          "sources_improved": [
            {
              "source": 2,
              "cos": 0.66
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            2
          ]
        },
        {
          "enabled": true,
          "start": 1180,
          "end": 1301,
          "text": "The city\u0027s location to this day ensures its position as an important transit route for various energy and trade projects. ",
          "sources": [
            0,
            1
          ],
          "sources_improved": [
            {
              "source": 0,
              "cos": 1
            },
            {
              "source": 1,
              "cos": 1
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            0,
            1
          ]
        },
        {
          "enabled": true,
          "start": 1302,
          "end": 1460,
          "text": "Tbilisi\u0027s diverse history is reflected in its architecture, which is a mix of medieval, neoclassical, Beaux Arts, Art Nouveau, Stalinist and Modern structures.",
          "sources": [
            0,
            1
          ],
          "sources_improved": [
            {
              "source": 0,
              "cos": 1
            },
            {
              "source": 1,
              "cos": 0.7
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            0,
            1
          ]
        },
        {
          "enabled": true,
          "start": 1461,
          "end": 1666,
          "text": "Because of its location on the crossroads between Europe and Asia, and its proximity to lucrative east-west trade routes, throughout history Tbilisi was a point of contention between various global powers. ",
          "sources": [
            2
          ],
          "sources_improved": [
            {
              "source": 2,
              "cos": 0.66
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            2
          ]
        },
        {
          "enabled": true,
          "start": 1667,
          "end": 1788,
          "text": "The city\u0027s location to this day ensures its position as an important transit route for various energy and trade projects. ",
          "sources": [
            0,
            1
          ],
          "sources_improved": [
            {
              "source": 0,
              "cos": 1
            },
            {
              "source": 1,
              "cos": 1
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            0,
            1
          ]
        },
        {
          "enabled": true,
          "start": 1789,
          "end": 1947,
          "text": "Tbilisi\u0027s diverse history is reflected in its architecture, which is a mix of medieval, neoclassical, Beaux Arts, Art Nouveau, Stalinist and Modern structures.",
          "sources": [
            0,
            1
          ],
          "sources_improved": [
            {
              "source": 0,
              "cos": 1
            },
            {
              "source": 1,
              "cos": 0.7
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            0,
            1
          ]
        },
        {
          "enabled": true,
          "start": 1948,
          "end": 2153,
          "text": "Because of its location on the crossroads between Europe and Asia, and its proximity to lucrative east-west trade routes, throughout history Tbilisi was a point of contention between various global powers. ",
          "sources": [
            2
          ],
          "sources_improved": [
            {
              "source": 2,
              "cos": 0.66
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            2
          ]
        },
        {
          "enabled": true,
          "start": 2154,
          "end": 2275,
          "text": "The city\u0027s location to this day ensures its position as an important transit route for various energy and trade projects. ",
          "sources": [
            0,
            1
          ],
          "sources_improved": [
            {
              "source": 0,
              "cos": 1
            },
            {
              "source": 1,
              "cos": 1
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            0,
            1
          ]
        },
        {
          "enabled": true,
          "start": 2276,
          "end": 2434,
          "text": "Tbilisi\u0027s diverse history is reflected in its architecture, which is a mix of medieval, neoclassical, Beaux Arts, Art Nouveau, Stalinist and Modern structures.",
          "sources": [
            0,
            1
          ],
          "sources_improved": [
            {
              "source": 0,
              "cos": 1
            },
            {
              "source": 1,
              "cos": 0.7
            }
          ],
          "references": [],
          "headers": [],
          "quotes": [],
          "destinations_clusters": [
            0,
            1
          ]
        }
      ],
      "indexes": [
        {
          "id": 0,
          "db_id": 1,
          "name": "",
          "status": "success",
          "queries": 10,
          "type": "external"
        }
      ],
      "references": [],
      "header": [],
      "quotes": [],
      "sources": [
        {
          "dst_pos_success": true,
          "content_type": "text\/html",
          "index": 0,
          "source": "https:\/\/en.wikipedia.org\/wiki\/Tbilisi",
          "length": 1611,
          "percent": 66.16,
          "link": {
            "name": "en.wikipedia.org",
            "urls": [
              "https:\/\/en.wikipedia.org\/wiki\/Tbilisi"
            ]
          },
          "tf_idf": false,
          "plagiarism_length": 1611,
          "plagiarism_percent": 66.16
        },
        {
          "dst_pos_success": true,
          "content_type": "text\/html",
          "index": 0,
          "source": "https:\/\/www.youtube.com\/watch?v=YU-db2NKMtY",
          "length": 1611,
          "percent": 66.16,
          "link": {
            "name": "www.youtube.com",
            "urls": [
              "https:\/\/www.youtube.com\/watch?v=YU-db2NKMtY"
            ]
          },
          "tf_idf": false,
          "plagiarism_length": 1611,
          "plagiarism_percent": 66.16
        },
        {
          "dst_pos_success": true,
          "content_type": "text\/html",
          "index": 0,
          "source": "https:\/\/www.facebook.com\/New-Georgia-Travel-agency-306643492874270\/",
          "length": 1030,
          "percent": 42.3,
          "link": {
            "name": "www.facebook.com",
            "urls": [
              "https:\/\/www.facebook.com\/New-Georgia-Travel-agency-306643492874270\/"
            ]
          },
          "tf_idf": false,
          "plagiarism_length": 1030,
          "plagiarism_percent": 42.3
        }
      ],
      "sources_count": 3,
      "matched_length": 2435,
      "matched_percent": 100,
      "external_queries": 10,
      "destinations_clusters": [
        {
          "source": 0,
          "id": 0,
          "offsets": [
            {
              "start": 28510,
              "end": 28843,
              "cos": 1
            },
            {
              "start": 28844,
              "end": 28965,
              "cos": 1
            },
            {
              "start": 28966,
              "end": 29554,
              "cos": 1
            },
            {
              "start": 28844,
              "end": 28965,
              "cos": 1
            },
            {
              "start": 28966,
              "end": 29554,
              "cos": 1
            },
            {
              "start": 28844,
              "end": 28965,
              "cos": 1
            },
            {
              "start": 28966,
              "end": 29554,
              "cos": 1
            },
            {
              "start": 28844,
              "end": 28965,
              "cos": 1
            },
            {
              "start": 28966,
              "end": 29554,
              "cos": 1
            },
            {
              "start": 28844,
              "end": 28965,
              "cos": 1
            },
            {
              "start": 28966,
              "end": 29554,
              "cos": 1
            }
          ]
        },
        {
          "source": 1,
          "id": 1,
          "offsets": [
            {
              "start": 87684,
              "end": 87889,
              "cos": 1
            },
            {
              "start": 87890,
              "end": 88011,
              "cos": 1
            },
            {
              "start": 88012,
              "end": 88180,
              "cos": 0.7
            },
            {
              "start": 87890,
              "end": 88011,
              "cos": 1
            },
            {
              "start": 88012,
              "end": 88180,
              "cos": 0.7
            },
            {
              "start": 87890,
              "end": 88011,
              "cos": 1
            },
            {
              "start": 88012,
              "end": 88180,
              "cos": 0.7
            },
            {
              "start": 87890,
              "end": 88011,
              "cos": 1
            },
            {
              "start": 88012,
              "end": 88180,
              "cos": 0.7
            },
            {
              "start": 87890,
              "end": 88011,
              "cos": 1
            },
            {
              "start": 88012,
              "end": 88180,
              "cos": 0.7
            }
          ]
        },
        {
          "source": 2,
          "id": 2,
          "offsets": [
            {
              "start": 296896,
              "end": 297223,
              "cos": 0.66
            },
            {
              "start": 296896,
              "end": 297223,
              "cos": 0.66
            },
            {
              "start": 296896,
              "end": 297223,
              "cos": 0.66
            },
            {
              "start": 296896,
              "end": 297223,
              "cos": 0.66
            },
            {
              "start": 296896,
              "end": 297223,
              "cos": 0.66
            }
          ]
        }
      ]
    }
  }
}

Sequence

To check a text for plagiarism in your application, you MUST:

  1. Receive an authorization API token.
  2. Send the text by using the API method and receive an identification number of the text.
  3. Wait until we check the text.
  4. Check the status of the text by using the ID from 2 and the API method. If the text is not checked, go to step 3 with timeout.
  5. Receive a report by using the text ID from 2 and the API method.
  6. Render the json report in your application.

Authorization

For authorization, you MUST have a registered account with PlagiarismCheck.org and a special API token from our support team.

To receive an API token, you need to contact our Support. Also, you can sign in as owner and copy the actual API token below.

Send the request

The request has parameters:

  • author - Username (email) of an organization member. This member will be the author of the check.
  • group_token - the API token
  • text - The text to be checked. Also, you can send a file (doc, docx, pdf, txt, odt, rtf, odp, pptx, ppt) as shown in the example.
  • custom_author (optional) - name of an author if this author is not registered in your group account on plagiarismcheck.org. On the contrary, the author field is required, and this author will be able to find the checked text once they log in to their PlagiarismCheck account.

The Request:

curl "https://plagiarismcheck.org/api/org/text/check/"  \
 --request POST \
 --data    "group_token=G-HEfFiCHYWYx...." \
 --data    "author=example@example.com" \
 --data    "text=an application programming interface (API) is a set of subroutine definitions, protocols, and tools for building application software. In general terms, it is a set of clearly defined methods of communication between various software components. A good API makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer. An API may be for a web-based system, operating system, database system, computer hardware or software library. An API specification can take many forms, but often includes specifications for routines, data structures, object classes, variables or remote calls. POSIX, Microsoft Windows API, the C++ Standard Template Library and Java APIs are examples of different forms of APIs. Documentation for the API is usually provided to facilitate usage" \

The Response:

{
   "success":true,
   "data":{
      "id":14, // Check ID
      "filename":"an application",
      "created_at":"1643727469000",
      "updated_at":"1643727469000",
      "submitted_at":"1643727469000",
      "is_deleted":false,
      "deleted_at":null,
      "state":3,
      "language":"en",
      "pages":1,
      "words":127,
      "group_id":3,
      "custom_author":null,
      "user_id":24,
      "report_id":null,
      "integration_links":[
         {
            "id":11,
            "integration_id":null,
            "submission":null,
            "course_work":null,
            "assignment":null,
            "publishable":false
         }
      ]
   }
}
            

Check the status

This method receives the ID of the text and returns detailed information about the text. Here is a table with statuses:

IDNameDescription
2STATE_STOREDText has been stored and waiting for a check.
3STATE_SUBMITTEDText has been stored and waiting for a check.
4STATE_FAILEDText has not been checked. An error happened
5STATE_CHECKEDText has been successfully checked and you can receive the report.

In example: "14" is the ID of text

Request:

curl "https://plagiarismcheck.org/api/org/text/status/14/"  \
 --request POST \
 --data    "group_token=G-HEfFi..."

Response:

{
   "success":true,
   "data":{
      "id":14,  //Check ID
      "filename":"an application",
      "created_at":"1643727469000",
      "updated_at":"1643727471000",
      "submitted_at":"1643727469000",
      "is_deleted":false,
      "deleted_at":null,
      "state":5,
      "language":"en",
      "pages":1,
      "words":127,
      "group_id":3,
      "custom_author":null,
      "creator":{
         "id":24,
         "name":"Default User", //author name
         "email":"example@example.com", //author email
         "created_at":"1643307115000",
         "updated_at":"1643647307000",
         "is_blocked":false,
         "allowed_languages":[
            "en"
         ],
         "balance":{
            "balance":0,
            "bonus":397,
            "hold":0,
            "hold_bonus":0
         },
         "avatar":null,
         "sale_role":null
      },
      "report":{
         "id":13,
         "created_at":"1643727471000",
         "source_count":5,
         "percent":"28.57"  // Percent of plagiarism
      },
      "integration_links":[
         {
            "id":11,
            "integration_id":null,
            "submission":null,
            "course_work":null,
            "assignment":null,
            "publishable":false
         }
      ]
   }
}

Get the Report

This method receives an ID of the text and returns a detailed report. The text MUST be with status 5 (STATE_CHECKED). The report contains nodes, sources, and other information. Each node contains the text, the start position, the end position, and the sources where the text was found. Each source has the content type, percentage of plagiarism, and a URL. In the example "14" is The ID of the text.

Request:

curl "https://plagiarismcheck.org/api/org/text/report/14/"  \
 --request POST \
 --data    "group_token=G-HEfFiCHYWY..."
 

Response:

{
   "success":true,
   "data":{
      "report":{
         "id":13,
         "created_at":"1643727471000",
         "source_count":5,
         "percent":"28.57",
         "text_id":14
      },
      "report_data":{
         "version":"1.1",
         "length":637,
         "created_at":"2017-05-12 05:10:57",
         "nodes":[
            {
               "enabled":true,
               "start":0,
               "end":19,
               "text":"\nnon_matched_header\n",
               "sources":[

               ],
               "sources_improved":[

               ],
               "references":[

               ],
               "headers":[
                  0
               ],
               "quotes":[

               ],
               "destinations_clusters":[

               ]
            },
            {
               "enabled":true,
               "start":20,
               "end":34,
               "text":"matched_header\n",
               "sources":[
                  0
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":1
                  }
               ],
               "references":[

               ],
               "headers":[
                  0
               ],
               "quotes":[

               ],
               "destinations_clusters":[
                  0
               ]
            },
            {
               "enabled":true,
               "start":35,
               "end":53,
               "text":"non_matched_header\n",
               "sources":[

               ],
               "sources_improved":[

               ],
               "references":[

               ],
               "headers":[
                  0
               ],
               "quotes":[

               ],
               "destinations_clusters":[

               ]
            },
            {
               "enabled":true,
               "start":54,
               "end":74,
               "text":"\nnon_matched_content\n",
               "sources":[

               ],
               "sources_improved":[

               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[

               ]
            },
            {
               "enabled":true,
               "start":75,
               "end":90,
               "text":"matched_content\n",
               "sources":[
                  0
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":1
                  }
               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[
                  0
               ]
            },
            {
               "enabled":true,
               "start":91,
               "end":122,
               "text":"matched_content_with_paraphrase\n",
               "sources":[
                  0
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":0.65
                  }
               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[
                  0
               ]
            },
            {
               "enabled":true,
               "start":123,
               "end":138,
               "text":"matched_content\n",
               "sources":[
                  0
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":1
                  }
               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[
                  0
               ]
            },
            {
               "enabled":true,
               "start":139,
               "end":179,
               "text":"non_matched_content\n\nnon_matched_content\n",
               "sources":[

               ],
               "sources_improved":[

               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[

               ]
            },
            {
               "enabled":true,
               "start":180,
               "end":195,
               "text":"matched_content\n",
               "sources":[
                  0
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":1
                  }
               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[
                  0
               ]
            },
            {
               "enabled":true,
               "start":196,
               "end":233,
               "text":"matched_content_with_multiple_sources\n",
               "sources":[
                  0,
                  1
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":1
                  },
                  {
                     "source":1,
                     "cos":1
                  }
               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[
                  0,
                  1
               ]
            },
            {
               "enabled":true,
               "start":234,
               "end":334,
               "text":"matched_content_from_internal_db\nmatched_content_from_cache\nnon_matched_content\n\nnon_matched_content\n",
               "sources":[

               ],
               "sources_improved":[

               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[

               ]
            },
            {
               "enabled":true,
               "start":335,
               "end":350,
               "text":"matched_content\n",
               "sources":[
                  0
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":1
                  }
               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[
                  0
               ]
            },
            {
               "enabled":true,
               "start":351,
               "end":377,
               "text":"matched_content_with_quote\n",
               "sources":[
                  0
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":1
                  }
               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[
                  0
               ],
               "destinations_clusters":[
                  0
               ]
            },
            {
               "enabled":true,
               "start":378,
               "end":393,
               "text":"matched_content\n",
               "sources":[
                  0
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":1
                  }
               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[
                  0
               ]
            },
            {
               "enabled":true,
               "start":394,
               "end":413,
               "text":"non_matched_content\n",
               "sources":[

               ],
               "sources_improved":[

               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[

               ]
            },
            {
               "enabled":true,
               "start":414,
               "end":444,
               "text":"non_matched_content_with_quote\n",
               "sources":[

               ],
               "sources_improved":[

               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[
                  1
               ],
               "destinations_clusters":[

               ]
            },
            {
               "enabled":true,
               "start":445,
               "end":485,
               "text":"non_matched_content\n\nnon_matched_content\n",
               "sources":[

               ],
               "sources_improved":[

               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[

               ]
            },
            {
               "enabled":true,
               "start":486,
               "end":501,
               "text":"matched_content\n",
               "sources":[
                  0
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":1
                  }
               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[
                  0
               ]
            },
            {
               "enabled":true,
               "start":502,
               "end":532,
               "text":"matched_content_with_reference\n",
               "sources":[
                  0
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":1
                  }
               ],
               "references":[
                  0
               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[
                  0
               ]
            },
            {
               "enabled":true,
               "start":533,
               "end":548,
               "text":"matched_content\n",
               "sources":[
                  0
               ],
               "sources_improved":[
                  {
                     "source":0,
                     "cos":1
                  }
               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[
                  0
               ]
            },
            {
               "enabled":true,
               "start":549,
               "end":568,
               "text":"non_matched_content\n",
               "sources":[

               ],
               "sources_improved":[

               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[

               ]
            },
            {
               "enabled":true,
               "start":569,
               "end":603,
               "text":"non_matched_content_with_reference\n",
               "sources":[

               ],
               "sources_improved":[

               ],
               "references":[
                  1
               ],
               "headers":[

               ],
               "quotes":[

               ],
               "destinations_clusters":[

               ]
            },
            {
               "enabled":true,
               "start":604,
               "end":636,
               "sources":[

               ],
               "sources_improved":[

               ],
               "references":[

               ],
               "headers":[

               ],
               "quotes":[

               ],
               "text":"non_matched_content\n\nVERSION 1.4\n",
               "destinations_clusters":[

               ]
            }
         ],
         "indexes":[
            {
               "id":0,
               "db_id":1,
               "name":"",
               "status":"success",
               "queries":5,
               "type":"external"
            },
            {
               "id":1,
               "db_id":1,
               "name":"",
               "status":"success",
               "queries":7,
               "type":"external"
            },
            {
               "id":2,
               "db_id":2,
               "name":"",
               "status":"success",
               "queries":0,
               "type":"internal"
            },
            {
               "id":3,
               "db_id":3,
               "name":"",
               "status":"success",
               "queries":0,
               "type":"cache"
            }
         ],
         "references":[
            {
               "id":0,
               "length":31
            },
            {
               "id":1,
               "length":35
            }
         ],
         "header":[
            {
               "id":0,
               "length":54
            }
         ],
         "quotes":[
            {
               "id":0,
               "length":27
            },
            {
               "id":1,
               "length":31
            }
         ],
         "sources":[
            {
               "dst_pos_success":true,
               "content_type":"text\/plain",
               "index":0,
               "source":"http:\/\/searchengine.localhost\/resource\/first",
               "length":255,
               "percent":40.03,
               "link":{
                  "name":"searchengine.localhost",
                  "urls":[
                     "http:\/\/searchengine.localhost\/resource\/first"
                  ]
               },
               "tf_idf":false,
               "plagiarism_length":182,
               "plagiarism_percent":28.57
            },
            {
               "dst_pos_success":false,
               "content_type":"text\/plain",
               "index":0,
               "source":"http:\/\/searchengine.localhost\/resource\/second",
               "length":38,
               "percent":5.97,
               "link":{
                  "name":"searchengine.localhost",
                  "urls":[
                     "http:\/\/searchengine.localhost\/resource\/second"
                  ]
               },
               "tf_idf":false,
               "plagiarism_length":38,
               "plagiarism_percent":5.97
            },
            {
               "dst_pos_success":false,
               "content_type":"text\/plain",
               "index":1,
               "source":"http:\/\/another.searchengine.localhost\/some_url",
               "length":0,
               "percent":0,
               "link":{
                  "name":"another.searchengine.localhost",
                  "urls":[
                     "http:\/\/another.searchengine.localhost\/some_url"
                  ]
               },
               "tf_idf":false,
               "plagiarism_length":0,
               "plagiarism_percent":0
            },
            {
               "dst_pos_success":false,
               "content_type":"text\/plain",
               "index":2,
               "source":"7200207",
               "length":0,
               "percent":0,
               "link":{
                  "name":"7200207",
                  "urls":[
                     "7200207"
                  ]
               },
               "tf_idf":false,
               "plagiarism_length":0,
               "plagiarism_percent":0
            },
            {
               "dst_pos_success":false,
               "content_type":"text\/plain",
               "index":3,
               "source":"http:\/\/real.searchengine.localhost\/url\/to\/original\/resource",
               "length":0,
               "percent":0,
               "link":{
                  "name":"real.searchengine.localhost",
                  "urls":[
                     "http:\/\/real.searchengine.localhost\/url\/to\/original\/resource"
                  ]
               },
               "tf_idf":false,
               "plagiarism_length":0,
               "plagiarism_percent":0
            }
         ],
         "sources_count":5,
         "matched_length":182,
         "matched_percent":28.57,
         "external_queries":12,
         "destinations_clusters":[
            {
               "source":0,
               "id":0,
               "offsets":[
                  {
                     "start":20,
                     "end":34,
                     "cos":1
                  },
                  {
                     "start":75,
                     "end":90,
                     "cos":1
                  },
                  {
                     "start":91,
                     "end":122,
                     "cos":0.65
                  },
                  {
                     "start":123,
                     "end":138,
                     "cos":1
                  },
                  {
                     "start":180,
                     "end":233,
                     "cos":1
                  },
                  {
                     "start":335,
                     "end":393,
                     "cos":1
                  },
                  {
                     "start":486,
                     "end":548,
                     "cos":1
                  }
               ]
            },
            {
               "source":1,
               "id":1,
               "offsets":[
                  {
                     "start":196,
                     "end":233,
                     "cos":1
                  }
               ]
            },
            {
               "source":2,
               "id":2,
               "offsets":[

               ]
            },
            {
               "source":3,
               "id":3,
               "offsets":[

               ]
            },
            {
               "source":4,
               "id":4,
               "offsets":[

               ]
            }
         ]
      }
   }
}

Delete the Report

This method will delete a text entity.

Request:

curl "https://plagiarismcheck.org/api/org/text/delete/14/"  \
                        --request POST \
                        --data    "group_token=G-HEfFiCHYWY..."
                        

Response:

{"success": true}

User interface for report.

You can submit a report to the user interface. You need to create a html-form and submit it from the user browser.

<!DOCTYPE html>
  <html>
      <body>
          <form method="post" action="https://plagiarismcheck.org/lms/public-report/14/">
              <input type="hidden" name="token" value="G-HEf......" />
              <input type="hidden" name="lms-type" value="api" />
              <input type="submit" />
          </form>
      </body>
  </html>
              

Introduction

This document provides all the necessary information you need for checking texts for AI in your application.

You can find more examples in our GitHub repository and use Swagger page for API specification.

Sequence

To check a text for AI in your application, you MUST:

  1. Receive an authorization API token.
  2. Send the text by using the API method and receive an identification number of the text.
  3. Wait until we check the text.
  4. Check the status of the text by using the ID from 2 and the API method. If the text is not checked, go to step 3 with timeout.
  5. Receive a report by using the text ID from 2 and the API method.
  6. Render the json report in your application.

Authorization

For authorization, you MUST have a registered account with PlagiarismCheck.org and a special API token from our support team.

To receive an API token, you need to contact our Support. Also, you can sign in and copy the actual API token below.

API returns 401 Unauthorized if you provide an invalid token. You MUST send your token in the header with the name X-API-TOKEN.

Example of an HTTP header:

X-API-TOKEN: vsMKX3179tjK3CqvhE228IDeMV-eBBER

Where vsMKX3179tjK3CqvhE228IDeMV-eBBER is an example of the api token.

Send the request

The request has parameters:

  • text - The plain-text to be checked. You can send only plain-text or file.
  • file - A file (doc, docx, pdf, txt, odt, rtf) to be checked. You can send only plain-text or file.
  • group_id - group ID. Send only for B2B account.

The Request:

curl "https://plagiarismcheck.org/api/v1/chat-gpt/"  \
 --request POST \
 --header  "X-API-TOKEN: vsMKX3179tjK3CqvhE228IDeMV-eBBER" \
 --data    "text=an application programming interface (API) is a set of subroutine definitions, protocols, and tools for building application software. In general terms, it is a set of clearly defined methods of communication between various software components. A good API makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer. An API may be for a web-based system, operating system, database system, computer hardware or software library. An API specification can take many forms, but often includes specifications for routines, data structures, object classes, variables or remote calls. POSIX, Microsoft Windows API, the C++ Standard Template Library and Java APIs are examples of different forms of APIs. Documentation for the API is usually provided to facilitate usage" \

The Response:

{
  "success": true,
  "data": {
    "enabled": true,
    "id": 2,
    "status": 2,
    "percent": null,
    "processed_percent": null,
    "strong_percent": null,
    "likely_percent": null,
    "mark": null,
    "comment": null,
    "comment_author": null,
    "type": 3,
    "content": "",
    "chunks": []
  }
}
                

Check the status

This method receives an ID of the text and returns detailed information about the text. Here is a table with statuses:

IDNameDescription
1STATE_QUEUEDText has been stored and waiting for a check.
2STATE_IN_PROGRESSText has been stored and waiting for a check.
3STATE_FAILEDText has not been checked. An error happened.
4STATE_CHECKEDText has been successfully checked and you can receive the report.

In example: "2" is the ID of text

Request:

curl "https://plagiarismcheck.org/api/v1/chat-gpt/2"  \
-X GET \
-H "X-API-TOKEN: vsMKX3179tjK3CqvhE228IDeMV-eBBER"

Response:

{
  "success": true,
  "data": {
    "enabled": true,
    "id": 2,
    "status": 2,
    "percent": null,
    "processed_percent": null,
    "strong_percent": null,
    "likely_percent": null,
    "mark": null,
    "comment": null,
    "comment_author": null,
    "type": 3,
    "content": "",
    "chunks": []
  }
}

Get the Report

This method receives an ID of the text and returns a detailed report. The text MUST be with status 4 (STATE_CHECKED). The report contains general prercent, processed percent, chunks, and other information. Each chunk has reliability, a start position, and an end position in text where AI was found. In example "2" is The ID of the text.

Request:

curl "https://plagiarismcheck.org/api/v1/chat-gpt/2"  \
-X GET \
-H "X-API-TOKEN: vsMKX3179tjK3CqvhE228IDeMV-eBBER" 

Response:

{
  "success": true,
  "data": {
    "enable": true,
    "id": 2,
    "status": 4,
    "percent": 50.5,
    "processed_percent": 70.25,
    "strong_percent": 40.25,
    "likely_percent": 30,
    "mark": 1,
    "comment": "Comment message",
    "comment_author": {
      "id": 24,
      "name": "John Doe"
    },
    "type": 3,
    "content": "an application programming interface (API) is a set of subroutine definitions, protocols, and tools for building application software. In general terms, it is a set of clearly defined methods of communication between various software components. A good API makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer. An API may be for a web-based system, operating system, database system, computer hardware or software library. An API specification can take many forms, but often includes specifications for routines, data structures, object classes, variables or remote calls. POSIX, Microsoft Windows API, the C++ Standard Template Library and Java APIs are examples of different forms of APIs. Documentation for the API is usually provided to facilitate usage",
    "chunks": [
      {
        "reliability": 1,
        "position": [
          100,
          200
        ]
      }
    ]
  }
}