Toneden

Learn how to use Toneden with Composio

Overview

SLUG: TONEDEN

Description

ToneDen automates social media campaigns, advertising, and landing pages, particularly for music promoters and event organizers looking to boost audience reach

Authentication Details

client_id
stringRequired
client_secret
stringRequired
oauth_redirect_uri
stringDefaults to https://backend.composio.dev/api/v1/auth-apps/add
scopes
stringDefaults to user,posts,profiles
bearer_token
string
generic_api_key
stringRequired

Connecting to Toneden

Create an auth config

Use the dashboard to create an auth config for the Toneden toolkit. This allows you to connect multiple Toneden accounts to Composio for agents to use.

1

Select App

Navigate to Toneden.

2

Configure Auth Config Settings

Select among the supported auth schemes of and configure them here.

3

Create and Get auth config ID

Click “Create Toneden Auth Config”. After creation, copy the displayed ID starting with ac_. This is your auth config ID. This is not a sensitive ID — you can save it in environment variables or a database. This ID will be used to create connections to the toolkit for a given user.

Connect Your Account

Using OAuth2

1from composio import Composio
2
3# Replace these with your actual values
4toneden_auth_config_id = "ac_YOUR_TONEDEN_CONFIG_ID" # Auth config ID created above
5user_id = "0000-0000-0000" # UUID from database/application
6
7composio = Composio()
8
9
10def authenticate_toolkit(user_id: str, auth_config_id: str):
11 connection_request = composio.connected_accounts.initiate(
12 user_id=user_id,
13 auth_config_id=auth_config_id,
14 )
15
16 print(
17 f"Visit this URL to authenticate Toneden: {connection_request.redirect_url}"
18 )
19
20 # This will wait for the auth flow to be completed
21 connection_request.wait_for_connection(timeout=15)
22 return connection_request.id
23
24
25connection_id = authenticate_toolkit(user_id, toneden_auth_config_id)
26
27# You can also verify the connection status using:
28connected_account = composio.connected_accounts.get(connection_id)
29print(f"Connected account: {connected_account}")

Using API Key

1from composio import Composio
2
3# Replace these with your actual values
4toneden_auth_config_id = "ac_YOUR_TONEDEN_CONFIG_ID" # Auth config ID created above
5user_id = "0000-0000-0000" # UUID from database/app
6
7composio = Composio()
8
9def authenticate_toolkit(user_id: str, auth_config_id: str):
10 # Replace this with a method to retrieve an API key from the user.
11 # Or supply your own.
12 user_api_key = input("[!] Enter API key")
13
14 connection_request = composio.connected_accounts.initiate(
15 user_id=user_id,
16 auth_config_id=auth_config_id,
17 config={"auth_scheme": "API_KEY", "val": {"generic_api_key": user_api_key}}
18 )
19
20 # API Key authentication is immediate - no redirect needed
21 print(f"Successfully connected Toneden for user {user_id}")
22 print(f"Connection status: {connection_request.status}")
23
24 return connection_request.id
25
26
27connection_id = authenticate_toolkit(user_id, toneden_auth_config_id)
28
29# You can verify the connection using:
30connected_account = composio.connected_accounts.get(connection_id)
31print(f"Connected account: {connected_account}")

Tools

Executing tools

To prototype you can execute some tools to see the responses and working on the Toneden toolkit’s playground

Python
1from composio import Composio
2from openai import OpenAI
3import json
4
5openai = OpenAI()
6composio = Composio()
7
8# User ID must be a valid UUID format
9user_id = "0000-0000-0000" # Replace with actual user UUID from your database
10
11tools = composio.tools.get(user_id=user_id, toolkits=["TONEDEN"])
12
13print("[!] Tools:")
14print(json.dumps(tools))
15
16def invoke_llm(task = "What can you do?"):
17 completion = openai.chat.completions.create(
18 model="gpt-4o",
19 messages=[
20 {
21 "role": "user",
22 "content": task, # Your task here!
23 },
24 ],
25 tools=tools,
26 )
27
28 # Handle Result from tool call
29 result = composio.provider.handle_tool_calls(user_id=user_id, response=completion)
30 print(f"[!] Completion: {completion}")
31 print(f"[!] Tool call result: {result}")
32
33invoke_llm()

