For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

Request
What it does

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

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 is YYYY-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

Parameter
Description

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.

Field
Description

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}}

Field
Description

can_change

Whether the token's user may add records, take them off and comment on them.

can_edit, can_delete

Whether they may change or delete the list itself.

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

Parameter
Description

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:

Field
Description

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

Field
Description

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

Field
Description

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

Field
Description

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

Field
Description

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

Field
Description

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 a 403.

  • Sending a list_flavour other than the list's own answers 400.

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

Status
When

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?