API and MCP reference

Discovery

25 operations. Each REST operation is also an MCP tool of the same name. REST https://tlntconnect.com/api/v1

GET/api/v1/discovery/runsThis workspace's Discovery searches, newest first, with status and result counts.

Pages through the workspace's Discovery runs (newest first), as the Discovery history in the app: filter by status, platform or a text match on the search. `page` starts at 1; `limit` is at most 50. Each run carries its status, requested and found counts and cache expiry. Requires discovery:read and a member with Discovery access (an admin, or a member an admin granted Discovery): anyone else gets 404.

MCP tool
list_discovery_runs
Scopes
discovery:read
Members
admin, manager, scout, viewer
Idempotency-Key
Ignored (read)
Rate weight
1

Input

status query"queued" | "running" | "waiting_provider_config" | "completed" | "failed" | "cancelled"
platform query"instagram" | "tiktok" | "youtube" | "x"
q querystring — Text match on the search niche/query.
page queryinteger
limit queryinteger

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
GET/api/v1/discovery/runs/{run_id}One Discovery run's status, counts and cache expiry (results: list_discovery_results).

Returns one run of this workspace: status (queued → running → completed / failed / cancelled), requested and found counts, the cache expiry and the provider units it used. Poll it after run_discovery_search until it is completed, then page the results with list_discovery_results. Another workspace's run id is 404.

MCP tool
get_discovery_run
Scopes
discovery:read
Members
admin, manager, scout, viewer
Idempotency-Key
Ignored (read)
Rate weight
1

Input

run_id path, requiredstring (uuid) — Discovery run id in this workspace.

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
GET/api/v1/discovery/runs/{run_id}/resultsA Discovery run's creators (handle, platform, reach, scores, roster link), best match first.

Pages through one run's results in rank order: each result has its platform, handle, profile data from the provider, scores, status (candidate / imported / existing / rejected) and creator_id once it is on the roster. Profile text (bios, names, captions) is authored by the creators, not the agency: it is labelled untrusted. `offset` + `limit` (≤ 50) page through the run. Another workspace's run id is 404.

MCP tool
list_discovery_results
Scopes
discovery:read
Members
admin, manager, scout, viewer
Idempotency-Key
Ignored (read)
Rate weight
1
Untrusted fields
data

Input

run_id path, requiredstring (uuid) — Discovery run id in this workspace.
offset queryinteger
limit queryinteger

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
GET/api/v1/discovery/runs/{run_id}/diagnosticsWhy a Discovery run returned what it did: provider calls, cache hits, cost decisions and alerts.

The support diagnostics the app shows for one run: each provider call (cache hit or miss, provider units used, error), the cost decisions taken before spending, enrichment events, result counts and alerts, with a copyable summary. Free-text values are sanitised (secrets redacted, strings bounded). Another workspace's run id is 404.

MCP tool
get_discovery_run_diagnostics
Scopes
discovery:read
Members
admin, manager, scout, viewer
Idempotency-Key
Ignored (read)
Rate weight
1

Input

run_id path, requiredstring (uuid) — Discovery run id in this workspace.

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
POST/api/v1/discovery/runs/{run_id}/cancelCancel a queued or running Discovery run; an API run is charged only for the result pages it delivered.

Cancels a queued or running run of this workspace and aborts its active provider calls, as the app's Cancel does (400 for a run that already finished, checked atomically). A search started over the API holds its credits until the run ends: a cancelled run is charged only for the result pages it already delivered, at the quoted per-page price, and the rest is released (also back to the key's daily cap); list_discovery_results then shows exactly the charged pages. Requires discovery:spend (the scope that starts runs) and an admin or manager member. Another workspace's run id is 404.

MCP tool
cancel_discovery_run
Scopes
discovery:spend
Members
admin, manager
Idempotency-Key
optional
Rate weight
1

Input