Tool List

Tool Name: Create Attachment

Description

Tool to create an attachment. Use when you need to programmatically create a social unlock or contest attachment after gathering all required parameters.

Action Parameters

download_url
string
messenger_page_id
string
platform
string
platforms
array
stream_unlock_url
string
type
stringRequired
unlock_text
string
unlock_type
string

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Delete Advertising Campaign

Description

Deletes a ToneDen advertising campaign by ID using DELETE /advertising/campaigns/{campaignID}.

Action Parameters

campaignID
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Delete ToneDen Playbook Campaign

Description

Deletes a ToneDen playbook campaign by ID using DELETE /playbooks/campaigns/{campaignID}.

Action Parameters

campaign_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get Advertising Campaign

Description

Retrieve a specific advertising campaign by its ID using ToneDen's API. Endpoint: GET /advertising/campaigns/{campaignID} Notes: - This endpoint does not require a userID in the path per official docs. - Some accounts may not have advertising access; in such cases, non-2xx responses are still returned here for observability instead of raising, so the caller can inspect the error object.

Action Parameters

campaignID
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get Advertising Campaign Creative Insights

Description

Retrieve creative performance insights for a specific advertising campaign using ToneDen's API. Endpoint: GET /advertising/campaigns/{campaignID}/creativeInsights. Note: Endpoint uses camelCase `creativeInsights` per official docs.

Action Parameters

campaignID
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get Advertising Campaign Insights

Description

Retrieve performance insights for a specific advertising campaign using ToneDen's API. Endpoint: GET /advertising/campaigns/{campaignID}/insights.

Action Parameters

campaignID
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get Attachment

Description

Tool to retrieve an attachment by ID. Use when you need to fetch details of an existing attachment by its ID.

Action Parameters

attachmentID
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get Attachment Entries Time Series

Description

Tool to fetch time-series entry statistics for a specific attachment. Use when you need chronological entry data points for an attachment.

Action Parameters

attachmentID
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get Attachment Entries Totals

Description

Tool to fetch summary counts of entries for an attachment. Use when you need aggregate entry counts over day, week, month, and lifetime.

Action Parameters

attachmentID
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get Attachment Unlocks By Platform

Description

Tool to fetch counts of unlocks by platform for a specific attachment. Use when you need a breakdown of unlocks across platforms like Spotify, Twitter, etc.

Action Parameters

attachmentID
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Get Attachment Unlocks Time Series

Description

Tool to fetch time-series unlock statistics for a specific attachment. Use when you need chronological unlock data points for an attachment.

Action Parameters

attachmentID
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: List ToneDen Playbook Campaigns

Description

Tool to list playbook campaigns. Use when you need to retrieve a paginated list of all playbook campaigns.

Action Parameters

limit
integer
offset
integer

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: List User Attachments

Description

List User Attachments

Action Parameters

userID
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Update Attachment

Description

Tool to update an existing attachment. Use when you need to flexibly modify any attachment field (or add custom fields) after its creation.

Action Parameters

attachmentID
stringRequired
download_url
string
link_path
string
messenger_page_id
string
platform
string
platforms
array
stream_unlock_url
string
type
string
unlock_text
string
unlock_type
string
update
object

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Update ToneDen Playbook Campaign

Description

Updates a ToneDen playbook campaign by ID using PUT /playbooks/campaigns/{campaignID}. Note: ToneDen's public docs do not expose the full request body schema for updates. This action sends a flexible JSON payload composed from provided fields and returns diagnostic information without raising on non-2xx responses, to aid real-world testing.

Action Parameters

budget
number
campaign_id
stringRequired
end_date
string
metadata
object
name
string
notes
string
start_date
string
status
string
update
object

Action Response

data
objectRequired
error
string
successful
booleanRequired

Tool Name: Update ToneDen User

Description

Tool to update a ToneDen user's profile. Use when you need to modify user details (e.g., name, location, or settings) after fetching them.

Action Parameters

about
string
additional_emails
array
advertising_settings
object
city
string
country
string
display_name
string
interface_settings
object
policy
string
profile_url
string
state
string
timezone_name
string
user_id
stringRequired

Action Response

data
objectRequired
error
string
successful
booleanRequired