I can't seem to find a way to subscribe and unsubscribe a whole list from a campaign using the API.
Through the web interface I would go to the Recipients page for a campaign and then tick or untick the checkbox next to a list.
When you create a new campaign through the API, you can pass in the ListIDs of the lists that should be added.
When the campaign draft is already created though, I'm afraid it's not possible to add or remove lists via the API. You'd want to delete the draft and create it again in that case.
So in my account I have a single campaign that is sent to many different companies, each company has many employees that receive the email.
I have set it up so that each company has it's own list that contains all the employee email addresses. What I need to be able to do is subscribe and unsubscribe a company from the campaign using the API. Is there a better way to set up my account to achieve this behaviour?
There might be a terminology issue that's confusing us a bit here.
From the perspective of Campaign Monitor, a "campaign" is an entity that can only be sent once. Once you send it, you can't send it again. If through the application you click "edit and resend", internally that creates a new "campaign" which is treated as a completely separate entity to the first.
Through the API, it's exactly the same: you create a campaign once, and as you do so you associate it with the list(s) to which that campaign will be sent. Once the campaign is created, you can't change those lists/segments - as Stig say you would need to delete the draft and create a new one. After you've sent that first campaign, you cannot send it again. No "edit and resend" functionality is available for the API. You are instead required to create a new one. It can have identical content, but it is still a new campaign.
That's how campaign monitor works. I'm not sure how that relates to your idea of subscribing and unsubscribing entire lists from a "campaign", so perhaps you're talking about something different. Do you want to perhaps expand a little on how you are looking to use the api?
Thanks for the response that cleared it up for me. I'll add a 'New Campaign' button to my application that will create a new campaign with the appropriate lists assigned to the campaign based on the companies settings.