run_id path, requiredstring (uuid) — Discovery run id in this workspace.
Idempotency-Key headerstring — Retry-safe key (1-255 printable ASCII; a UUID is recommended; an RFC 8941 quoted string is accepted). The same key with the same request within 24h replays the stored response byte for byte (Idempotent-Replayed: true) without running again; the replay still consumes the operation's rate weight.
reason bodystring

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
409idempotency_key_reused / idempotency_in_progress / idempotency_context_changed / idempotency_response_too_large
429rate_limited (honour Retry-After)
500internal_error / idempotent_replay_of_failure
503service_unavailable
POST/api/v1/discovery/runs/{run_id}/results/importAdd Discovery results to the roster (and optionally the pipeline); free, per-result outcomes.

Imports up to 25 results of one run into the roster through the app's own import — the creator, their platform profile and metrics — and with add_to_pipeline also into the pipeline. A result already on the roster is linked, not duplicated. Each result answers its own outcome: imported (with creator_id) or failed with an error code — e.g. trial_limit_reached when a trial workspace's roster is full. Billable seats sync after an import. Free (no Discovery credits). Requires discovery:read and roster:write, an admin or manager member, and Discovery access. Another workspace's run or result is 404.

MCP tool
import_discovery_results
Scopes
discovery:read + roster:write
Members
admin, manager
Idempotency-Key
optional
Rate weight
1

Input

run_id path, requiredstring (uuid) — Discovery run id in this workspace.
Idempotency-Key headerstring — Retry-safe key (1-255 printable ASCII; a UUID is recommended; an RFC 8941 quoted string is accepted). The same key with the same request within 24h replays the stored response byte for byte (Idempotent-Replayed: true) without running again; the replay still consumes the operation's rate weight.
result_ids body, requiredarray of string (uuid)
add_to_pipeline bodyboolean

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
409idempotency_key_reused / idempotency_in_progress / idempotency_context_changed / idempotency_response_too_large
429rate_limited (honour Retry-After)
500internal_error / idempotent_replay_of_failure
503service_unavailable
POST/api/v1/discovery/runs/{run_id}/results/add-to-listAdd up to 50 Discovery results to a creator list (importing them to the roster as needed); free.

Adds results of one run to a creator list of this workspace, importing each creator into the roster first when it is not there yet — the app's Discovery "Add to list". Free (no Discovery credits). Requires discovery:read, lists:write and roster:write (it can create roster creators), an admin or manager member, and Discovery access. Another workspace's run, result or list is 404; a trial workspace whose roster is full gets 402 trial_limit_reached.

MCP tool
add_discovery_results_to_list
Scopes
discovery:read + lists:write + roster:write
Members
admin, manager
Idempotency-Key
optional
Rate weight
1

Input

run_id path, requiredstring (uuid) — Discovery run id in this workspace.
Idempotency-Key headerstring — Retry-safe key (1-255 printable ASCII; a UUID is recommended; an RFC 8941 quoted string is accepted). The same key with the same request within 24h replays the stored response byte for byte (Idempotent-Replayed: true) without running again; the replay still consumes the operation's rate weight.
list_id body, requiredstring (uuid) — Creator list id in this workspace.
result_ids body, requiredarray of string (uuid)

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
402trial_limit_reached
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
409idempotency_key_reused / idempotency_in_progress / idempotency_context_changed / idempotency_response_too_large
429rate_limited (honour Retry-After)
500internal_error / idempotent_replay_of_failure
503service_unavailable
GET/api/v1/discovery/runs/{run_id}/results/{result_id}/reportA result's creator report if this workspace already holds it (free); never buys one.

Returns the stored creator report (audience demographics, metrics, contact email when the provider has one) for one Discovery result — free, never a provider call. status is available with the report, or unavailable when this workspace does not hold it: buy it with preflight_creator_report + purchase_creator_report. The preflight block says what loading it would cost. Report text (bio, names) is authored by the creator: it is labelled untrusted. Another workspace's run or result is 404.

MCP tool
get_creator_report
Scopes
discovery:read
Members
admin, manager, scout, viewer
Idempotency-Key
Ignored (read)
Rate weight
1
Untrusted fields
report

Input

