Products
Collections
What a Copium collection is, how to make, open, reorder and delete one on the website, who owns it (you or a team), what can go in it, what each person sees, how many you can keep, and the endpoints, with the exact messages Copium answers with.
A collection is a named group that can gather things from across Copium in one place: uploads, albums, boards, meeting polls, short links, Drop files, Discord preview templates and calendars. It has a title (up to 80 characters, with at least one letter or number) and an optional description (up to 300 characters).
A collection only points at things. Deleting a collection never deletes what is in it, and gathering something in a collection never changes who can open it.
Use the website
Open Collections in the account menu (under Organize), or add it to your favourites. You need to be signed in. The collection pages work in the website only, not with an upload token or in the apps. The same actions are available as endpoints, described further down.
Your collections
Collections lists your collections, newest change first. Under the title you see how many you keep and how many things one can hold, for example "3 of 10 collections · Up to 100 things in each" (see Limits). If you are over a lowered limit it says "(number) collections - over your limit of (number), delete some to make more": everything is kept and you can change or delete it, but you can't make more until you are under it.
To make one, fill in Name (up to 80 characters) and, if you like, Description (up to 300 characters; line breaks aren't kept), then press Create collection. The button stays on at your limit, and the page then shows the answer from the server, for example "You can keep up to 10 collections - delete one first, or get Copium+ for 200", with a Get Copium+ link when Copium+ would raise the limit. A new collection opens straight away. In a team, you can also press New in the team library and choose Collection; that opens this page with the team already chosen. The team library lists the team's collections in its Collections tab, and a collection card opens in the same tab.
Under the list heading you can narrow what is shown on the page: All, Personal or In a team (hidden on a team's own list, see below), and Search by name. If the filters hide everything the page says "No collections match". A line such as "4 shown" is read out as you type. Each card has the name (a link), the description, how many items it holds, when it last changed, and for a team collection who owns it and Created by.
Add ?team= and a team ID to the address (/collections?team=...) to see that team's collections and its limits instead. The heading then reads "(team name)'s collections", the All / Personal / In a team filter is hidden (every collection there is the team's), and Name and Description make a collection that the team owns, with the line "Creating in (team name)". If you can't add to that team, or your teams can't be loaded, the page shows your own collections and says so.
One collection
Open a collection to see its title, description, who owns it, and how many items it holds ("12 items", or "12 of 500 items" if you can change it). Collections at the top goes back to the list. If the collection doesn't exist, was deleted, or you can't open it, you see Collection not found.
- Edit details (if you can change it) opens a form for the name and description. Save keeps them and Cancel, or Esc, closes it. If someone changed or removed it meanwhile, the server's message is shown and the page loads again.
- Add to team (on your own personal collections, if you are in a team you can add to) works as for other team items. A refusal is shown in the dialog.
- Delete (if you can delete it) asks Delete "(name)"? The things in it are kept. with Cancel selected first. Nothing in it is deleted.
Tabs sort what is in it by kind: All, Uploads, Albums, Drops, Links, Meetings & boards, Calendars and Discord previews. The tab is kept in the address as ?type=. Arrow keys, Home and End move between tabs. Opening a tab other than All first loads the rest of the collection, and the counts on the tabs appear once everything is loaded.
Each entry is a card with the picture (or a lock for a protected upload), the title, a few facts, Created by and Added by, and Open (which opens the thing in a new tab) and Copy where the thing has a link. The page shows 100 entries at a time; press Load more for the next.
- Move up and Move down (if you can change the collection, on the All tab) reorder it with the keyboard or a click, and keep focus on the button. The page announces "Moved to place (number) of (number)". Quick repeated moves of one card are sent as one change after a short pause. Move down is off on the last loaded card while more are waiting, with the hint "Load more to move it further". Both are off while Load more is loading the next entries, or while an entry is being removed. Reordering uses 60 changes per 10 minutes shared with the other changes you make; if the server refuses, you see its message and the list loads again.
- Remove takes it out of the collection (the thing itself stays where it is). It is for people who can change the collection and for the person who added the entry, even once they can no longer open the thing. You see "Removed from the collection". An Unavailable item is something you can't open; it asks first, because "You can't open it, so you can't add it back."
- If you can't change the collection, things you can't open aren't shown and the page says "(number) things in it are hidden because you can't open them". Things you added but can no longer open are shown as an Unavailable item instead, and aren't counted in that line. If you can open none of them it says "You can't open any of the things in it.". An empty collection says Nothing in this collection yet, and a tab with nothing says "Nothing of this kind here.".
Add to collection
Press Add to collection on an item to put it in one or more collections without leaving the page. You need to be signed in. Where to find it:
| Item | Where |
|---|---|
| Upload | Open the upload from My uploads. Add to collection is in the side panel, by Add to team (not in the staff view of All uploads). |
| Album | The album's page, beside Copy link and Open. It shows for your own album and for an album a team you are in owns or shows, not to a contributor to someone else's album. |
| Short link | The link's row on Links, on every row. |
| Drop | The drop's row under Your drops on Copium Drop. |
| Media board | The board's Share panel, for the owner of a personal board and for members of the team that owns it. |
| Meeting poll | The top of the poll's page, beside Share poll, when you are signed in and the poll is yours or belongs to a team you are in. You don't need the organizer link. |
| Discord preview template | Your saved templates on Discord profile & server preview. |
| Calendar | The calendar's card on Google Calendar for Discord, for your own calendars and for calendars shown in a team you are in. |
| Team library | Every card in the team library except a collection card, and not in the staff view. |
A collection page has no Add to collection (a collection can't hold another collection), and neither does the staff view.
The dialog is read from the server each time it opens, so it always shows where the item is now. The first collection you can tick has focus. Collections are grouped in boxes: Your collections (the personal ones), then one (team name) collections for each team whose collections you can add to.
- Already in marks a collection that holds the item. Tick the others and press Save to add it to each of them in turn.
- Full marks a collection that has reached its limit for things. It can't be ticked, and its note says "This collection is full - remove something from it first".
- Unticking takes it out. Untick a collection that is marked Already in and press Save to take the item out of it (the item itself stays where it is). You can do this if you can change the collection or you added the entry. Otherwise the box stays ticked and off, with the note "You can't take it out of this one".
- New collection reveals a Name box (up to 80 characters) with Create and Cancel. The collection is made as your own, and once made it appears ticked with focus on it. There is no list for choosing who owns it. Opened from a card in a team's library, if you may add to the team, the button reads New collection in (team name) and the collection belongs to the team; a team collection holds only that team's own things, so only the team's items can go in it. For a shared upload that is protected (password, burn after viewing or expired), the button is New collection and makes a personal collection. If Copium refuses to make it (you are at your limit, for example), the answer is shown under the box, with a Get Copium+ link when Copium+ would raise your limit.
Save sends one request for each collection you added the item to or took it out of, one after another. If every one goes through, you see "Added to 1 collection" or "Added to (number) collections" (counting only things newly added) and the dialog closes. If nothing was newly added, because it was already in or you only took it out, you see "Saved". If some don't, the dialog stays open, each collection gets its own line, and focus moves to the first that failed. Copium's reasons are worded as follows:
| Line under a collection | When |
|---|---|
| Added, Taken out | That change went through. If the item was already in, it says Already in. Taking out something that is already gone ("Not in this collection") counts as done |
| It's no longer there, or you can't open it | The item is gone, or you can no longer open it |
| It can't go in a collection right now | The item is held, blocked or no longer available |
| (team name) collections hold only (team name)'s things - add it to the team first | You picked a team collection and the item isn't the team's |
| This collection is full - remove something from it first | The collection filled up meanwhile |
| Not saved - try again in a few minutes | Copium said you are changing too fast: adding allows 120 every 10 minutes, and taking out shares the limit of 60 every 10 minutes with other collection changes. The rest are not sent, and this line is shown on the collection it stopped at and on each one not yet saved |
| Copium's own words, for example a refusal because of your role in the team | Copium refused that one change and said why; its text is shown as it is. The other collections are still tried |
Two answers replace the list:
- "You can't add this to a collection." with only Close: the item doesn't exist, you can't open it, or it can never go in a collection (for example a poll made without an account).
- "This can't go in a collection right now: it's held for review, blocked or no longer available." The collections that already hold the item are still listed, so you can take it out of them, but nothing new can be added.
Personal and team collections
- Personal. You made it and it is yours. Only you can open it, rename it or delete it.
- Team-owned. A team owns it. Everyone in the team can open it, and the team's roles decide who can change it and who can delete it: by default owners, admins and members can rename it, and owners and admins can delete it. The person who made it is shown as Created by, which gives them no special rights, and it stays with the team if they leave. A team collection holds only that team's own things.
A collection can be made in a team, or you can add one of your own to a team (as with other team items). You can also take a team collection out again, and it goes back to whoever made it.
Each person sees only the things in a collection that they can open themselves. A collection never gives anyone access to a thing.
What can go in
Any of these, as long as you can open it yourself:
- uploads (including pastes and transcripts), albums, boards, meeting polls, short links, Drop files and Discord preview templates
- calendars, as a status card only
A personal collection takes anything you can open, including things from teams you are in. A team collection takes only that team's own things: what the team owns, uploads and albums shared with the team the older way, and calendars shown in the team. Something that is yours but isn't the team's is refused with not_team, so add it to the team first. That includes an upload shared with the team the older way while it has a password, burn-after-viewing or an expiry that has passed: it isn't in the team's library, so a team collection won't take it, and one that gets a password later is shown as unavailable.
These never go in:
- a collection (a collection can't hold another collection)
- a Discord preview template's pictures (they belong to the template)
- an upload that is locked as team evidence, which gets the same answer as a thing that doesn't exist, for everyone
- an upload that is held, quarantined or still being processed, a blocked short link, and a Drop file that is no longer active (removed, preserved, expired or used up)
- a meeting poll made without an account
Uploads with a password, burn-after-viewing or an expiry can go in a personal collection, and a team's own uploads can go in a team collection. They are shown as protected, and the collection never hands out a signed link to them.
What each person sees
A collection only points at things, so what you see inside one is decided each time you open it, for you alone:
- A thing you can open is shown as a card, the same card the team's library shows. Short links show where they go only to people who can change the link. A Drop file shows its page, never its download link. Boards, polls and Discord preview templates leave out their invite links, display keys, organizer keys and answers. A calendar shows only its name, Discord server, last sync, whether it has an error and how many events are coming up, never its channels, roles or account.
- A thing you can't open (it is someone else's, you left the team it was in, its team took it out, or it became unavailable) is not shown. It is counted in
hidden. If you can change the collection, or you are the person who added it, you also get an entry inunavailableso you can remove it. That entry has only the entry's own number, its kind, its place in the list, who added it and when,canRemove: true(a stub is only given to people who may remove it) andunavailable: true. It never has the thing's ID, title, picture or link. - An upload locked as evidence is left out completely: no card, no entry in
unavailable, not counted inhidden, and not counted initemsorlimits.countor against the collection's limit for things. What you are shown plushiddenalways equalslimits.count.
When something is deleted, it leaves every collection it was in. A Drop file that is no longer active (removed, preserved, expired or used up) shows as unavailable until the hourly clean-up takes its entry out (see When things change). Entries for things that are gone are not counted.
Limits
| Who | Collections | Things in one collection |
|---|---|---|
| A member without Copium+ | 10 | 100 |
| A member with Copium+ (this includes an active Teams plan) | 200 | 500 |
| A team with the Teams plan | 200 | 500 |
| A team without the Teams plan | 10 | 100 |
Collections a team owns count against the team, not against the member who made them. If a limit shrinks (Copium+ ends, or a team's plan ends), nothing is deleted: you can still open, rename and delete what you have, but you can't make another until you are under the limit. Taking a collection out of a team is refused when it would put its creator over their own limits (see below), and deleting a team gives its collections back to the people who made them, unless their account is gone or banned (see below).
When things change
Collections only point at things, so they follow what happens to the things and to the people who can open them. Entries are only ever removed from collections. The things themselves are never touched.
- You leave a team, or are removed. Your own collections lose anything you could open only through that team: its items, and things other members shared with it. This is final: if you rejoin, those entries do not come back. Collections the team owns stay with the team, with the things you added, and they keep showing you as Created by. Uploads you shared with the team and calendars you showed in it leave the team's collections. Other members' own collections lose the uploads you shared with the team, and the calendars you showed in it, at the next hourly clean-up, because they are no longer shared with it; an album you shared stays shared until you take it out, so it stays in them.
- You delete your account. Your personal collections are deleted, and the things in them are not touched. Collections a team owns stay with the team, with the things you added to them, and show as created by "Deleted member" (in the API,
createdByandaddedByare{ "id": null, "username": "Deleted member" }). Albums you shared with a team the older way stop being shared with it, and so do uploads of yours that are kept because they are held for review: they are no longer shown in the team's collections or in other members' own collections, and their entries go at the next hourly clean-up. Handing a team to a new owner, or the owner transferring it, moves nothing: its collections stay as they are. - A team is deleted. Its collections go back to the members who made them (see Collections in a team). Then every former member's own collections, the ones that just came back included, lose the things they could only open through the team.
- A thing is taken out of a team. It leaves that team's collections straight away. In other members' own collections it disappears at the next hourly clean-up; until then it is not shown (it is counted in
hidden, and shows as an unavailable entry to people who can change the collection). - Your data download includes your own collections with their entries, and the collections you made in a team as metadata only (id, date and the team). See Download your data.
The hourly clean-up
Once an hour Copium removes the entries for things that are gone for good from where the collection can reach them. It goes only by where a thing is, never by a hold or a protection that can be undone:
- entries for things that are deleted
- uploads locked as evidence
- Drop files that are no longer active (removed, preserved, expired or used up)
- things in a personal collection that are no longer its owner's own, owned by a team they are in, or shared with one they are in (they left the team, or it was taken out or no longer shared)
- things in a team collection that the team no longer owns and that are no longer shared with it
Everything else keeps its entry, so nothing is lost while it is away for a while: uploads that are held, quarantined, taken down or still being processed, uploads shared with the team that have a password, burn-after-viewing or an expiry, and blocked short links. While that lasts the thing isn't shown: it is counted in hidden, and shows as an unavailable entry to people who can change the collection and to whoever added it. Once it is back (a hold is lifted, a takedown reversed or a password removed), it is shown again.
Use the API
These endpoints work only while you are signed in on the website. An API key, team key or connected app gets "Sign in on the website to do this", even to list. Reading or changing a collection you can't open gets "Collection not found". Copium staff can't open collections.
| Method and path | What it does |
|---|---|
GET /api/collections | List your collections, plus the ones you made in teams you are still in (marked teamOwned). Add ?team= with a team ID to list that team's collections instead. The answer has items and limits (collections with used and max, and items, the most things one collection can hold) |
POST /api/collections | Make a collection. Send title and, if you like, description. To make it in a team, send teamId and teamOwned: true |
GET /api/collections/:id | Open one collection and a page of what is in it. Add ?cursor= with the nextCursor of the last page to get the next 100 |
PATCH /api/collections/:id | Rename it or change its description (title, description). An empty description clears it |
DELETE /api/collections/:id | Delete it. The things in it are not touched. The answer is 204 |
POST /api/collections/:id/items | Add things. Send items, a list of 1 to 50 of { type, id }. You need the right to change the collection |
PATCH /api/collections/:id/entries/:entryId | Move one entry. Send index, its new place counting from 0 over the whole list (entries and unavailable ones together, in position order, not counting uploads locked as evidence). position is only for ordering and paging. After a move the positions run one after another from 0, and entries nobody is shown (uploads locked as evidence, things that are gone) are removed, as the hourly clean-up would. The answer is { entryId, index } |
DELETE /api/collections/:id/entries/:entryId | Take one entry out. The thing itself is not touched. The answer is 204 |
GET /api/item-collections?type=&id= | Where a thing is and where it could go: addable, and collections, each with id, title, contains and full. A collection that holds the thing also has entryId (the entry to pass to DELETE /api/collections/:id/entries/:entryId) and canRemove (whether you may take it out: you can change the collection, or you added the entry). Collections that don't hold it have neither. Limited to 300 requests in 10 minutes per person, counted apart from opening collections |
A collection has id, title, description, items (how many entries it holds, not counting uploads locked as evidence), updatedAt and can (edit, share, remove and delete: what you may do with it). A team collection also has teamOwned, teamId, team and createdBy. Opening one also gives limits (items, the most one collection can hold, and count, how many it holds now) and:
entries: up to 100 per page, in order. Each hasentryId,type,position,addedBy,addedAt,canRemoveanditem, the card for that thing.canRemovesays whether you may take this entry out: you can change the collection, or you are the person who added itunavailableandhidden: described in What each person sees, for this pagenextCursor: the position to pass ascursorfor the next page, ornullon the last
createdBy (of a team collection, and of each thing's card) and addedBy are { id, username }. For a deleted account they are { "id": null, "username": "Deleted member" }.
Entries are named by their own entryId, which is never reused, so an old page can't remove a newer entry.
Adding things
Each thing is answered on its own. The answer is { added, skipped }: added has entryId, type and id for each thing that went in, and skipped has type, id and a reason. It is 201 when anything was added and 200 when nothing was. They go in at the end, in the order you sent them, and a batch that reaches the collection's limit stops exactly there: what fits goes in and the rest is skipped as full.
| Reason | Meaning |
|---|---|
not_found | There is no such thing, or you can't open it. Copium gives the same answer for both, and for evidence uploads |
not_allowed | It can't go in a collection: a collection, or something held, blocked or no longer available |
not_team | It is a team collection and the thing isn't in the team's library: it isn't the team's, or it is an upload shared the older way that has a password, burn-after-viewing or a passed expiry |
already_in | It is already in this collection |
full | The collection is at its limit for things |
Whoever added an entry can always take it out again while they can open the collection, even if their role can't change it. Everyone else needs the right to change the collection. A team collection's roles work as for renaming it.
You can make 20 collections an hour, add things 120 times every 10 minutes (50 things each time), change, move, remove or delete 60 times every 10 minutes, and open a collection 300 times every 10 minutes, and ask where a thing could go (the Add to collection list) 300 times every 10 minutes, counted separately.
Messages
| Message | When |
|---|---|
| Give the collection a name | The title is empty or missing |
| The name needs at least one letter or number | The title has no letter or number in it (only symbols, emoji or blank-looking characters) |
| The title must be text | The title was sent as something other than text (a number, null, a list) |
| The description must be text | The description was sent as something other than text |
| Send teamOwned: true to make it in a team | You sent a teamId without teamOwned: true |
| Pick the team that will own the collection | You sent teamOwned: true without a teamId |
| That text isn't allowed | The title or description was refused by the text check. Nothing is saved |
| Couldn't check the text right now - try again in a minute | The text check wasn't available (503) |
| Nothing to change | A PATCH without a title or description |
| You can keep up to 10 collections - delete one first, or get Copium+ for 200 | You are at your limit without Copium+ (409) |
| You can keep up to 200 collections - delete one first | You are at your limit with Copium+ (409) |
| (team name) can keep up to 200 collections - delete one first | The team is at its limit (409). Without the Teams plan the number is 10 |
| Team not found | The team doesn't exist or you aren't in it |
| Your role in (team name) can't add to the team - ask the team's owner or an admin | Your role can't add to the team |
| Your role in (team name) can't change it - ask the team's owner or an admin | Your role can't rename a team collection |
| Your role in (team name) can't delete it - ask the team's owner or an admin | Your role can't delete a team collection |
| You are saving too fast - try again in a few minutes | You changed or deleted more than 60 collections in 10 minutes (429) |
| You are making collections too fast - try again later | You made more than 20 collections in an hour (429) |
| Send between 1 and 50 items to add | items is missing, empty, not a list, or has more than 50 things |
| Send the new place as a whole number, starting at 0 | A move without a whole index of 0 or more |
| That page is not valid | cursor isn't a number from a previous answer |
| Not in this collection | The entryId is not an entry of this collection (it was removed, or belongs to another collection), or a thing that is gone, or it is an entry for an upload locked as evidence: that answer is the same for everyone, the person who added it included, and the hourly clean-up removes the entry |
| Item not found | GET /api/item-collections for a thing that doesn't exist, that you can't open, or that can never go in one (a collection, a template's picture, an evidence upload, a poll made without an account). Something held, blocked or no longer available is answered with addable: false |
| You are adding too fast - try again in a few minutes | You added things more than 120 times in 10 minutes (429) |
| You are opening collections too fast - try again in a few minutes | You opened collections (GET /api/collections/:id) more than 300 times in 10 minutes, or asked where a thing could go (GET /api/item-collections) more than 300 times in 10 minutes (429). The two are counted separately |
| Collection not found | It doesn't exist, it is someone else's personal collection, or it belongs to a team you are not in |
| This collection changed while it was being checked - try again | It moved to or from a team while your change was being checked |
Collections in a team
The team's items list lists collections with type=collection (searchable by title), and the number of collections is part of its counts. The list gives each collection's id, title, description, how many things it holds in items, updatedAt and url, and never what is in it.
Adding one of your own collections to a team uses POST /api/teams/:id/items with type set to collection, like any other item. It is refused when:
- the team is at its collection limit: "(team name) can keep up to 200 collections - delete one first" (10 without the Teams plan)
- it holds more things than one of the team's collections can: "(team name)'s collections can hold up to 500 items (100 without the Teams plan) - this one has (number), remove some first"
- it holds things the team doesn't have: "(number) of its items aren't (team name)'s - add them to the team or take them out of the collection first", or "1 of its items isn't (team name)'s - add them to the team or take them out of the collection first" when it is just one. Nothing is moved or dropped for you.
Taking a team collection out (DELETE /api/teams/:id/items/collection/:id) is refused when it would put its creator over their own limits:
- "That would put its creator over their own collection limit - delete it instead"
- "It has more items than its creator's own collections can hold - remove some first"
Deleting a team collection (POST /api/teams/:id/items/collection/:id/delete with confirm: true) needs the team's permission to delete items, and the things in it are kept.
When a team is deleted, its collections go back to the members who made them, whatever their limits. A collection whose maker's account is gone or banned is deleted instead. See Delete a team.