API Hub & Documentation

Welcome to the API hub. Use the links below to test the various API endpoints live, or review the comprehensive documentation on this page.


Available Test Pages

API Status Tester

Check the status of an API key and view remaining credits.

Interactive Feedback Tester

Test the interactive feedback endpoint with custom text and criteria.

Smart Essay Marker Tester

Test the smart essay marking endpoint.

AI Tutor Tester

Test the AI Tutor with different personas and structured feedback.

AI Tools Tester

Test auxiliary tools like the AI Detector and Reference Checker.

Batch Style Job Tester

Create and track style-comparison batch jobs.

Rubric Marking Job Tester

Create and track rubric-based marking jobs.

Automarking Job Tester

Submit automated marking jobs with questions and ZIP uploads.

Student Analytics Tester

Test student AI history and progress report endpoints.

Class Assignment Analysis Tester

Generate class-level analysis from assignment feedback.

Worksheet Generation Tester

Generate personalized worksheets for a student.


Feedback Flow API Documentation

Version 3.0 | Last Updated: April 16, 2026

Welcome

Welcome to the Feedback Flow API! Our API provides programmatic access to our powerful suite of AI-driven educational tools, allowing you to integrate automated marking, feedback generation, and content analysis directly into your own applications and workflows.

This guide will walk you through the authentication process, available endpoints, error codes, and provide hands-on examples (cURL, Python) to get you started quickly.

Quickstart

Use this quick flow to make your first successful API call in under 2 minutes.

  1. Set your base URL to https://feedbackflows.org/api/v1.
  2. Add your API key to every request using the header X-API-Key.
  3. Test your key with GET /account/status.
  4. Move to one of the analysis endpoints (for example /smart-essay-marker).
Quickstart cURL Examples
# 1) Check key + credits
curl -X GET 'https://feedbackflows.org/api/v1/account/status' \
-H 'X-API-Key: YOUR_API_KEY_HERE'

# 2) Smart Essay Marker
curl -X POST 'https://feedbackflows.org/api/v1/smart-essay-marker' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
  "essay_text": "The full text of the student's essay.",
  "marking_criteria": ["Clarity of argument", "Use of evidence"]
}'

Getting Started

Prerequisites

To use the Feedback Flow API, you must have an active user account on our main platform. All API usage is billed against the credit balance of this account.

Authentication

Once your account is set up, a Feedback Flow administrator will generate and provide you with a unique API key. This key links all API requests to your account. You must include your API key in the X-API-Key header of every request.

X-API-Key: YOUR_API_KEY_HERE

Requests made without a valid key will result in a 401 Unauthorized error.

Base URL

All API endpoints are prefixed with the following base URL. Think of this as the main address for the API; you will always append a specific endpoint path to this address to make a request.

https://feedbackflows.org/api/v1

For example, to reach the /account/status endpoint, you would combine the base URL and the endpoint to form the full request URL: https://feedbackflows.org/api/v1/account/status. The /v1 indicates that you are using Version 1 of the API.

Full Reference

This section includes all currently available public API endpoints, including asynchronous job APIs for batch features.

Endpoints

0. /test

Simple API key validation endpoint.

Method: GET
Headers: X-API-Key

1. /account/status

Check the status of your API key and see the remaining credit balance on your associated account.

Method: GET
Headers: X-API-Key

Success Response (200 OK)
{
  "api_key_status": "active",
  "business_name": "Your Business Name",
  "credits_remaining": 985
}

Note: credits_remaining will show -1 for unlimited credits.

cURL Example
curl -X GET 'https://feedbackflows.org/api/v1/account/status' -H 'X-API-Key: YOUR_API_KEY_HERE'
Python Example
import requests

api_key = "YOUR_API_KEY_HERE"
url = "https://feedbackflows.org/api/v1/account/status"
headers = {"X-API-Key": api_key}

response = requests.get(url, headers=headers)
if response.status_code == 200:
    print("Success:", response.json())
else:
    print("Error:", response.status_code, response.text)

2. /interactive-feedback

Generate structured, AI-powered feedback based on specific marking criteria.

Method: POST
Headers: X-API-Key, Content-Type: application/json

Request Body
{
  "student_text": "The student's full essay or text goes here.",
  "marking_criteria": [
    "Clarity of argument",
    "Use of evidence"
  ]
}
Success Response (200 OK)
{
  "feedback_breakdown": [
    {
      "criterion": "Clarity of argument",
      "feedback": "The main argument is identifiable, but it gets lost in the second paragraph.",
      "suggestion": "Try to start each paragraph with a clear topic sentence.",
      "confidence_score": 0.95
    }
  ]
}
cURL Example
curl -X POST 'https://feedbackflows.org/api/v1/interactive-feedback' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
  "student_text": "The industrial revolution was a pivotal moment in history.",
  "marking_criteria": ["Introduction", "Historical Accuracy"]
}'

