{"openapi":"3.1.0","info":{"title":"Rate My Transcript Scoring API","version":"1","summary":"Score how broad sets of University of Illinois Urbana-Champaign courses are.","description":"Each course's title and description is embedded as a 3,072-dimensional vector (OpenAI `text-embedding-3-large`, once per semester the course was offered). A transcript's breadth is the volume its courses span in that space: the log-determinant of their Gram matrix. The score normalizes that volume to 0–100 against reference curves for the same number of courses. 100 is the most diverse set a greedy search finds, and 0 is the average of random courses from the lowest-scoring department.\n\nNo key is needed. Nothing in a request is logged or stored."},"servers":[{"url":"https://www.ratemytranscript.com"}],"security":[],"externalDocs":{"description":"The same reference for people","url":"https://www.ratemytranscript.com/developers"},"paths":{"/api/v1/score":{"post":{"operationId":"scoreTranscripts","summary":"Score many transcripts","description":"Scores up to 500 transcripts in one request. A full batch takes several seconds; split larger sets into batches of 500.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreRequest"},"example":{"transcripts":[{"id":"student-1","courses":["CS 124","MATH 241","PHYS 211","MUS 130"]},{"id":"student-2","courses":[{"id":"CS 124","year":2025,"term":"Fall"},"CS 128","CS 225","CS 199"]}]}}}},"responses":{"200":{"description":"One result per transcript, in request order. Scores in this example are rounded; the API returns full precision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreResponse"},"example":{"catalog":{"exportedAt":"2026-09-10T20:28:15.221Z"},"results":[{"id":"student-1","score":73,"k":4,"matched":["CS 124","MATH 241","PHYS 211","MUS 130"],"unmatched":[],"ambiguous":[]},{"id":"student-2","score":37,"k":3,"matched":["CS 124","CS 128","CS 225"],"unmatched":[],"ambiguous":["CS 199"]}]}}}},"400":{"description":"The request is malformed. The error names the offending entry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"transcripts[0].courses[1] must be a course code or {id, year?, term?, sectionHint?}"}}}},"503":{"description":"The scoring catalog isn't loaded. Retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ScoreRequest":{"type":"object","required":["transcripts"],"properties":{"transcripts":{"type":"array","minItems":1,"maxItems":500,"items":{"$ref":"#/components/schemas/Transcript"}}}},"Transcript":{"type":"object","required":["courses"],"properties":{"id":{"type":"string","maxLength":200,"description":"Your identifier for this transcript, echoed back in its result. Use one that means nothing outside your records."},"courses":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/Course"},"description":"The courses taken. A course listed twice counts once."}}},"Course":{"oneOf":[{"type":"string","minLength":1,"maxLength":200,"description":"A course code, such as \"CS 124\" (case doesn't matter), or a code with a section title, such as \"CS 199: Python for Data\"."},{"$ref":"#/components/schemas/CourseTaken"}]},"CourseTaken":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1,"maxLength":200,"description":"A course code, with or without a section title."},"year":{"type":"integer","description":"The year the course was taken."},"term":{"type":"string","description":"Winter, Spring, Summer, or Fall. With year, the score uses that semester's course description; otherwise it uses the most recent offering."},"sectionHint":{"type":"string","description":"A section code, such as \"UAI\", that picks a section of a course whose sections cover different topics."}}},"ScoreResponse":{"type":"object","required":["catalog","results"],"properties":{"catalog":{"type":"object","required":["exportedAt"],"properties":{"exportedAt":{"type":["string","null"],"format":"date-time","description":"When the course catalog behind the scores was built. It's refreshed each semester, and scores can shift slightly when it is."}}},"results":{"type":"array","items":{"$ref":"#/components/schemas/Result"}}}},"Result":{"type":"object","required":["id","score","k","matched","unmatched","ambiguous"],"properties":{"id":{"type":["string","null"],"description":"Your id, or null if you didn't send one."},"score":{"type":"number","minimum":0,"maximum":100,"description":"Breadth from 0 to 100, the same number the site shows. It's 0 when fewer than 2 courses matched."},"k":{"type":"integer","minimum":0,"description":"How many courses matched."},"matched":{"type":"array","items":{"type":"string"},"description":"Normalized codes found in the catalog."},"unmatched":{"type":"array","items":{"type":"string"},"description":"Codes not in the catalog, such as transfer credit or courses not offered since 2004."},"ambiguous":{"type":"array","items":{"type":"string"},"description":"Codes offered only as titled sections, such as CS 199, which need a title or sectionHint to score."}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}