Create a list
data, including its id. Use that id to add and read entries.
Add entries
Entries are the resources a list contains. Add companies, deals, or people by referencing theirid.
Read entries
Fetch the entries in a list to read their current values, including any enriched columns. Entries are paginated like other collections.Lists can hold many entries. Page through them with
limit and lt as described in pagination.Add or remove tags in bulk
POST /v1/lists/{id}/entries/bulk-tags adds or removes tags across selected entries. Metal applies the change to every tags column on the list. On lists with write-back enabled, Metal also writes the tags to the underlying records when the list’s record type supports tag write-back. Today that means funds, limited partners, and fundraising processes; on company, deal, and person lists, a write-back-enabled list reports error for every record-linked entry and writes no tag to the record; entries without a usable reference stay list-only.
Send the entry IDs, the tag IDs, and an operation of add or remove. entryIds accepts 1 to 1,000 IDs and tagIds accepts 1 to 100 IDs. Metal removes duplicate IDs.
affectedResources is recorded for every write-back record type:
updated: at least one tags column changed.noOp: the entry already had (foradd) or already lacked (forremove) every tag.notFound: the entry ID isn’t in this list.error: the entry could not be changed, for example because you can’t edit the underlying record or the list’s record type doesn’t support tag write-back. Metal continues with the rest of the batch.
affectedResources lists the underlying records Metal updated through write-back. It’s omitted when write-back is off or nothing changed.
Metal returns 400 when a request exceeds the limits, uses an unknown tag ID or a tag of the wrong type, or targets a list with no tags column. It returns 403 when you don’t have access to the list.
Find lists
GET /v1/lists returns the lists you can access. Narrow the results with these query parameters:
filter:my-lists(lists you own),shared-with-me(lists shared directly with you), orfirmwide(lists that are not private). Any other non-empty value returns400.q: a case-insensitive substring match on the list name. It combines withfilter.
metadata.hasMore is true when another page exists. Keep requesting the next page until hasMore is false.
page is capped at 100. To iterate past the first 100 pages, use the lt cursor instead. See pagination.
Manage the list
A common workflow
1
Assemble the universe
Search for relevant companies and add the matches as entries.
2
Enrich in bulk
Enrich at the list level so every entry gets firmographics and financials. See enrich companies.
3
Screen and export
Read entries as JSON to rank, filter, or load results into your own system. Paginate with
limit and lt. Metal does not offer a native warehouse connector or Parquet dump — see portability.