3. /smart-essay-marker

Automatically mark a full essay, providing detailed qualitative feedback broken down by each criterion.

Method: POST
Headers: X-API-Key, Content-Type: application/json

Request Body
{
  "essay_text": "The full text of the student's essay.",
  "marking_criteria": [
    "Clarity of argument",
    "Use of evidence"
  ]
}
Success Response (200 OK)
{
  "overall_recommendations": "This is a promising draft. The main areas for improvement are strengthening the evidence and ensuring the conclusion directly summarizes the key points discussed.",
  "referencing_note": "Remember to use a consistent citation style throughout the work.",
  "criteria_feedback": [
    {
      "criterion": "Use of evidence",
      "assessment": "Not Met",
      "how_it_was_met": "The essay currently relies on general statements without specific support.",
      "quoted_sentence": "While it connects us, it can also create distance.",
      "areas_for_improvement": "Incorporate data, studies, or specific examples to substantiate your claims."
    }
  ]
}
cURL Example
curl -X POST 'https://feedbackflows.org/api/v1/smart-essay-marker' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
  "essay_text": "The entire essay text goes here...",
  "marking_criteria": ["Assess the use of historical evidence"]
}'

4. /ai-tutor

Provide formative, structured feedback on a student's draft with selectable tutor personas.

Method: POST
Headers: X-API-Key, Content-Type: application/json

Request Body
{
  "student_draft": "The student's draft text.",
  "mode": "general",
  "persona": "encouraging"
}

Note: persona is optional ("encouraging" or "direct"). mode can be "general" or "rubric".

Success Response (200 OK)
{
  "feedback_points": [
    {
      "topic": "Clarity",
      "feedback": "This sentence is a great start! To make it even stronger, you could use more descriptive language.",
      "suggestion": "Instead of 'some issues', you could specify what they are, for example: 'our plan has some logistical and budgetary issues.'",
      "quote": "our plan has some issues"
    }
  ]
}
cURL Example
curl -X POST 'https://feedbackflows.org/api/v1/ai-tutor' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
  "student_draft": "The industrial revolution was very important.",
  "mode": "general",
  "persona": "direct"
}'

5. /reference-check (AI Content Detector)

Analyzes a document to assess the likelihood of it being AI-generated.

Method: POST
Headers: X-API-Key, Content-Type: application/json

Request Body
{
  "document_text": "The document content to be analyzed."
}
Success Response (200 OK)
{
  "ai_probability_score": 0.88,
  "highlighted_sentences": [
    "The intricate tapestry of modern society is woven with the threads of technological advancement."
  ],
  "summary": "The text shows strong indicators of AI generation, particularly in its sentence structure."
}
cURL Example
curl -X POST 'https://feedbackflows.org/api/v1/reference-check' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
  "document_text": "The theory of constructive alignment is a cornerstone of modern pedagogical design..."
}'

5b. /ai-detector

Hybrid AI detector endpoint with detailed scoring output.

Method: POST
Headers: X-API-Key, Content-Type: application/json

Request Body
{
  "document_text": "The document content to be analyzed."
}

6. /full-reference-check

A comprehensive tool to validate reference formatting and (optionally) check for semantic alignment.

Method: POST
Headers: X-API-Key, Content-Type: application/json

Request Body
{
  "document_text": "The full text of the document, including in-text citations and a bibliography.",
  "style": "APA",
  "enable_semantic_check": true
}

Note: Supported style values are "APA", "Harvard", "MLA", and "Chicago".

Success Response (200 OK)
{
  "citation_analysis": {
    "style_used": "APA",
    "in_text_citation_count": 3,
    "reference_list_count": 2,
    "matched_references": [ "Smith, 2020" ],
    "unmatched_in_text_citations": [ "Jones, 2019", "Williams, 2021" ]
  },
  "semantic_analysis": [
    {
      "citation": "(Smith, 2020)",
      "student_argument_context": "According to Smith (2020), the results were conclusive.",
      "analysis": {
        "ok": true,
        "rationale": "The source likely discusses conclusive results, aligning with the student's claim.",
        "suggested_action": "Ensure the specific details from the source are accurately represented.",
        "confidence": 0.9
      }
    }
  ]
}
cURL Example
curl -X POST 'https://feedbackflows.org/api/v1/full-reference-check' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
  "document_text": "The theory of constructive alignment... (Biggs, 2014). References: Biggs, J. (2014)...",
  "style": "APA",
  "enable_semantic_check": true
}'

