Download OpenAPI specification:Download
REST access to FileMaker Server hosted databases.
An independently written OpenAPI description of the Claris FileMaker
Data API, version v1, covering sessions, record operations, finds,
and container uploads.
Read this first
response object and a
messages array. Message code values are strings; success is
"0".Authorization: Bearer {token}. Tokens expire after
15 minutes of inactivity.401. Treat it as an empty result, not a failure.fmrest
extended privilege.This document is a portfolio work sample and is not affiliated with or endorsed by Claris International Inc.
Exchanges HTTP Basic credentials for a session token. The token is
returned in the response body and in the X-FM-Data-Access-Token
header. Send an empty JSON object as the body when no external data
sources are involved.
| database required | string Hosted file name, without the .fmp12 extension. |
Array of objects Credentials for external FileMaker data sources referenced by the file. | |||||||
Array
| |||||||
{ }{- "response": {
- "token": "string"
}, - "messages": [
- {
- "code": "0",
- "message": "OK"
}
]
}Invalidates a session token. Unusually for this API, the token travels in the URL path and no Authorization header is sent.
| database required | string Hosted file name, without the .fmp12 extension. |
| token required | string The session token to invalidate. |
{- "response": { },
- "messages": [
- {
- "code": "0",
- "message": "OK"
}
]
}Returns a range of records in the layout's context. _offset starts
at 1. _sort is a JSON array passed as a URL-encoded string.
| database required | string Hosted file name, without the .fmp12 extension. |
| layout required | string Layout providing the field context for the call. |
| _offset | integer >= 1 Default: 1 One-based index of the first record to return. Defaults to 1. |
| _limit | integer >= 1 Default: 100 Maximum number of records to return. Defaults to 100. |
| _sort | string URL-encoded JSON array of sort specifications, for example: [{"fieldName":"Name","sortOrder":"ascend"}] |
{- "response": {
- "dataInfo": {
- "database": "string",
- "layout": "string",
- "table": "string",
- "totalRecordCount": 0,
- "foundCount": 0,
- "returnedCount": 0
}, - "data": [
- {
- "fieldData": {
- "property1": "string",
- "property2": "string"
}, - "portalData": {
- "property1": [
- {
- "property1": "string",
- "property2": "string"
}
], - "property2": [
- {
- "property1": "string",
- "property2": "string"
}
]
}, - "recordId": "string",
- "modId": "string"
}
]
}, - "messages": [
- {
- "code": "0",
- "message": "OK"
}
]
}Creates one record from a fieldData object. Only fields present on
the layout can be set (a missing field raises FileMaker code 102).
Container fields cannot be set here; use the container upload call.
| database required | string Hosted file name, without the .fmp12 extension. |
| layout required | string Layout providing the field context for the call. |
required | object (FieldData) Map of field name to value. Fields must exist on the layout in use. |
object Optional related records to create through portals on the layout. |
{- "fieldData": {
- "Name": "Karl Fischer titrant, 5L",
- "SKU": "KF-5000",
- "UnitPrice": 412.5,
- "Status": "Active"
}
}{- "response": {
- "recordId": "string",
- "modId": "string"
}, - "messages": [
- {
- "code": "0",
- "message": "OK"
}
]
}| database required | string Hosted file name, without the .fmp12 extension. |
| layout required | string Layout providing the field context for the call. |
| recordId required | string FileMaker internal record id, as returned by create, list, or find calls. |
{- "response": {
- "dataInfo": {
- "database": "string",
- "layout": "string",
- "table": "string",
- "totalRecordCount": 0,
- "foundCount": 0,
- "returnedCount": 0
}, - "data": [
- {
- "fieldData": {
- "property1": "string",
- "property2": "string"
}, - "portalData": {
- "property1": [
- {
- "property1": "string",
- "property2": "string"
}
], - "property2": [
- {
- "property1": "string",
- "property2": "string"
}
]
}, - "recordId": "string",
- "modId": "string"
}
]
}, - "messages": [
- {
- "code": "0",
- "message": "OK"
}
]
}Updates the fields present in fieldData, leaving all others
untouched. Include the modId from a prior read to enable
optimistic locking: the edit is rejected with FileMaker code 306 if
the record changed after that read.
| database required | string Hosted file name, without the .fmp12 extension. |
| layout required | string Layout providing the field context for the call. |
| recordId required | string FileMaker internal record id, as returned by create, list, or find calls. |
required | object (FieldData) Map of field name to value. Fields must exist on the layout in use. |
| modId | string Optional. When present, the edit fails with FileMaker code 306 if the record's current modId differs. |
{- "fieldData": {
- "Status": "Discontinued"
}, - "modId": "7"
}{- "response": {
- "modId": "string"
}, - "messages": [
- {
- "code": "0",
- "message": "OK"
}
]
}Deletes the record immediately. Cascading deletion of related records follows the file's relationship settings, exactly as it would in FileMaker Pro.
| database required | string Hosted file name, without the .fmp12 extension. |
| layout required | string Layout providing the field context for the call. |
| recordId required | string FileMaker internal record id, as returned by create, list, or find calls. |
{- "response": { },
- "messages": [
- {
- "code": "0",
- "message": "OK"
}
]
}Runs a find using FileMaker query grammar. Fields inside one query
object are ANDed; multiple query objects are ORed; a query object
with "omit": "true" excludes its matches.
Criteria strings accept FileMaker find operators, for example
>=100, Karl*, ==exact match, and 2025-01-01...2025-12-31.
Empty result behavior: no matches returns HTTP 404 with FileMaker code 401. Treat that combination as a found set of zero.
Note that offset and limit are strings in this request body,
unlike the integer query parameters on the list call.
| database required | string Hosted file name, without the .fmp12 extension. |
| layout required | string Layout providing the field context for the call. |
required | Array of objects Query objects. Fields within one object are ANDed; objects are ORed against each other. |
Array of objects (SortSpec) | |
| offset | string Default: "1" One-based offset, as a string (a quirk of this endpoint). |
| limit | string Default: "100" Maximum records to return, as a string (a quirk of this endpoint). |
{- "query": [
- {
- "Status": "Active",
- "UnitPrice": ">=100"
}
], - "sort": [
- {
- "fieldName": "UnitPrice",
- "sortOrder": "descend"
}
], - "offset": "1",
- "limit": "25"
}{- "response": {
- "dataInfo": {
- "database": "string",
- "layout": "string",
- "table": "string",
- "totalRecordCount": 0,
- "foundCount": 0,
- "returnedCount": 0
}, - "data": [
- {
- "fieldData": {
- "property1": "string",
- "property2": "string"
}, - "portalData": {
- "property1": [
- {
- "property1": "string",
- "property2": "string"
}
], - "property2": [
- {
- "property1": "string",
- "property2": "string"
}
]
}, - "recordId": "string",
- "modId": "string"
}
]
}, - "messages": [
- {
- "code": "0",
- "message": "OK"
}
]
}Uploads one file into a container field as multipart form data. The
form part must be named upload. Use repetition 1 for
non-repeating container fields.
| database required | string Hosted file name, without the .fmp12 extension. |
| layout required | string Layout providing the field context for the call. |
| recordId required | string FileMaker internal record id, as returned by create, list, or find calls. |
| fieldName required | string Name of the container field on the layout. |
| fieldRepetition required | integer >= 1 One-based repetition number of the container field. |
| upload required | string <application/octet-stream> The file to store in the container field. |
{- "response": {
- "modId": "string"
}, - "messages": [
- {
- "code": "0",
- "message": "OK"
}
]
}