Posts
Known as 'Updates' in the API.
A post is a message on the News Feed, or a note on a record such as a project, company or contact. Posts live at /v2/updates.
Posts don't work quite like other records. GET /v2/updates returns the News Feed, or searches posts, rather than listing a table (see Reading posts below), and a post's permissions follow who wrote it, not the usual record rules (see Who can change a post). Authentication, paging and errors are the same as everywhere else, and are covered in Working with the API.
Reading posts
There are three ways to read posts.
The News Feed, or a search
GET https://api.tiny.plus/v2/updates
With no filters, you get the News Feed: the posts shared to it, pinned posts first, then the most recently updated.
With any filter below, you get a search of every post written by a person that the token's user can open, whether it was shared to the News Feed or only posted on a record. Posts tiny+ writes automatically, confidential notes, and posts on a confidential record the user can't open are left out. A search comes back newest first, always as an array.
text
Words the posts must contain, in the post, its comments or its link. Separate alternatives with | and groups with ,: a post must match every group, and any word in a group will do. Words need at least three letters. text=hospital|clinic,ballarat finds posts that mention hospital or clinic, and Ballarat.
about
Records the posts must be linked to, by id or name, in the same format as text. about=1343|1360,8 finds posts linked to project 1343 or 1360, and to company 8.
staff
A comma-separated list of team member ids. Returns the posts written by any of them.
me
Set to 1 for the posts written by the token's user.
created_user, created_date, broadcast, …
Any field in the field reference, with the filter grammar. created_date=>2026-01-01 and broadcast=1 finds this year's News Feed posts.
sort
A field and direction, such as created_date desc. You can sort by created_date, modified_date, name or id. A search is newest first unless you sort it.
limit, start
Paging. limit defaults to 15, maximum 50.
return_format
array returns records as an array. Recommended; a search always returns an array whatever you send.
When a filter can't be applied, the response lists it under dropped, with the reason, rather than ignoring it. If you asked for text or about and none of the words or records could be used, no posts match.
The posts about a record
GET https://api.tiny.plus/v2/updates/{{record_id}}
The id in the path is the id of the record the posts are about — a project, company or contact — not the id of a post. For some record types this also includes the posts on the records linked to it: for a project, for example, the posts on its tasks and meetings.
limit (default 15, maximum 50), start and return_format work as above.
If there is no such record, or the token's user can't see it, the response is 404 {"error": "No related record."}.
One post by its id
GET https://api.tiny.plus/v2/updates?single_id={{id}}
Pass a post's id as single_id. The response has the same shape as a list, with one post in records. If there is no such post, or the token's user can't see it, records is empty.
Notes logged on a relationship plan
When someone logs a relationship plan follow-up as done, their notes become an ordinary post on the company and the contacts it was with. Such a post carries plan_touch, which says what was logged:
did is the sentence tiny+ shows after the author's name, in plain text, and contacts are the people it names. next_date is the follow-up the plan booked next, or null when there isn't one. Other posts have no plan_touch.
Creating a post
POST https://api.tiny.plus/v2/updates
description
Required. The body of the post. Send plain text; HTML is stripped. The post's name is made from the start of it.
related_id
The id of a record the post is about — a project, company, contact or other record the token's user can open. The post appears on that record.
extra_ids
Other record ids to link the post to, as an array, or a comma-separated string such as "8,1360".
broadcast
1 to share the post to the News Feed, 0 to keep it on its record only. Shared by default.
notify
false to create the post without notifying anyone. Notifies by default.
created_user
Account admins only: the team member the post is attributed to. See Permissions.
selected_items
Team member ids to @-mention, as an array. Each is notified and added to the post's team.
Add return_record=1 to get the whole new post back instead of just its id.
A post is shared to the News Feed unless you send "broadcast": "0" — even when it's about a confidential record. To keep a post on a confidential record out of everyone's News Feed, send "broadcast": "0".
If related_id, or any of the extra_ids, isn't a record the token's user can see — it doesn't exist, has been deleted, belongs to another account, or is a confidential record hidden from them — nothing is posted, and the response names the field:
The status is 404, and the message ends (extra_ids) for a bad entry in extra_ids. Leave related_id out (or empty) to post to the News Feed alone.
Who can change a post
A post can be changed only by the person who wrote it, or a News Feed admin (a role account admins hold). This is not the usual record rule: a records admin, or someone merely linked to the post, cannot change it.
Every post you read carries perm_edit and perm_delete, which tell you whether this token may edit or delete that post. They already apply this rule, so a client should read them rather than work it out.
A post that tiny+ generated — one with a non-empty update_type, such as "Nick updated a project" — can still come back with perm_edit: true for its author. Only plain posts are meant to be edited, so offer Edit only when perm_edit is true and update_type is empty.
Editing a post
PUT (or PATCH) https://api.tiny.plus/v2/updates/{{id}}
description is the field to change. Send selected_items to @-mention people in the new text; the response then also carries mentions_added.
results is false if the edit was refused by validation. If the token's user may not change the post, the response is 403 {"error": "You may not change this post: it is not yours."}.
Deleting a post
DELETE https://api.tiny.plus/v2/updates/{{id}}
results is false if the post couldn't be deleted. A post the token's user may not change gives 403 {"error": "You may not change this post: it is not yours."}, and an id that matches no post gives 404 {"error": "Record not found."}.
Comments
Each post read carries its comments and likes in social:
like_ids are the ids of the people who have liked the post. Each comment carries its own perm_edit and perm_delete: a comment can be edited by its author or a News Feed admin, and deleted by those or by the post's author.
Adding a comment
POST https://api.tiny.plus/v2/comments
update_id is the post's id, and comment is the text. The post's author, and anyone else who has commented, are notified.
You can comment on any post you can open — the same posts single_id returns. Any other update_id gets 404 {"error": "Post not found."}, whether the post doesn't exist, has been deleted, belongs to another account, or is one the token's user can't see. If the comment can't be saved, the response is 500 {"error": "Could not add the comment."}.
Field reference
Most values come back as strings, including ids and numbers.
id
Number
The post's id.
No
name
Text
Made from the start of the description.
No
description
Text
The body of the post. Required on create. Send plain text.
Yes
description_HTML
Text
The body with links, @-mentions and embeds kept.
No
description_plain
Text
The body as plain text.
No
broadcast
Yes/no
1 if the post is on the News Feed. Set on create; 1 by default.
Yes
pinned
Yes/no
1 if the post is pinned to the top of the News Feed. Pinning is a News Feed admin action.
No
update_type
Text
Empty for a post someone wrote. Set for a post tiny+ generated.
No
created_user
Team member id
Who wrote the post. Account admins can set it on create; see Attribution.
Admins only
created_date
Date-time (UTC)
When the post was created.
Admins only
modified_user
Team member id
Who last changed the post.
No
modified_date
Date-time (UTC)
When the post was last changed.
No
created_user_record
Object
The author's id, name, role, record_url and hero_thumb_uri.
No
assigned_user
Team member id
The team member the post is assigned to.
Yes
record_url
URL
The post's page in tiny+.
No
attached
Array
The records the post is linked to. Set on create with related_id and extra_ids.
No
images
Array
Images on the post, each with id, name, hero_path_uri and hero_thumb_uri.
No
perm_delete
Yes/no
Whether this token may delete the post.
No
plan_touch
Object
Only on a post that holds the notes of a relationship plan follow-up. See Notes logged on a relationship plan.
No
Last updated
Was this helpful?