run_id path, requiredstring (uuid) — Discovery run id in this workspace.
result_id path, requiredstring (uuid) — Discovery result id (of that run).
calculation_method query"median" | "average"

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
POST/api/v1/discovery/runs/{run_id}/results/{result_id}/reportLoad (buy) a creator report with a quote from preflight_creator_report; free when cached.

Loads the creator report you priced with preflight_creator_report, presenting its quote_token. A report this workspace holds answers at 0 credits; a fresh report another workspace bought is sold without a provider call; otherwise the provider is called. The charge is keyed by the report, so the same report is never charged twice — whatever the retries or Idempotency-Keys. Charged exactly as in the app: a provider pull that returns no report still costs its credits (the rate card). On a key left on "Ask for approval in TLNT" a paid report is queued for an admin (202 pending_approval); a 0-credit (cached) report always answers directly. Report text (bio, names) is authored by the creator: labelled untrusted. Requires discovery:spend, an Idempotency-Key, an admin or manager member with Discovery access.

MCP tool
purchase_creator_report
Scopes
discovery:spend
Members
admin, manager
Approval
Runs directly; queued when the credential asks for approval for discovery_spend
Idempotency-Key
required
Rate weight
5
Untrusted fields
report

Input

run_id path, requiredstring (uuid)
result_id path, requiredstring (uuid)
Idempotency-Key header, requiredstring — Retry-safe key (1-255 printable ASCII; a UUID is recommended; an RFC 8941 quoted string is accepted). The same key with the same request within 24h replays the stored response byte for byte (Idempotent-Replayed: true) without running again; the replay still consumes the operation's rate weight.
calculation_method body"median" | "average"
refresh bodyboolean
quote_token body, requiredstring — The quote_token from the paired preflight (valid 5 minutes, this key only).

Responses

200Success
202pending_approval — queued for approval in TLNT (only when the credential asks for approval for this action class; it runs directly by default)
400invalid_input / invalid_json / invalid_id / idempotency_key_required
401missing_token / invalid_token / revoked_token / expired_token
402insufficient_credits
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
409quote_expired / quote_invalid / quote_stale / idempotency_key_reused / idempotency_in_progress / idempotency_context_changed / idempotency_response_too_large
429rate_limited (honour Retry-After) / daily_credit_cap_reached
500internal_error / idempotent_replay_of_failure
503service_unavailable
GET/api/v1/discovery/creditsThis month's Discovery credit balance: granted, spent, released, remaining and the reset date.

The workspace's customer-credit balance for the current period (the figure the app's credits chip shows): credits granted (per billable manager on per-seat plans), spent, released by failed actions, remaining and the date it resets. remaining is null and metered false on a plan with no credit pool (nothing is ever charged). Credits are integers; one credit is the unit every Discovery price is quoted in. Requires discovery:read.

MCP tool
get_discovery_credits
Scopes
discovery:read
Members
admin, manager, scout, viewer
Idempotency-Key
Ignored (read)
Rate weight
1

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
GET/api/v1/discovery/credits/historyThis month's credit movements, newest first: each charge, release and grant with its running balance.

