Lists
A list is a collection of companies, contacts or projects that someone has put together, such as the clients to visit this quarter or the guests for an event. A target list is one the firm is working through. Building Lists describes them as people use them in tiny+.
Lists have endpoints of their own. They aren't a record type, so the list filters, search and the generic create, update and delete requests don't apply to them.
GET /v2/lists
The lists the token's user made or follows, every list, or the imported ones.
GET /v2/lists?record_id={id}
The lists a record is on, and the ones it could be added to.
GET /v2/lists?can_add={type}
GET /v2/lists/{id}
One list, with its summary.
GET /v2/lists/{id}/members
Its members, a page at a time.
GET /v2/lists/{id}/candidates?q=
Records to add, by name.
POST /v2/lists/{id}/members
PATCH /v2/lists/{id}/members/{record_id}
Sets the comment on a member.
DELETE /v2/lists/{id}/members
POST and DELETE /v2/lists/{id}/follow
Follows or unfollows the list.
POST /v2/lists
PATCH /v2/lists/{id}
DELETE /v2/lists/{id}
Four things differ from the record endpoints:
Ids are numbers, not strings.
Text is plain. Names, descriptions and comments come back as typed, not HTML-escaped.
Times are UTC, as
2026-10-02T02:42:41Z. A date with no time isYYYY-MM-DD.Errors are sentences written for the person using your app:
{"error": "That list could not be found."}. See Errors.
Is it there?
/me lists lists in api_features when the API has these endpoints. integrations.lists is false on an account that has Lists hidden from its menu.
Who sees a list
A list is shared or personal. Everyone in the account can see a shared list, and add to it or take from it. A personal list belongs to the person who made it. For anyone else, an account admin included, every request for it answers 404, as if it weren't there.
The lists
GET https://api.tiny.plus/v2/lists
tab
yours, the default: the lists the token's user made or follows. all is every list they can see. imports is the lists that imports made, which the other two leave out.
list_flavour
Only lists of companies, contacts or projects.
q
Only lists whose name or description contains this.
Target lists come first, then the rest by name. There is no paging.
counts is how many lists each tab holds, whatever list_flavour and q say.
list_flavour
What the list holds: companies, contacts or projects. A list holds one type.
target
Whether it's a target list.
visibility
shared or personal.
created_user
Who made it.
mine
Whether the token's user made it.
following
Whether the token's user follows it.
member_count
How many records are on it. Deleted and archived records aren't counted.
last_added
When a record was last added, or null for an empty list.
Get one list
GET https://api.tiny.plus/v2/lists/{{id}}
can_change
Whether the token's user may add records, take them off and comment on them.
plans
Whether its members carry relationship plans: a target list of companies, on an account with plans.
sorts
The orders its members can come in. next is only there where plans is true.
summary.statuses
How many members are in each status, in the account's status order. name is the account's name for the status. A member with no status has value "" and name null.
summary.plans
Where plans is true: how many companies are on the list, how many have a live plan, and how many of those are overdue or due soon. Otherwise null.
summary.email
For a list of contacts: how many there are, and how many have an email address. Otherwise null.
summary.fees
For a list of projects: the fees of its proposals (pipeline), and of its won, active, on-hold and completed projects (confirmed), as decimal strings. null for other lists, and for a person the account hides fees from.
Members
GET https://api.tiny.plus/v2/lists/{{id}}/members
q
Only members whose name, or the list's comment on them, contains this. Up to 100 characters.
sort
name, the default. added is most recently added first, updated most recently changed first, and next soonest follow-up first, where the list has plans. An order the list doesn't offer falls back to name, and the answer's sort says which was used.
limit, start
50 members a page, 200 at most. Pass next_start as start to get the next page.
ids
1 adds ids: the id of every member that matches, in order, whatever the page.
Every member has these:
comment
The list's comment on this member, or null.
added
When it was put on the list.
record_status, record_phase
The record's status, and its phase's id if it has one.
record_status_display
The phase's name where the record has one, or the account's name for its status.
assigned_user
Who it's assigned to, or null. active is false for someone who has left.
show_obscured
true for a confidential record the token's user can't see.
The rest depends on what the list holds.
Companies
projects_line
Its projects in a line, as the list's page in tiny+ writes it, or null if it has none.
key_contact
The first of its current contacts, by name, or null.
other_contacts
How many more current contacts it has.
last_contact
The last follow-up done on one of its relationship plans: date and touch_type. null if there's none.
plan
Only where the list has plans. The company's live plan with the soonest follow-up, or null. status is on_track, due_soon, overdue, nothing_booked or paused, and more is how many other live plans it has.
Contacts
title
Their job title.
company
Their company's id and name, or null.
email
Their email address.
phone
Their direct number, or else their mobile, or else their office number.
Projects
client
The client's id and name, or null.
fee_value
The fee, as a decimal string. null for a person the account hides fees from.
close_date
The project's close date.
Confidential members
A confidential record the token's user can't see is still a row, so that the rows agree with member_count, summary and ids. It carries only what the list says about it:
q matches such a member by its comment, never by its name.
The lists a record is on
GET https://api.tiny.plus/v2/lists?record_id={{record_id}}
For a company, a contact or a project. records is the lists it's on that the token's user can see, target lists first. Each also carries comment: that list's comment on this record, as its members give it, or null when there's none. can_add is the lists of its type that it isn't on and they may add it to.
comment is always there, so an answer without the key comes from an API that doesn't send it yet. To change it, comment on the member.
A record the token's user can't see answers 404, and so does a record of any other type.
The lists that take a type of record
GET https://api.tiny.plus/v2/lists?can_add=contacts
The lists the token's user may add companies, contacts or projects to, target lists first, for an "Add to a list" menu. except leaves one list out, such as the one the records are already on.
Find records to add
GET https://api.tiny.plus/v2/lists/{{id}}/candidates?q=crest
Up to 20 records of the list's type whose names contain q, by name. q needs two characters or more. Confidential records the token's user can't see are left out.
detail is a company's town, or the company of a contact or a project. on_list says whether the record is on the list already.
Add records
POST https://api.tiny.plus/v2/lists/{{id}}/members
ids
Required. The records to add, up to 500: a list of ids, or ids separated by commas.
restore
true puts a record that was on the list before back with the comment it had. Without it, a record added again starts with no comment.
Only records of the list's own type are added. A record of another type, one that's already on the list, and one the account doesn't have are all skipped, so added can be less than requested. Adding nothing new is still a 200.
Comment on a member
PATCH https://api.tiny.plus/v2/lists/{{id}}/members/{{record_id}}
An empty comment clears it. A record that isn't on the list answers 404.
Take records off
DELETE https://api.tiny.plus/v2/lists/{{id}}/members?ids=164565,164568
Name the records in the query string, up to 500. For one record, DELETE /v2/lists/{id}/members/{record_id} does the same.
The records themselves aren't touched. To undo it, add them again with restore.
Follow a list
POST https://api.tiny.plus/v2/lists/{{id}}/follow
POST follows the list for the token's user, and DELETE unfollows it. A list they follow is on their yours tab.
Make a list
POST https://api.tiny.plus/v2/lists
name
Required.
list_flavour
Required: companies, contacts or projects. It can't be changed later.
description
What the list is for.
target
true for a target list. false unless you send it.
visibility
shared, unless you send personal.
The answer is the new list, as Get one list returns it. The token's user follows it.
Change a list
PATCH https://api.tiny.plus/v2/lists/{{id}}
Send any of name, description, target and visibility. The list needs can_edit.
The answer is the list, as Get one list returns it.
A list of more than 100 records can't become a target list. That answers
409.Only the person who made a list can make it
personal. Anyone else gets a403.Sending a
list_flavourother than the list's own answers400.
Delete a list
DELETE https://api.tiny.plus/v2/lists/{{id}}
The list needs can_delete. Deleting a list never deletes the records on it.
Errors
400
Something in the request is wrong: {"error": "Say what the list holds: list_flavour is companies, contacts or projects."}
403
The token's user may not do it: {"error": "You may not edit this list."}. Also a read-only token trying to change anything: {"error": "This token is read-only."}
404
There is no such list, or it's someone else's personal list: {"error": "That list could not be found."}. Also a record that can't be found, or isn't on the list.
409
The list's state rules it out: {"error": "A list of more than 100 records can't be a target list."}
Last updated
Was this helpful?