Scholaro GPA Report API - Developer Documentation (Bulk & Webhooks)

GPA Report Integration Guide

Overview

The Scholaro GPA Report integration allows institutions to automatically generate GPA reports from transcripts using multiple methods depending on their workflow.

You can choose from the following options:

  1. API (Single Report) - create one report at a time
  2. Bulk API Upload - process multiple transcripts in a ZIP file
  3. SFTP Upload - fully automated file-based integration

All methods use the same underlying processing and produce identical GPA reports.


Choosing the Right Method

MethodBest for
API (Single)Real-time processing, one transcript at a time
Bulk APIBatch uploads via ZIP
SFTPFully automated pipelines and high-volume processing

Authentication

To use the API, include your API key in every request.

Header:

  1. X-API-Key: your_signing_secret_here

Note:
You can obtain your API key (Signing Secret) from the Developer page:
https://www.scholaro.com/app/developer/webhooks


Single Report API

POST


Request Parameters

Send data as multipart/form-data.

FieldTypeRequiredDescription
countrystringYesCountry of study
filePDF fileYesTranscript file
applicant_namestringNoApplicant name
report_namestringNoCustom report name
date_of_birthstringNoAvailable if enabled
custom_field_1stringNoOptional
custom_field_2stringNoOptional
custom_field_3stringNoOptional

Response

  1. {
  2. "message": "string",
  3. "url": "string",
  4. "gpa_report": {
  5. "report_id": 123456,
  6. "applicant_name": "string",
  7. "report_name": "string",
  8. "country": "string",
  9. "institution": "string",
  10. "total_credits": 0.0,
  11. "total_points": 0.0,
  12. "gpa": 0.0,
  13. "grades": []
  14. }
  15. }

Example Requests

cURL

  1. curl -X POST https://www.scholaro.com/appAPI/api/gpa-report/new \
  2. -H "X-API-Key: your_signing_secret_here" \
  3. -F "country=India" \
  4. -F "applicant_name=Jane Smith" \
  5. -F "report_name=Fall 2024 GPA Report" \
  6. -F file=@/path/to/transcript.pdf

C#

  1. using var client = new HttpClient();
  2. client.DefaultRequestHeaders.Add("X-API-Key", "your_signing_secret_here");

  3. using var content = new MultipartFormDataContent();
  4. content.Add(new StringContent("Mexico"), "country");
  5. content.Add(new StringContent("John Smith"), "applicant_name");
  6. content.Add(new StringContent("Fall 2024 GPA Report"), "report_name");

  7. string transcriptPath = "./path/to/transcript.pdf";
  8. var fileContent = new ByteArrayContent(File.ReadAllBytes(transcriptPath));
  9. fileContent.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");

  10. content.Add(fileContent, "file", "transcript.pdf");

  11. var response = await client.PostAsync(
  12. "https://www.scholaro.com/appAPI/api/gpa-report/new",
  13. content
  14. );

JavaScript (Fetch)

  1. import { FormData } from 'formdata-node';
  2. import { fileFromPath } from 'formdata-node/file-from-path';

  3. const formData = new FormData();
  4. formData.append('country', 'Germany');
  5. formData.append('applicant_name', 'Jack Smith');
  6. formData.append('report_name', 'Fall 2024 GPA Report');

  7. const file = await fileFromPath("./path/to/transcript.pdf");
  8. formData.append('file', file);

  9. const response = await fetch(
  10. 'https://www.scholaro.com/appAPI/api/gpa-report/new',
  11. {
  12. method: 'POST',
  13. headers: {
  14. 'X-API-Key': 'your_signing_secret_here'
  15. },
  16. body: formData
  17. }
  18. );

Python

  1. import requests

  2. url = "https://www.scholaro.com/appAPI/api/gpa-report/new"

  3. headers = {
  4. "X-API-Key": "your_signing_secret_here"
  5. }

  6. files = {
  7. 'file': ('transcript.pdf', open('/path/to/transcript.pdf', 'rb'), 'application/pdf')
  8. }

  9. data = {
  10. 'country': 'Brazil',
  11. 'applicant_name': 'Jane Smith',
  12. 'report_name': 'Fall 2024 GPA Report'
  13. }

  14. response = requests.post(url, headers=headers, files=files, data=data)
  15. result = response.json()

Requirements & Access

Requirement:
The transcript file must be a valid PDF.

Access:
This API is available only to institutional Premium users.


Bulk API Upload

Overview

The Bulk API allows you to create multiple GPA reports in a single request by uploading a ZIP file containing transcripts and a manifest file.

Note:
Bulk processing is asynchronous. Reports are generated in the background.


Endpoint

POST


Request

Send multipart/form-data with a single file:

  1. file: bulk-upload.zip
  • Must be a .zip file
  • Max size: 100 MB
  • Must include:
    • manifest.csv
    • transcript files (PDF, JPG, JPEG, PNG)

manifest.csv Format