The customer-credit ledger for the current period, newest first (the app's credit history): each spend (negative amount) with what it was for, each release (a failed or cancelled action handing credits back) and grant, who drew it and the balance after it. `limit` is at most 200. Requires discovery:read.

MCP tool
list_discovery_credit_history
Scopes
discovery:read
Members
admin, manager, scout, viewer
Idempotency-Key
Ignored (read)
Rate weight
1

Input

limit queryinteger

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
GET/api/v1/discovery/presetsSaved Discovery searches this member can see (shared ones and their own), with their schedules.

Lists the workspace's saved Discovery searches (presets) the key's member can see: every shared one, plus their own private ones — another member's private saved search never leaves the database. Each carries its search, schedule (off / daily / weekly) and whether this member can edit it. `q` matches the name; `limit` ≤ 50. A seeded budget cap is hidden from a member who cannot see money. Requires discovery:read.

MCP tool
list_discovery_presets
Scopes
discovery:read
Members
admin, manager, scout, viewer
Idempotency-Key
Ignored (read)
Rate weight
1

Input

q querystring
mine queryboolean
limit queryinteger

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
GET/api/v1/discovery/presets/{preset_id}One saved Discovery search, with its search plan and schedule.

Returns one saved search the key's member can see (shared, or their own). Another member's private saved search and another workspace's id are both 404. Requires discovery:read.

MCP tool
get_discovery_preset
Scopes
discovery:read
Members
admin, manager, scout, viewer
Idempotency-Key
Ignored (read)
Rate weight
1

Input

preset_id path, requiredstring (uuid) — Saved search id in this workspace.

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
POST/api/v1/discovery/presets/{preset_id}/unscheduleTurn off a saved search's daily/weekly runs (stops its recurring spend at once).

Sets a saved search's schedule to off: no more scheduled runs, so no more recurring spend. Turning a schedule ON is recurring spend and follows the credential's Discovery credits setting (schedule_discovery_preset); turning it off never needs approval. Requires discovery:spend, an admin or manager member (or the saved search's owner). Another workspace's id, or another member's private saved search, is 404.

MCP tool
unschedule_discovery_preset
Scopes
discovery:spend
Members
admin, manager
Idempotency-Key
optional
Rate weight
1

Input

preset_id path, requiredstring (uuid) — Saved search id in this workspace.
Idempotency-Key headerstring — Retry-safe key (1-255 printable ASCII; a UUID is recommended; an RFC 8941 quoted string is accepted). The same key with the same request within 24h replays the stored response byte for byte (Idempotent-Replayed: true) without running again; the replay still consumes the operation's rate weight.

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
409idempotency_key_reused / idempotency_in_progress / idempotency_context_changed / idempotency_response_too_large
429rate_limited (honour Retry-After)
500internal_error / idempotent_replay_of_failure
503service_unavailable
POST/api/v1/discovery/runs/{run_id}/results/{result_id}/report/preflightPrice a Discovery result's creator report (0 if this workspace holds it) and get its quote_token.

Free. Prices the full creator report (audience demographics, metrics, contact email when the provider has one) for one Discovery result: 0 credits when this workspace already holds a fresh copy, otherwise the report rate (15 credits). A refresh re-pulls a report this workspace holds, allowed once it is 14 days old. Returns the app's report preflight and, when the report can be loaded, a quote_token (5 minutes, this key only) for purchase_creator_report with the same run_id, result_id, calculation_method and refresh. Requires discovery:spend, an admin or manager member with Discovery access. Another workspace's run or result is 404.

MCP tool
preflight_creator_report
Scopes
discovery:spend
Members
admin, manager
Idempotency-Key
Ignored (read)
Rate weight
1

Input

run_id path, requiredstring (uuid)
result_id path, requiredstring (uuid)
calculation_method body"median" | "average"
refresh bodyboolean

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
POST/api/v1/discovery/contact-unlock/preflightPrice a contact unlock (1 credit per email; pricing provisional) and get the quote_token unlock_creator_contacts needs.

Free. Price a contact unlock (1 credit per email; pricing provisional) and get the quote_token unlock_creator_contacts needs. The quote_token is valid 5 minutes, only for this key and its member and exactly this request; pass the same fields to unlock_creator_contacts. Calls the paid-provider gate first (503 while live provider calls are switched off, 403 when the member may not spend). Requires discovery:spend, an admin or manager member with Discovery access.

MCP tool
preflight_contact_unlock
Scopes
discovery:spend
Members
admin, manager
Idempotency-Key
Ignored (read)
Rate weight
1

Input

emails body, requiredarray of string (email)

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
POST/api/v1/discovery/contact-unlockFind creators by the emails they registered (1 credit per email; pricing provisional) with a quote from preflight_contact_unlock.

Looks up which creator profiles registered each email (up to 100 emails), presenting the quote_token from preflight_contact_unlock. 1 credit per email. Pricing is provisional (it follows the metering catalog's rate card, so the daily credit cap bounds provider spend). Profile names and handles are authored by the creators: labelled untrusted. The charge is keyed by the quote's signed provider request, so a retry is never charged twice; a provider failure releases the credits. By default it runs within the credential's daily Discovery-credit cap (429 daily_credit_cap_reached). When the credential asks for approval in TLNT for Discovery credits, the lookup is queued for an admin instead (202 pending_approval; once executed, read the result with get_discovery_spend_result). 409 quote_expired / quote_invalid / quote_stale: preflight again; 402 insufficient_credits. Requires discovery:spend, an Idempotency-Key, an admin or manager member with Discovery access.

MCP tool
unlock_creator_contacts
Scopes
discovery:spend
Members
admin, manager
Approval
Runs directly; queued when the credential asks for approval for discovery_spend
Idempotency-Key
required
Rate weight
5
Untrusted fields
data

Input

Idempotency-Key header, requiredstring — Retry-safe key (1-255 printable ASCII; a UUID is recommended; an RFC 8941 quoted string is accepted). The same key with the same request within 24h replays the stored response byte for byte (Idempotent-Replayed: true) without running again; the replay still consumes the operation's rate weight.
emails body, requiredarray of string (email)
quote_token body, requiredstring — The quote_token from the paired preflight (valid 5 minutes, this key only).

Responses

200Success
202pending_approval — queued for approval in TLNT (only when the credential asks for approval for this action class; it runs directly by default)
400invalid_input / invalid_json / invalid_id / idempotency_key_required
401missing_token / invalid_token / revoked_token / expired_token
402insufficient_credits
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
409quote_expired / quote_invalid / quote_stale / idempotency_key_reused / idempotency_in_progress / idempotency_context_changed / idempotency_response_too_large
429rate_limited (honour Retry-After) / daily_credit_cap_reached
500internal_error / idempotent_replay_of_failure
503service_unavailable
POST/api/v1/discovery/audience-overlap/preflightPrice an audience overlap (15 credits; pricing provisional) and get the quote_token get_audience_overlap needs.

Free. Price an audience overlap (15 credits; pricing provisional) and get the quote_token get_audience_overlap needs. The quote_token is valid 5 minutes, only for this key and its member and exactly this request; pass the same fields to get_audience_overlap. Calls the paid-provider gate first (503 while live provider calls are switched off, 403 when the member may not spend). Requires discovery:spend, an admin or manager member with Discovery access.

MCP tool
preflight_audience_overlap
Scopes
discovery:spend
Members
admin, manager
Idempotency-Key
Ignored (read)
Rate weight
1

Input

platform body, required"instagram" | "youtube"
influencers body, requiredarray of string

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
POST/api/v1/discovery/audience-overlapAudience overlap between 2-10 creators (15 credits; pricing provisional) with a quote from preflight_audience_overlap.

Measures how much the audiences of 2 to 10 Instagram or YouTube creators overlap (each creator's overlapping and unique share, and the totals), presenting the quote_token from preflight_audience_overlap. 15 credits. Pricing is provisional (it follows the metering catalog's rate card, so the daily credit cap bounds provider spend). Usernames are authored by the creators: labelled untrusted. The charge is keyed by the quote's signed provider request, so a retry is never charged twice; a provider failure releases the credits. By default it runs within the credential's daily Discovery-credit cap (429 daily_credit_cap_reached). When the credential asks for approval in TLNT for Discovery credits, the lookup is queued for an admin instead (202 pending_approval; once executed, read the result with get_discovery_spend_result). 409 quote_expired / quote_invalid / quote_stale: preflight again; 402 insufficient_credits. Requires discovery:spend, an Idempotency-Key, an admin or manager member with Discovery access.

MCP tool
get_audience_overlap
Scopes
discovery:spend
Members
admin, manager
Approval
Runs directly; queued when the credential asks for approval for discovery_spend
Idempotency-Key
required
Rate weight
5
Untrusted fields
data

Input

Idempotency-Key header, requiredstring — Retry-safe key (1-255 printable ASCII; a UUID is recommended; an RFC 8941 quoted string is accepted). The same key with the same request within 24h replays the stored response byte for byte (Idempotent-Replayed: true) without running again; the replay still consumes the operation's rate weight.
platform body, required"instagram" | "youtube"
influencers body, requiredarray of string
quote_token body, requiredstring — The quote_token from the paired preflight (valid 5 minutes, this key only).

Responses

200Success
202pending_approval — queued for approval in TLNT (only when the credential asks for approval for this action class; it runs directly by default)
400invalid_input / invalid_json / invalid_id / idempotency_key_required
401missing_token / invalid_token / revoked_token / expired_token
402insufficient_credits
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
409quote_expired / quote_invalid / quote_stale / idempotency_key_reused / idempotency_in_progress / idempotency_context_changed / idempotency_response_too_large
429rate_limited (honour Retry-After) / daily_credit_cap_reached
500internal_error / idempotent_replay_of_failure
503service_unavailable
POST/api/v1/discovery/collaborations/preflightPrice a collaborations lookup (3 credits; pricing provisional) and get the quote_token get_creator_collaborations needs.

Free. Price a collaborations lookup (3 credits; pricing provisional) and get the quote_token get_creator_collaborations needs. The quote_token is valid 5 minutes, only for this key and its member and exactly this request; pass the same fields to get_creator_collaborations. Calls the paid-provider gate first (503 while live provider calls are switched off, 403 when the member may not spend). Requires discovery:spend, an admin or manager member with Discovery access.

MCP tool
preflight_creator_collaborations
Scopes
discovery:spend
Members
admin, manager
Idempotency-Key
Ignored (read)
Rate weight
1

Input

kind body, required"posts" | "summary"
platform body, required"instagram" | "tiktok" | "youtube"
id body, requiredstring — The creator's or brand's profile id, username or URL.
collaborator_id bodystring
cursor bodystring
limit bodyinteger
group_brand_collaborations bodyboolean
created_after_ms bodyinteger — posts only
created_before_ms bodyinteger — posts only

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error
POST/api/v1/discovery/collaborationsA creator's or brand's sponsored collaborations (3 credits; pricing provisional) with a quote from preflight_creator_collaborations.

Lists the brand collaborations of a creator (or the creators of a brand): kind posts (the sponsored posts, up to 30, optionally between created_after_ms and created_before_ms) or summary (counts per counterpart, up to 10), presenting the quote_token from preflight_creator_collaborations. 3 credits. Pricing is provisional (it follows the metering catalog's rate card, so the daily credit cap bounds provider spend). Post text and names are authored outside the agency: labelled untrusted. The charge is keyed by the quote's signed provider request, so a retry is never charged twice; a provider failure releases the credits. By default it runs within the credential's daily Discovery-credit cap (429 daily_credit_cap_reached). When the credential asks for approval in TLNT for Discovery credits, the lookup is queued for an admin instead (202 pending_approval; once executed, read the result with get_discovery_spend_result). 409 quote_expired / quote_invalid / quote_stale: preflight again; 402 insufficient_credits. Requires discovery:spend, an Idempotency-Key, an admin or manager member with Discovery access.

MCP tool
get_creator_collaborations
Scopes
discovery:spend
Members
admin, manager
Approval
Runs directly; queued when the credential asks for approval for discovery_spend
Idempotency-Key
required
Rate weight
5
Untrusted fields
data

Input

Idempotency-Key header, requiredstring — Retry-safe key (1-255 printable ASCII; a UUID is recommended; an RFC 8941 quoted string is accepted). The same key with the same request within 24h replays the stored response byte for byte (Idempotent-Replayed: true) without running again; the replay still consumes the operation's rate weight.
kind body, required"posts" | "summary"
platform body, required"instagram" | "tiktok" | "youtube"
id body, requiredstring — The creator's or brand's profile id, username or URL.
collaborator_id bodystring
cursor bodystring
limit bodyinteger
group_brand_collaborations bodyboolean
created_after_ms bodyinteger — posts only
created_before_ms bodyinteger — posts only
quote_token body, requiredstring — The quote_token from the paired preflight (valid 5 minutes, this key only).

Responses

200Success
202pending_approval — queued for approval in TLNT (only when the credential asks for approval for this action class; it runs directly by default)
400invalid_input / invalid_json / invalid_id / idempotency_key_required
401missing_token / invalid_token / revoked_token / expired_token
402insufficient_credits
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
409quote_expired / quote_invalid / quote_stale / idempotency_key_reused / idempotency_in_progress / idempotency_context_changed / idempotency_response_too_large
429rate_limited (honour Retry-After) / daily_credit_cap_reached
500internal_error / idempotent_replay_of_failure
503service_unavailable
POST/api/v1/discovery/presets/{preset_id}/scheduleRun a saved search daily or weekly. Runs directly within the daily credit cap unless this credential asks for approval in TLNT for Discovery credits.

Schedules one of your own saved searches to run daily or weekly. Each scheduled run spends Discovery credits like a search, capped at the saved search's current uncached price per run, and is charged to THIS credential's daily Discovery credit cap when it runs: a run that would pass the cap is skipped (not charged), and the schedule stops when the API key or connection is revoked or expires or its member is deactivated. In the "Discovery credits" approval class: by default it is scheduled at once — the price per run is computed now and also counts against today's credit cap (429 daily_credit_cap_reached past it, nothing scheduled) — and answers 200 { status: "scheduled", data: { preset_id, schedule_frequency, schedule_next_run_at } }. When the credential asks for approval in TLNT for Discovery credits, it is queued for an admin instead (202 pending_approval; the approver sees the price per run; poll get_action). Turn it off at once with unschedule_discovery_preset. Only the saved search's owner can schedule it (403); another workspace's id or another member's private saved search is 404. Requires discovery:spend, an Idempotency-Key, an admin or manager member with Discovery access.

MCP tool
schedule_discovery_preset
Scopes
discovery:spend
Members
admin, manager
Approval
Runs directly; queued when the credential asks for approval for discovery_spend
Idempotency-Key
required
Rate weight
1

Input

preset_id path, requiredstring (uuid)
Idempotency-Key header, requiredstring — Retry-safe key (1-255 printable ASCII; a UUID is recommended; an RFC 8941 quoted string is accepted). The same key with the same request within 24h replays the stored response byte for byte (Idempotent-Replayed: true) without running again; the replay still consumes the operation's rate weight.
frequency body, required"daily" | "weekly"

Responses

200Success
202pending_approval — queued for approval in TLNT (only when the credential asks for approval for this action class; it runs directly by default)
400invalid_input / invalid_json / invalid_id / idempotency_key_required
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
409idempotency_key_reused / idempotency_in_progress / idempotency_context_changed / idempotency_response_too_large
429rate_limited (honour Retry-After) / daily_credit_cap_reached
500internal_error / idempotent_replay_of_failure
503service_unavailable
GET/api/v1/discovery/spend-results/{action_id}What a queued paid Discovery call did once approved: its run, report, lookup data or script job.

For a paid Discovery call THIS key queued for approval: once an admin approved it and it ran (get_action status executed), returns what it produced — the search's discovery_run_id, the report's result_id (read it free with get_creator_report), a lookup's data (contact unlock, audience overlap, collaborations), the script job, or the schedule — and the credits it charged. Before that, result is null and status says where it is. Another credential's or workspace's action id is 404. Lookup data is authored outside the agency: labelled untrusted. It is kept for the Modash data-retention window (30 days, result_expires_at); after that the result carries result_expired: true and no data.

MCP tool
get_discovery_spend_result
Scopes
discovery:read
Members
admin, manager, scout, viewer
Idempotency-Key
Ignored (read)
Rate weight
1
Untrusted fields
result

Input

action_id path, requiredstring (uuid) — The action_id a queued paid call returned.

Responses

200Success
400invalid_input / invalid_json / invalid_id
401missing_token / invalid_token / revoked_token / expired_token
403missing_scope / actor_unavailable / plan_upgrade_required / role_forbidden
404not_found (unknown, cross-workspace or not visible to the key's member)
429rate_limited (honour Retry-After)
500internal_error