> For the complete documentation index, see [llms.txt](https://framestudio.gitbook.io/framestudio-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://framestudio.gitbook.io/framestudio-documentation/fs-graffiti/api.md).

# API reference

Server exports:

```lua
exports.fs_graffiti:GetPieces()                     -- every piece, keyed by tostring(id)
exports.fs_graffiti:GetPiece(id)
exports.fs_graffiti:GetPiecesNear(coords, radius)
exports.fs_graffiti:CountPiecesByOwner(owner)
exports.fs_graffiti:RemovePiece(id)
exports.fs_graffiti:ClearArea(x, y, z, radius)      -- returns how many came down
exports.fs_graffiti:IsBlacklisted(src)
exports.fs_graffiti:BanArtist(identifier, reason, days)
exports.fs_graffiti:GetPlayerCaps(src)
exports.fs_graffiti:GetDetectedStack()
```

Client exports:

```lua
exports.fs_graffiti:OpenStudio()
exports.fs_graffiti:OpenAdminPanel()
exports.fs_graffiti:StartCleaning()
exports.fs_graffiti:SetGraffitiHidden(hidden)
exports.fs_graffiti:IsStudioOpen()
exports.fs_graffiti:GetPiecesNear(radius)
```

Events you can listen for:

```lua
AddEventHandler('fs_graffiti:server:placed', function(src, placement) end)
AddEventHandler('fs_graffiti:server:cleaned', function(by, placement, reason) end)
AddEventHandler('fs_graffiti:server:designSaved', function(src, design) end)
AddEventHandler('fs_graffiti:client:pieceAdded', function(placement) end)
```

A client-side hook lets you hide every piece for a frame — useful during a cutscene, inside an interior, or in your own photo mode.
