Skip to content

Plugin manifest

manifest.json is required at the .splug root.

Fields

FieldRequiredDescription
schemaVersionYesPackage schema. Plugin API 1.0 requires 1.
idYesStable reverse-domain identifier, for example com.example.speedometer.
nameYesUser-facing name.
versionYesSemantic numeric version such as 1.0.0.
apiVersionYesExact 1.0 or compatible range ^1.0.
entryYesSafe relative path to a .lua entry file.
descriptionNoUser-facing description.
activationModeNoimmediate or restart-required; defaults to the latter.
permissionsNoUnique public permission names.
contextsNosingleplayer, multiplayer, or omitted for both.
authorNoObject containing an author name.

Identifier rules

An ID starts with a lowercase letter and contains at least two dot-separated components. Components may use lowercase letters, digits, _, and - where allowed.

Choose the ID once. Changing it creates a different plugin with separate permissions, versions, and storage.

API compatibility

  • "apiVersion": "1.0" requests exactly API 1.0.
  • "apiVersion": "^1.0" accepts API 1.x where the current minor version is at least 0.

Do not declare capabilities that you have not tested. Use samp.api.has() when a plugin can optionally use a capability added within a compatible API line.

Complete example

json
{
  "schemaVersion": 1,
  "id": "com.example.hello",
  "name": "Hello Plugin",
  "version": "1.0.0",
  "apiVersion": "^1.0",
  "entry": "main.lua",
  "description": "A minimal SA-MP Android plugin.",
  "activationMode": "immediate",
  "permissions": [],
  "contexts": ["multiplayer"],
  "author": {
    "name": "Your Name"
  }
}