The ID Toolbox
← All tools

SCORM Error Code Decoder

The runtime hands the course a number and nothing else. Every code is here for both SCORM 1.2 and 2004, with what it means and, more usefully, what a developer actually did to provoke it. The same number means different things in the two versions, which is where 301 catches people.

Free · No account · Your files never upload

VersionCommon
0

No error

1.2 and 2004

The last call succeeded.

in practice Nothing is wrong. Worth knowing because some debugging output prints it constantly and it looks alarming.

101

General exception

1.2 and 2004

Something failed and the runtime will not say what.

in practice Almost always the API could not be found, or the session ended underneath the course. Check the course is launched by the LMS rather than opened directly, and that it is not inside a second frame the API search cannot climb out of.

102

General initialization failure

SCORM 2004

Initialize failed for a reason the runtime will not name.

in practice Usually the LMS session had already expired, or the learner opened the same course twice and the second window took the session.

103

Already initialized

SCORM 2004

Initialize was called when the session was already open.

in practice The course called Initialize twice, often because a second copy of the runtime script loaded on a later page.

104

Content instance terminated

SCORM 2004

The session was already closed.

in practice Something called Terminate early, and later code carried on as though the session were open.

111

General termination failure

SCORM 2004

Terminate failed.

in practice Commonly the browser was closing and the request never completed. This is why a final Commit before Terminate matters.

112

Termination before initialization

SCORM 2004

Terminate was called before Initialize.

in practice An exit trigger fired on a page that loaded before the runtime did.

113

Termination after termination

SCORM 2004

Terminate was called twice.

in practice Both an exit button and the browser unload handler called it.

122

Retrieve data before initialization

SCORM 2004

GetValue was called before the session opened.

in practice A script read the learner name at page load, before the runtime had connected.

123

Retrieve data after termination

SCORM 2004

GetValue was called after the session closed.

in practice Code running after exit, often a timer that was never cleared.

132

Store data before initialization

SCORM 2004

SetValue was called before the session opened.

in practice The same as 122, from the writing side.

133

Store data after termination

SCORM 2004

SetValue was called after the session closed.

in practice A save that fired during unload, after Terminate had already run. The data is lost.

142

Commit before initialization

SCORM 2004

Commit was called before the session opened.

in practice An autosave timer started before the runtime connected.

143

Commit after termination

SCORM 2004

Commit was called after the session closed.

in practice An autosave timer that was not stopped on exit.

201

Invalid argument error

SCORM 1.2

The value or element name was not acceptable.

in practice In 1.2 this covers a great deal. Usually a data model element that does not exist, or a value in the wrong format, such as a time that is not HHHH:MM:SS.SS.

201

General argument error

SCORM 2004

An argument was not acceptable.

in practice Often an empty string passed where the specification requires a value.

202

Element cannot have children

SCORM 1.2

You asked for the children of something that has none.

in practice Reading _children on an element that is not a collection.

203

Element not an array

SCORM 1.2

You asked for the count of something that is not a list.

in practice Reading _count on a plain element.

301

Not initialized

SCORM 1.2

The session was never opened.

in practice LMSInitialize was not called, or it failed and the course carried on regardless. The commonest error in 1.2 by a distance.

301

General get failure

SCORM 2004

GetValue failed for an unnamed reason.

in practice Usually a network problem between the course and the LMS.

351

General set failure

SCORM 2004

SetValue failed for an unnamed reason.

in practice Frequently the value was too long for the LMS to store. Check suspend data length first.

391

General commit failure

SCORM 2004

Commit failed for an unnamed reason.

in practice The save request did not reach the server. Data since the last successful commit is gone.

401

Not implemented error

SCORM 1.2

The LMS does not support that element.

in practice Optional parts of the 1.2 data model that many systems never implemented, such as the interactions collection.

401

Undefined data model element

SCORM 2004

That element does not exist in the data model.

in practice Nearly always a typo, or a 1.2 element name used against a 2004 runtime. cmi.core.score.raw is 1.2; cmi.score.raw is 2004.

402

Invalid set value, element is a keyword

SCORM 1.2

You tried to write to a keyword.

in practice Setting _children or _count, which are read-only by definition.

402

Unimplemented data model element

SCORM 2004

The LMS knows the element and does not support it.

in practice Common with the more optional parts of the 2004 model.

403

Element is read only

SCORM 1.2

That element cannot be written to.

in practice Writing to cmi.core.student_name or cmi.core.student_id, which the LMS supplies.

403

Data model element value not initialized

SCORM 2004

The value was read before anything set it.

in practice Reading a score or a location on the very first attempt.

404

Element is write only

SCORM 1.2

That element cannot be read.

in practice Reading cmi.core.exit or cmi.core.session_time, which are write-only.

404

Data model element is read only

SCORM 2004

That element cannot be written to.

in practice Writing cmi.learner_name or cmi.learner_id.

405

Incorrect data type

SCORM 1.2

The value was the wrong shape.

in practice A score sent as text, a status set to something outside the allowed vocabulary, or a time not in the required format.

405

Data model element is write only

SCORM 2004

That element cannot be read.

in practice Reading cmi.exit or cmi.session_time.

406

Data model element type mismatch

SCORM 2004

The value was the wrong type.

in practice A number sent where the model wants a vocabulary token, or the reverse.

407

Data model element value out of range

SCORM 2004

The value is outside what the element allows.

in practice A scaled score outside minus one to one. That range catches people: cmi.score.scaled is not a percentage.

408

Data model dependency not established

SCORM 2004

Something else has to be set first.

in practice Setting an interaction's result before its type, or a score before the score range.

The same number means different things in the two versions of SCORM, and 301 is the one that catches people: in 1.2 it means the session was never initialized, and in 2004 it means a read failed. Check which version your package declares before acting on a code.

What this does

Every SCORM runtime error code, for both 1.2 and 2004, with what it means and what usually causes it. Search by number or by a few words.

Why the cause matters more than the definition

The specification tells you what the runtime objected to. It does not tell you what a developer actually did to provoke it, which is nearly always one of two or three things. A 101 is almost always the API not being found, which is almost always a course opened directly rather than launched by the LMS, or one buried in a frame the API search cannot climb out of. That is the sentence you need, and it is not in the standard.

The trap worth knowing before you start

The same number means different things in the two versions. In SCORM 1.2, 301 means the session was never initialized, which is the commonest error in 1.2 by a distance. In SCORM 2004, 301 means a read failed. Acting on the wrong reading sends you looking in entirely the wrong place, so check which version your package declares first.

What it will not do

It covers the runtime codes defined by the standard. If a number came from your LMS itself, about an import or a playback problem, it will not be here: platforms have their own codes for those and they are not part of SCORM.

Related tools