curl --request POST \
--url https://api.copyleaks.com/v1/writing-feedback/my-scan-123/check \
--header 'Authorization: Bearer YOUR_LOGIN_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"text": "Copyleaks is a comprehensive plagiarism detection platform..."
}'
from copyleaks.copyleaks import Copyleaks
from copyleaks.models.submit.writing_assistant_document import WritingAssistantDocument
auth_token = Copyleaks.login("[email protected]", "YOUR_API_KEY")
submission = WritingAssistantDocument("Copyleaks is a comprehensive plagiarism detection platform...")
response = Copyleaks.WritingAssistantClient.submit_text(auth_token, "my-scan-123", submission)
print(response)
const { Copyleaks, CopyleaksWritingAssistantSubmissionModel } = require('plagiarism-checker');
const copyleaks = new Copyleaks();
const auth = await copyleaks.loginAsync('YOUR_EMAIL', 'YOUR_API_KEY');
const submission = new CopyleaksWritingAssistantSubmissionModel(
'Copyleaks is a comprehensive plagiarism detection platform...'
);
submission.sandbox = true;
await copyleaks.writingAssistantClient.submitTextAsync(auth, 'my-scan-123', submission);
import classes.Copyleaks;
import models.submissions.writingassistant.CopyleaksWritingAssistantSubmissionModel;
String authToken = Copyleaks.login("your@email", "API_KEY");
CopyleaksWritingAssistantSubmissionModel sub = new CopyleaksWritingAssistantSubmissionModel(
"Copyleaks is a comprehensive plagiarism detection platform..."
);
sub.setSandbox(true);
Copyleaks.writingAssistantClient.submitText(authToken, "my-scan-123", sub);
{
"score": {
"corrections": {
"grammarCorrectionsCount": 2,
"grammarCorrectionsScore": 87,
"mechanicsCorrectionsCount": 9,
"mechanicsCorrectionsScore": 38,
"overallScore": 79
},
"readability": {
"score": 59,
"readabilityLevel": 5,
"readabilityLevelText": "10th to 12th Grader",
"readabilityLevelDescription": "Fairly difficult to read"
}
},
"scannedDocument": {
"scanId": "{scanId}",
"totalWords": 61,
"actualCredits": 1,
"expectedCredits": 1,
"creationTime": "2025-08-06T08:00:08.0429909Z"
}
}
Grammar Checker
Submit Text
Generate grammar, spelling, and sentence corrections for a given text.
POST
/
v1
/
writing-feedback
/
{scanId}
/
check
curl --request POST \
--url https://api.copyleaks.com/v1/writing-feedback/my-scan-123/check \
--header 'Authorization: Bearer YOUR_LOGIN_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"text": "Copyleaks is a comprehensive plagiarism detection platform..."
}'
from copyleaks.copyleaks import Copyleaks
from copyleaks.models.submit.writing_assistant_document import WritingAssistantDocument
auth_token = Copyleaks.login("[email protected]", "YOUR_API_KEY")
submission = WritingAssistantDocument("Copyleaks is a comprehensive plagiarism detection platform...")
response = Copyleaks.WritingAssistantClient.submit_text(auth_token, "my-scan-123", submission)
print(response)
const { Copyleaks, CopyleaksWritingAssistantSubmissionModel } = require('plagiarism-checker');
const copyleaks = new Copyleaks();
const auth = await copyleaks.loginAsync('YOUR_EMAIL', 'YOUR_API_KEY');
const submission = new CopyleaksWritingAssistantSubmissionModel(
'Copyleaks is a comprehensive plagiarism detection platform...'
);
submission.sandbox = true;
await copyleaks.writingAssistantClient.submitTextAsync(auth, 'my-scan-123', submission);
import classes.Copyleaks;
import models.submissions.writingassistant.CopyleaksWritingAssistantSubmissionModel;
String authToken = Copyleaks.login("your@email", "API_KEY");
CopyleaksWritingAssistantSubmissionModel sub = new CopyleaksWritingAssistantSubmissionModel(
"Copyleaks is a comprehensive plagiarism detection platform..."
);
sub.setSandbox(true);
Copyleaks.writingAssistantClient.submitText(authToken, "my-scan-123", sub);
{
"score": {
"corrections": {
"grammarCorrectionsCount": 2,
"grammarCorrectionsScore": 87,
"mechanicsCorrectionsCount": 9,
"mechanicsCorrectionsScore": 38,
"overallScore": 79
},
"readability": {
"score": 59,
"readabilityLevel": 5,
"readabilityLevelText": "10th to 12th Grader",
"readabilityLevelDescription": "Fairly difficult to read"
}
},
"scannedDocument": {
"scanId": "{scanId}",
"totalWords": 61,
"actualCredits": 1,
"expectedCredits": 1,
"creationTime": "2025-08-06T08:00:08.0429909Z"
}
}
curl --request POST \
--url https://api.copyleaks.com/v1/writing-feedback/my-scan-123/check \
--header 'Authorization: Bearer YOUR_LOGIN_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"text": "Copyleaks is a comprehensive plagiarism detection platform..."
}'
from copyleaks.copyleaks import Copyleaks
from copyleaks.models.submit.writing_assistant_document import WritingAssistantDocument
auth_token = Copyleaks.login("[email protected]", "YOUR_API_KEY")
submission = WritingAssistantDocument("Copyleaks is a comprehensive plagiarism detection platform...")
response = Copyleaks.WritingAssistantClient.submit_text(auth_token, "my-scan-123", submission)
print(response)
const { Copyleaks, CopyleaksWritingAssistantSubmissionModel } = require('plagiarism-checker');
const copyleaks = new Copyleaks();
const auth = await copyleaks.loginAsync('YOUR_EMAIL', 'YOUR_API_KEY');
const submission = new CopyleaksWritingAssistantSubmissionModel(
'Copyleaks is a comprehensive plagiarism detection platform...'
);
submission.sandbox = true;
await copyleaks.writingAssistantClient.submitTextAsync(auth, 'my-scan-123', submission);
import classes.Copyleaks;
import models.submissions.writingassistant.CopyleaksWritingAssistantSubmissionModel;
String authToken = Copyleaks.login("your@email", "API_KEY");
CopyleaksWritingAssistantSubmissionModel sub = new CopyleaksWritingAssistantSubmissionModel(
"Copyleaks is a comprehensive plagiarism detection platform..."
);
sub.setSandbox(true);
Copyleaks.writingAssistantClient.submitText(authToken, "my-scan-123", sub);
{
"score": {
"corrections": {
"grammarCorrectionsCount": 2,
"grammarCorrectionsScore": 87,
"mechanicsCorrectionsCount": 9,
"mechanicsCorrectionsScore": 38,
"overallScore": 79
},
"readability": {
"score": 59,
"readabilityLevel": 5,
"readabilityLevelText": "10th to 12th Grader",
"readabilityLevelDescription": "Fairly difficult to read"
}
},
"scannedDocument": {
"scanId": "{scanId}",
"totalWords": 61,
"actualCredits": 1,
"expectedCredits": 1,
"creationTime": "2025-08-06T08:00:08.0429909Z"
}
}
Authentication Required. You need to login with a user and API key in order to access this method. Add this HTTP header to your request:Authorization: Bearer <Your-Login-Token>
Request
Path Parameters
A unique scan id provided by you. Learn more about the criteria for creating a Scan ID.
>= 3 characters <= 36 charactersHeaders
Content-Type: application/json
Authorization: Bearer YOUR_LOGIN_TOKEN
Request Body
Text to produce Grammar Checker report for.
>= 1 characters <= 25000 charactersUse sandbox mode to test your integration with the Copyleaks API without consuming any credits.
Show score properties
Show score properties
Grammar correction category weight in the overall score.
>= 0.0 <= 1.0Mechanics correction category weight in the overall score.
>= 0.0 <= 1.0Sentence structure correction category weight in the overall score.
>= 0.0 <= 1.0Word choice correction category weight in the overall score.
>= 0.0 <= 1.0The language code of your content. If not supplied, our system will automatically detect the language of the content.Example:
"en"Responses
- 200
- 400
- 401
- 402
- 429
200 OK - The command was executed.
{
"score": {
"corrections": {
"grammarCorrectionsCount": 2,
"grammarCorrectionsScore": 87,
"overallScore": 79
}
},
"scannedDocument": {
"scanId": "{scanId}",
"totalWords": 61,
"creationTime": "2025-08-06T08:00:08.0429909Z"
}
}
400 Bad Request - Bad request.
401 Unauthorized - Authorization has been denied for this request.
402 Payment Required - User does not have enough credits.
429 Too Many Requests - Too many requests have been sent. The request has been rejected.
⌘I

