Attachments

Store a new attachment.

POST
https://firefly.example.com/api/v1/attachments

Creates a new attachment. The data required can be submitted as a JSON body or as a list of parameters. You cannot use this endpoint to upload the actual file data (see below). This endpoint only creates the attachment object.

Body

JSON array or key=value pairs with the necessary attachment information. See the model for the exact specifications.

application/json,application/x-www-form-urlencodedAttachmentStore
filenamestringrequired
Example
file.pdf
attachable_typeAttachableTypeAccountBudgetBillTransactionJournalPiggyBankTagrequired

The object class to which the attachment must be linked.

Example
Bill
attachable_idstringrequired

ID of the model this attachment is linked to.

Example
134
titlestring
Example
Some PDF file
notesstring | null
Example
Some notes

Parameters

X-Trace-Idstring<uuid>header

Unique identifier associated with this request.

Response

New attachment stored, result in response.

Response fields application/vnd.api+json
dataAttachmentReadrequired
Show child attributes
typestringrequired

Immutable value

Example
attachments
idstringrequired
Example
2
attributesAttachmentPropertiesrequired
Show child attributes
created_atstring<date-time>read only
Example
2026-10-01T00:00:00+00:00
updated_atstring<date-time>read only
Example
2026-10-01T00:00:00+00:00
attachable_typeAttachableTypeAccountBudgetBillTransactionJournalPiggyBankTag

The object class to which the attachment must be linked.

Example
Bill
attachable_idstring

ID of the model this attachment is linked to.

Example
134
hashstring

Hash of the file for basic duplicate detection.

Example
0c3f95f34370baa88f9fd9a671fea305
filenamestring
Example
file.pdf
download_urlstring
Example
https://demo.firefly-iii.org/api/v1/attachments/191/download
upload_urlstring
Example
https://demo.firefly-iii.org/api/v1/attachments/191/download
titlestring | null
Example
Some PDF file
notesstring | null
Example
Some notes
mimestringread only
Example
application/pdf
sizeinteger<int32>read only
Example
48211
400Bad RequestBadRequestResponse

Bad request

Response fields application/json
messagestring
Example
Bad Request
exceptionstring
Example
BadRequestHttpException

Unauthenticated

Response fields application/json
messagestring
Example
Unauthenticated
exceptionstring
Example
AuthenticationException
404Not FoundNotFoundResponse

Page not found

Response fields application/json
messagestring
Example
Resource not found
exceptionstring
Example
NotFoundHttpException
422Unprocessable EntityValidationErrorResponse

Validation error. The body will have the exact details.

Response fields application/json
messagestring
Example
The given data was invalid.
errorsobject
Show child attributes
emailArray<string>
forceArray<string>
blockedArray<string>
fieldArray<string>
roleArray<string>
blocked_codeArray<string>
nameArray<string>
typeArray<string>
ibanArray<string>
startArray<string>
endArray<string>
dateArray<string>
500Internal Server ErrorInternalExceptionResponse

Internal exception

Response fields application/json
messagestring
Example
Internal Exception
exceptionstring
Example
InternalException

Authorization

firefly_iii_authoauth2

OAuth2 authorization code flow. Create a client on your installation's /profile page; it authorizes at /oauth/authorize and issues tokens at /oauth/token there. The URLs below are the demo site's. How to use the API walks through it.

local_bearer_authhttp (bearer)

A Personal Access Token, sent as a bearer token. Create one on your installation under Options > Profile > OAuth > Personal Access Tokens.