Skip to content

Plugin manifest ​

manifest.json is required at the .splug root.

Fields ​

FieldRequiredDescription
schemaVersionYesPackage schema. Plugin API 1.1 uses 1.
idYesStable reverse-domain identifier, for example com.example.speedometer.
nameYesUser-facing name.
versionYesSemantic numeric version such as 1.0.0.
apiVersionYesExact 1.1 or compatible range ^1.1; existing 1.0 and ^1.0 packages remain supported.
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.1" requests API 1.1 or a later compatible minor in major version 1.
  • "apiVersion": "^1.1" explicitly accepts later compatible minors in API major version 1.
  • Exact "1.0" remains compatible with the 1.1 client so already-published plugins keep working.

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.1",
  "entry": "main.lua",
  "description": "A minimal SA-MP Android plugin.",
  "activationMode": "immediate",
  "permissions": [],
  "contexts": ["multiplayer"],
  "author": {
    "name": "Your Name"
  }
}