curl --request POST \
--url https://api.tryfuse.ai/api/v1/business/agents/linkedin-profile \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"fieldsToScrape": [],
"listName": "<string>"
}
'import requests
url = "https://api.tryfuse.ai/api/v1/business/agents/linkedin-profile"
payload = {
"fieldsToScrape": [],
"listName": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({fieldsToScrape: [], listName: '<string>'})
};
fetch('https://api.tryfuse.ai/api/v1/business/agents/linkedin-profile', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"agent": {
"id": "6a8dce4e65fd738c00d8928b",
"type": "linkedin-profile",
"name": "Competitor profile engagers",
"status": "initializing",
"started": false
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}Create a linkedin profile agent
Creates a LinkedIn profile scrape agent (linkedin-profile). Scrapes the engagers (fieldsToScrape: likes/comments) of up to maxPosts recent posts from 1-50 profiles (exactly one of profileUrl/profileUrls), optionally on a recurring schedule. A started scrape answers with the agent’s own id, like every other kind; its internal scrape job id never leaves the service. With start: false (the default) a DRAFT is saved — status initializing, nothing billed: read it back with GET /business/agents/, adjust it with PATCH /business/agents/, then start it with POST /business/agents//activate. With start: true the agent is created AND started in one call: its dedicated results list is created, credits are checked and spent, and the provider subscriptions are set up. Either way the answer is 201 { agent: { id, type, name, status, started } } — the same shape for every agent kind, draft or started. Poll GET /business/agents for status and contactsFound, and read the delivered rows with the Lists endpoints via the agent’s listId. Free-plan accounts hold at most 10 agents, drafts included (403 AGENT_LIMIT_REACHED). Every field below is validated by the agents service: a rejected field answers 422 VALIDATION_FAILED, naming it in param and describing every failure in message. listName must not collide with an existing list or agent name (409 LIST_NAME_TAKEN), and starting without enough credits answers 402 INSUFFICIENT_CREDITS without creating anything.
Errors:
422VALIDATION_FAILED— The request was rejected by validation. Either this endpoint’s own request validation (a malformed body), or the agent config itself: a field missing, out of range or not one of the accepted values, or a business rule broken (anexpirationDatethat is not in the future, more industries than the kind accepts, a notification count out of range).paramnames the first offending field andmessagelists every failure.409LIST_NAME_TAKEN—listNameis already used by one of your lists or agents. Pick another name.402INSUFFICIENT_CREDITS— The workspace does not have enough credits to start this agent. Nothing was created or spent.403AGENT_LIMIT_REACHED— Free-plan accounts may hold at most 10 agents, drafts included. Delete an agent or upgrade the plan.400INVALID_REQUEST— The agents service rejected the request for a reason this API does not model specifically. The request is not retryable unchanged.429RATE_LIMITED— The agents bucket is exhausted: 30 requests per minute or 2,000 per day per token owner, shared by every /business/agents operation (a 429 raised by the agents service is relayed with this code too). Retry after theRetry-Afterheader.500UNEXPECTED_ERROR— The agents service failed (5xx, refused service credential, or a timeout after 60s) or the rate limiter was unavailable. Retry later; quoterequest_idto support.
Requires one of the following token scopes: agents.
curl --request POST \
--url https://api.tryfuse.ai/api/v1/business/agents/linkedin-profile \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"fieldsToScrape": [],
"listName": "<string>"
}
'import requests
url = "https://api.tryfuse.ai/api/v1/business/agents/linkedin-profile"
payload = {
"fieldsToScrape": [],
"listName": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({fieldsToScrape: [], listName: '<string>'})
};
fetch('https://api.tryfuse.ai/api/v1/business/agents/linkedin-profile', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"agent": {
"id": "6a8dce4e65fd738c00d8928b",
"type": "linkedin-profile",
"name": "Competitor profile engagers",
"status": "initializing",
"started": false
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}Authorizations
Your API token (af_…) as the Basic-auth username, with an empty password.
Body
Which engagement to collect: "likes" (reactors), "comments" (commenters), or both. At least one is required.
1likes, comments Name for BOTH the agent and the results list it creates. Must be unique across your agents: a name already in use is rejected with 409 LIST_NAME_TAKEN.
true creates AND activates the agent (spends credits); false (default) saves a draft to activate later.
One LinkedIn profile URL (https://www.linkedin.com/in/...). Provide exactly one of profileUrl or profileUrls.
Up to 50 unique LinkedIn profile URLs (https://www.linkedin.com/in/...). Provide exactly one of profileUrl or profileUrls.
1 - 50 elementsHow many of the profile's most recent posts to collect engagement from (1-100, default 5).
1 <= x <= 100Include the profile's reposts and quote posts. Off by default: engagement on a repost belongs to the original author's audience.
Only collect engagement from posts published within this window.
24h, week, month, 3months, year Keep the scrape running on a recurring schedule instead of a single one-shot run.
ISO 8601 date-time at which a recurring scrape stops; must be in the future. Omit to keep it running until you stop it.
Also enrich every delivered contact with a phone number. Costs additional credits per contact enriched.
Also enrich every delivered contact with a work email address. Costs additional credits per contact enriched.
Maximum credits this agent may spend in a single run or refresh (1000 to 200000); delivery-driven monitors stop once their total delivered results reach it. Omit for no limit.
1000 <= x <= 200000Response
Success
Show child attributes
Show child attributes