7. /batch-style/jobs

Create a style-comparison batch job from a base64-encoded ZIP file of submissions.

Method: POST
Headers: X-API-Key, Content-Type: application/json

Request Body
{
  "filename": "submissions.zip",
  "zip_base64": "BASE64_ZIP_CONTENT"
}
Success Response (202 Accepted)
{
  "job_id": 123,
  "status": "QUEUED",
  "estimated_cost_if_all_files_processed": 12,
  "status_endpoint": "/api/v1/batch-style/jobs/123"
}

8. /batch-style/jobs/<job_id>

Get batch style job status, completed comparisons, and unmatched files.

Method: GET
Headers: X-API-Key

9. /rubric-marking/jobs

Create a rubric-based batch marking job with a base64 ZIP and an existing rubric.

Method: POST
Headers: X-API-Key, Content-Type: application/json

Request Body
{
  "rubric_id": 45,
  "filename": "class_work.zip",
  "marking_style": "simple",
  "grading_system": "pmd",
  "zip_base64": "BASE64_ZIP_CONTENT"
}

10. /rubric-marking/jobs/<job_id>

Get rubric marking job status and per-student feedback output.

Method: GET
Headers: X-API-Key

11. /automarking/jobs

Create an automated marking job with structured questions plus a base64 ZIP of student submissions.

Method: POST
Headers: X-API-Key, Content-Type: application/json

Request Body
{
  "questions": [
    {
      "question_text": "Explain TCP/IP.",
      "available_marks": 6,
      "mark_scheme": "Mentions layers, protocols, and role in networking."
    }
  ],
  "zip_base64": "BASE64_ZIP_CONTENT",
  "mark_mode": "Both",
  "flexible_marking": false,
  "bypass_automark_cache": false,
  "automarking_consistency_mode": "standard"
}

12. /automarking/jobs/<job_id>

Get automarking job status, progress, and per-result data.

Method: GET
Headers: X-API-Key

13. /students/<student_id>/ai-history

Retrieve AI detection history in chart-ready format for a student.

Method: GET
Headers: X-API-Key

Optional Query Params: start=YYYY-MM-DD, end=YYYY-MM-DD

14. /students/<student_id>/progress-report

Generate an AI-written progress report from marking history.

Method: POST
Headers: X-API-Key, Content-Type: application/json

Request Body
{
  "start_date": "2026-01-01",
  "end_date": "2026-03-31"
}

15. /classes/<class_id>/assignments/<assignment_id>/analyze

Generate class-level assignment analysis from existing marking feedback.

Method: POST
Headers: X-API-Key

16. /students/<student_id>/worksheet

Generate a personalized worksheet from supplied weaknesses or prior marking history.

Method: POST
Headers: X-API-Key, Content-Type: application/json

Request Body
{
  "weaknesses_list": ["Citation structure", "Paragraph cohesion"],
  "format": "short_answer",
  "level": "Intermediate",
  "num_questions": 5
}

17. /stats/users (Admin)

Admin-only endpoint that returns total user count.

Method: GET
Headers: X-API-Key (admin key)

Error Codes

The API uses standard HTTP status codes to indicate the success or failure of a request.

Code Meaning
200 OKThe request was successful.
400 Bad RequestA required field is missing from your request body, or the data is in the wrong format.
401 UnauthorizedYour API key is missing, invalid, or inactive.
402 Payment RequiredYour account does not have enough credits to perform this action.
500 Internal Server ErrorAn unexpected error occurred on our end while processing your request.

Appendix: API Testing Tools (HTML)

The following HTML tools are included for developers to directly test endpoints in a browser without needing Postman or code setup:

  • api_status_tester.html: Test the /account/status endpoint interactively.
  • api_interactive_feedback_tester.html: Test /interactive-feedback with sample text and criteria.
  • api_smart_marker_tester.html: Test /smart-essay-marker with essay samples.
  • api_ai_tutor_tester.html: Test /ai-tutor with different personas.
  • api_tools_tester.html: A unified tester for /reference-check and /full-reference-check, plus copy/paste examples for the new job and analytics APIs.
  • api_batch_style_tester.html: Test /batch-style/jobs create + status.
  • api_rubric_marking_tester.html: Test /rubric-marking/jobs create + status.
  • api_automarking_tester.html: Test /automarking/jobs create + status.
  • api_student_analytics_tester.html: Test /students/<student_id>/ai-history and /students/<student_id>/progress-report.
  • api_class_assignment_tester.html: Test /classes/<class_id>/assignments/<assignment_id>/analyze.
  • api_worksheet_tester.html: Test /students/<student_id>/worksheet.