Each row represents one report:

  1. file_name,country,applicant_name,report_name,date_of_birth,custom_field_1,custom_field_2,custom_field_3
  2. brazil-transcript.pdf,Brazil,Jane Smith,Fall 2024 Report,01/15/1995,Field1,Field2,Field3
  3. india-transcript.pdf,India,John Doe,Spring 2024 Report,,,,

Fields

FieldRequiredDescription
file_nameYesName of transcript file in ZIP
countryYesCountry for GPA conversion
applicant_nameNoExtracted automatically if empty
report_nameNoCustom report name
date_of_birthNoIf enabled
custom_field_1-3NoOptional fields

Response (202 Accepted)

  1. {
  2. "batch_id": "5797602d-f05f-495b-8cb9-220c8e2c5df5",
  3. "total_items": 5,
  4. "status_url": "/api/gpa-report/bulk/{batch_id}"
  5. }

Example (cURL)

  1. curl -X POST https://www.scholaro.com/appAPI/api/gpa-report/bulk \
  2. -H "X-API-Key: your_signing_secret_here" \
  3. -F file=@/path/to/bulk-upload.zip

Error Responses

StatusDescription
400Invalid request (missing ZIP, manifest, files, or limits exceeded)
401Unauthorized (invalid API key)

Batch Status

Endpoint

GET


Response

  1. {
  2. "batch_id": "5797602d-f05f-495b-8cb9-220c8e2c5df5",
  3. "status": "Completed",
  4. "total_items": 5,
  5. "completed_items": 3,
  6. "failed_items": 2,
  7. "created_on": "2024-12-15T10:30:00Z",
  8. "completed_on": "2024-12-15T10:35:00Z",
  9. "items": [
  10. {
  11. "file_name": "brazil-transcript.pdf",
  12. "status": "Completed",
  13. "report_id": 737271,
  14. "error_message": null
  15. }
  16. ]
  17. }

Status Values

Batch Status

  • Processing
  • Completed
  • Cancelled

Item Status

  • Pending
  • Processing
  • Completed
  • Failed

Example (cURL)

  1. curl -X GET https://www.scholaro.com/appAPI/api/gpa-report/bulk/{batch_id} \
  2. -H "X-API-Key: your_signing_secret_here"

Polling Example (Python)

  1. import requests
  2. import time

  3. url = "https://www.scholaro.com/appAPI/api/gpa-report/bulk"
  4. headers = {"X-API-Key": "your_signing_secret_here"}

  5. # Upload
  6. files = {
  7. 'file': ('bulk-upload.zip', open('/path/to/bulk-upload.zip', 'rb'), 'application/zip')
  8. }
  9. response = requests.post(url, headers=headers, files=files)
  10. batch_id = response.json()['batch_id']

  11. # Poll
  12. while True:
  13. status = requests.get(f"{url}/{batch_id}", headers=headers).json()

  14. completed = status["completed_items"] + status["failed_items"]
  15. print(f"{completed}/{status['total_items']} processed")

  16. if status["status"] != "Processing":
  17. break

  18. time.sleep(10)

SFTP Upload (Automated Integration)

Overview

Instead of using the API, you can upload files via SFTP for automated workflows.


Connection Details

SettingValue
Hostscholaronorthussftp.blob.core.windows.net
Port22
ProtocolSFTP
UsernameProvided by Scholaro
PasswordProvided by Scholaro

Upload Steps

  1. Upload transcript files first
  2. Upload manifest.csv last
  3. Uploading manifest triggers processing

Example (Command Line)

  1. sftp scholaronorthussftp.myuser@scholaronorthussftp.blob.core.windows.net

  2. put brazil-transcript.pdf
  3. put india-transcript.pdf
  4. put manifest.csv

Important Notes

  • Upload transcripts before manifest
  • Manifest triggers processing
  • Do not upload multiple manifests simultaneously
  • Subscription limits apply


    • Related Articles

    • Ordering a GPA Report

      Go to https://www.scholaro.com/premium/ Click 'Get Premium' Choose “One Report” for calculating the GPA and degree equivalency, or Yearly Access if you wish to create multiple Premium reports of future use. Create your account with your username, ...
    • Accessing your GPA Report drafts

      If you would like to access an earlier draft of your GPA Report, simply follow these steps. First, you will want to sign into your Scholaro Premium account here. Hover over (+)New and then select New GPA report from the dropdown menu. Then, click ...
    • Ordering a GPA Report (University of Canterbury)

      Use this link only (also provided below) to enter the Scholaro website as entering from elsewhere will not create the report in the New Zealand 9 point scale. Click "Get Started" to create a Scholaro account or "Sign In" if you already have an ...
    • Ordering a GPA Report (Stetson University)

      Go to www.scholaro.com/apply/stetsongpa Click 'Get Started' Choose “One Report” for calculating the GPA Create your account with your username, email and password Select “Create GPA Report” Enter your full name, country of study, and institution ...
    • Ordering a GPA Report (Illinois Tech)

      Go to scholaro.com/apply/iit Click 'Get Started' Choose 'One Report' for calculating the GPA for Illinois Tech. Create your account with your email and password Submit order Select “Create GPA Report” Enter your full name, country of study, and ...