public api

Submit market-board data from your own tools.

Use the public endpoints when you need to update server prices by a method other than the MarketSense app.

key

Get a valid GUID

Run MarketSense, upload item price data, then upload inventory data. The GUID in your inventory link becomes your source token.

https://www.ffxivmb.com/Inventory/[GUIDISHERE]/Balmung
discord

Ask for access

Console, Mac, Linux, or app-blocked users can message @purveyor on Discord for a key without running the Windows app.

price endpoint

POST current sale listings.

https://ffxivmb.com/public/api/Prices?Server='SERVER'&SourceGuid='GUID'&ItemKey='ITEMKEY'
[
  {
    "CraftSignature": "CraftSignature [string]",
    "IsCrafted": "IsCrafted [boolean]",
    "Materia": "Materia [List[int]]",
    "PricePerUnit": "PricePerUnit [int]",
    "PriceTotal": "PriceTotal [int]",
    "Quantity": "Quantity [int]",
    "IsHQ": "IsHQ [boolean]",
    "RetainerName": "RetainerName [string]",
    "Stain": "Stain [int]",
    "TownID": "TownID [int]",
    "DateObtained": "DateObtained [int Unix timestamp]"
  }
]

If no items are for sale, send one object with defaults for every field except DateObtained, which should be the Unix timestamp for the scan.

history endpoint

POST price history sales.

https://ffxivmb.com/public/api/History?Server='SERVER'&SourceGuid='GUID'&ItemKey='ITEMKEY'
[
  {
    "CharacterName": "CharacterName [string]",
    "PricePerUnit": "PricePerUnit [int]",
    "PriceTotal": "PriceTotal [int]",
    "Quantity": "Quantity [int]",
    "IsHQ": "IsHQ [int, not boolean]",
    "PurchaseDate": "PurchaseDate [int Unix timestamp]"
  }
]

Do not include the type notes in your payload. They are shown only to document the expected shape.

limits

Requests are limited to 60 posts a minute. Invalid data can reduce that limit or trigger an automatic ban that removes data from your GUID and IP. Test carefully, then contact Discord if you need help or a higher limit.