Skip to main content
Use this page when the SDK resource starts but an export fails, returns an API error or cannot capture screenshots.

Common errors

SymptomCheck
Missing FiveMesh API keyConfirm set FIVEMESH_API_KEY "fm_live_..." is in server.cfg before ensure fivemesh-sdk.
Missing FiveMesh API key profileConfirm the exact FIVEMESH_API_KEY_<PROFILE_NAME> ConVar exists for the keyProfile used by the export.
FORBIDDENAdd the required CDN permission to the service key.
PATH_NOT_ALLOWEDCheck the service key path prefix and the path passed to the export.
Screenshot exports failConfirm screenshot-basic is installed and started before fivemesh-sdk.
Upload URL expiredCreate a new upload URL and keep expiresIn short but long enough for the caller to upload.

Check the service key

The SDK reads the service key from FIVEMESH_API_KEY.
set FIVEMESH_API_KEY "fm_live_..."
set FIVEMESH_API_KEY_MUGSHOTS "fm_live_..."
Create the key from Account > API keys and give it the exact CDN permission your export needs. If an export uses keyProfile = "MUGSHOTS", the SDK reads FIVEMESH_API_KEY_MUGSHOTS. Profile names are case-sensitive.
ExportRequired permission
listObjectscdn:read
uploadFile, uploadImage, bulkUploadcdn:write
createPresignedUrl, takeServerImage, client takeImagecdn:write
deleteObject, bulkDeletecdn:delete
purgeObjectscdn:purge

Check the path scope

If the service key is scoped to /screenshots, keep uploads and deletes under that path.
exports["fivemesh-sdk"]:uploadImage(dataUrl, nil, {
    path = "screenshots/profile",
    filename = "profile.webp"
})
Avoid absolute paths, backslashes and dot-prefixed segments.

Check screenshot setup

Screenshot helpers require screenshot-basic.
ensure screenshot-basic
ensure fivemesh-sdk
If the call times out, increase the timeout passed to takeServerImage and confirm the target player is still connected.