Profiles
Methods, permissions, request fields and response schemas for profiles.
Read and search
Retrieve current records, history and status.
List organization profilesSearch the profiles owned by your organization and paginate through concise summaries.GET/agent-profiles
/agent-profilesPagination: Default 50, maximum 100. Follow nextCursor with the same search, tenant and resource until null. Creation cutoff excludes later inserts; mutable fields may change between pages. Unsupported search returns 400.
Query parameters
| Field | Type | Description and constraints |
|---|---|---|
limitOptional | integer | Minimum 1 · Maximum 100 · Default: 50 |
cursorOptional | string | At least 1 characters · At most 768 characters |
searchOptional | string | At least 0 characters · At most 200 characters |
Edit example fields and validate the request against its schema.
What you receive
{data: bounded profiles summaries[], nextCursor: string | null}. Fetch detail endpoints for full records.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X GET "$BASE/agent-profiles?limit=50" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN"Success response schema · HTTP 200
{
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"organizationId": {
"type": "string",
"format": "uuid"
},
"createdById": {
"type": "string",
"format": "uuid"
},
"operatingAgentId": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"platform": {
"type": "string",
"enum": [
"linkedin",
"facebook",
"x",
"upwork",
"reddit"
]
},
"displayName": {
"type": "string"
},
"headline": {
"type": [
"string",
"null"
]
},
"profileUrl": {
"type": "string"
},
"photoUrl": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"currentCompany": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"available",
"rented",
"unlisted"
]
},
"priceInCents": {
"type": "integer"
},
"pricingPeriod": {
"type": "string",
"enum": [
"day",
"week",
"month"
]
},
"payoutMethod": {
"type": "string",
"enum": [
"fiat",
"crypto"
]
},
"twoFactorKey": {
"type": [
"string",
"null"
]
},
"antiDetectBrowser": {
"type": [
"string",
"null"
]
},
"canBeRehosted": {
"type": "boolean"
},
"agentPayoutRateCents": {
"type": [
"integer",
"null"
]
},
"monthlyExpenses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"amountCents": {
"type": "integer"
}
},
"required": [
"label",
"amountCents"
],
"additionalProperties": false
}
},
"connectionCount": {
"type": [
"integer",
"null"
]
},
"isVerified": {
"type": "boolean"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"id",
"organizationId",
"createdById",
"operatingAgentId",
"platform",
"displayName",
"headline",
"profileUrl",
"photoUrl",
"city",
"currentCompany",
"status",
"priceInCents",
"pricingPeriod",
"payoutMethod",
"antiDetectBrowser",
"canBeRehosted",
"agentPayoutRateCents",
"monthlyExpenses",
"connectionCount",
"isVerified",
"createdAt",
"updatedAt"
],
"additionalProperties": false
},
"maxItems": 100,
"minItems": 0
},
"nextCursor": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 768
}
},
"required": [
"data",
"nextCursor"
],
"additionalProperties": false
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.
Read a profileGet one accessible profile, including its current listing and rental state.GET/agent-profiles/:id
/agent-profiles/:idPath parameters
| Field | Type | Description and constraints |
|---|---|---|
idRequired | string · uuid | Resource UUID scoped to the current organization. |
Edit example fields and validate the request against its schema.
What you receive
One accessible organization profile; unknown or inaccessible profile returns 404.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X GET "$BASE/agent-profiles/$ID" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN"Success response schema · HTTP 200
{
"application/json": {
"schema": {
"type": "object",
"properties": {
"platform": {
"type": "string",
"enum": [
"linkedin",
"facebook",
"x",
"upwork",
"reddit"
]
},
"displayName": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"headline": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"profileUrl": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"photoUrl": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 2048
},
"bannerUrl": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 2048
},
"city": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"currentCompany": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"antiDetectBrowser": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"canBeRehosted": {
"type": "boolean"
},
"priceInCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"pricingPeriod": {
"type": "string",
"enum": [
"day",
"week",
"month"
]
},
"description": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"connectionCount": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 9007199254740991
},
"gender": {
"type": [
"string",
"null"
],
"enum": [
"male",
"female",
"other",
null
]
},
"isVerified": {
"type": "boolean"
},
"payoutMethod": {
"type": "string",
"enum": [
"fiat",
"crypto"
]
},
"scrapedData": {
"type": [
"object",
"null"
],
"additionalProperties": true,
"description": "Platform scrape metadata. Keep credentials out of this field."
},
"isAutoScraped": {
"type": "boolean"
},
"operatingAgentId": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"agentPayoutRateCents": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 9007199254740991
},
"monthlyExpenses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"minLength": 0,
"maxLength": 60
},
"amountCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"label",
"amountCents"
],
"additionalProperties": false
},
"maxItems": 20,
"minItems": 0
},
"id": {
"type": "string",
"format": "uuid"
},
"organizationId": {
"type": "string",
"format": "uuid"
},
"createdById": {
"type": "string",
"format": "uuid"
},
"publicSlug": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"twoFactorKey": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000,
"description": "Omitted by default; requires profiles:credentials:read on a Profiles operation."
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"status": {
"type": "string",
"enum": [
"available",
"rented",
"unlisted"
]
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"id",
"organizationId",
"platform",
"displayName",
"profileUrl",
"status",
"priceInCents",
"pricingPeriod"
],
"additionalProperties": true
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.
Read an Upwork importCheck an import job and review its public profile details or failure reason.GET/agent-profiles/upwork-imports/:id
/agent-profiles/upwork-imports/:idPath parameters
| Field | Type | Description and constraints |
|---|---|---|
idRequired | string · uuid | Resource UUID scoped to the current organization. |
Edit example fields and validate the request against its schema.
What you receive
Job state, imported public details or failure details; an import receipt is scoped to its organization and creator.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X GET "$BASE/agent-profiles/upwork-imports/$ID" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN"Success response schema · HTTP 200
{
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"status": {
"type": "string",
"enum": [
"pending"
]
}
},
"required": [
"id",
"status"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"status": {
"type": "string",
"enum": [
"ready"
]
},
"profile": {
"type": "object",
"properties": {
"profileUrl": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"displayName": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"headline": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"description": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"city": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"upwork": {
"type": "object",
"properties": {
"jobSuccessScore": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"completedJobs": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"totalHours": {
"type": "number",
"minimum": 0,
"maximum": 9007199254740991
},
"totalEarningsUsd": {
"type": "number",
"minimum": 0,
"maximum": 9007199254740991
},
"hourlyRateUsd": {
"type": "number",
"minimum": 0,
"maximum": 9007199254740991
},
"talentBadge": {
"type": "string",
"enum": [
"rising-talent",
"top-rated",
"top-rated-plus",
"expert-vetted"
]
},
"skills": {
"type": "array",
"items": {
"type": "string",
"minLength": 0,
"maxLength": 5000
}
},
"source": {
"type": "string",
"enum": [
"manual",
"reviewed-import"
]
},
"provider": {
"type": "string",
"enum": [
"moxlade"
]
},
"fetchedAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"source",
"updatedAt"
],
"additionalProperties": true
}
},
"required": [
"profileUrl",
"displayName",
"headline",
"description",
"city",
"upwork"
],
"additionalProperties": true
},
"fetchedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"id",
"status",
"profile",
"fetchedAt"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"status": {
"type": "string",
"enum": [
"failed"
]
},
"message": {
"type": "string",
"minLength": 0,
"maxLength": 5000
}
},
"required": [
"id",
"status",
"message"
],
"additionalProperties": true
}
]
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.
Read profile sectionsRead the ordered sections that automation is allowed to see for a profile.GET/agent-profiles/:id/sections
/agent-profiles/:id/sectionsPath parameters
| Field | Type | Description and constraints |
|---|---|---|
idRequired | string · uuid | Resource UUID scoped to the current organization. |
Edit example fields and validate the request against its schema.
What you receive
Ordered section array for an accessible profile. Hidden/private text is redacted for automation.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X GET "$BASE/agent-profiles/$ID/sections" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN"Success response schema · HTTP 200
{
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"icon": {
"type": "string",
"minLength": 0,
"maxLength": 40
},
"bodyType": {
"type": "string",
"enum": [
"list",
"description"
]
},
"body": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"items": {
"type": "array",
"items": {
"type": "string",
"minLength": 0,
"maxLength": 500
},
"maxItems": 50,
"minItems": 0
},
"sortOrder": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"id": {
"type": "string",
"format": "uuid"
},
"agentProfileId": {
"type": "string",
"format": "uuid"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"title",
"icon",
"bodyType",
"body",
"items",
"sortOrder",
"id",
"agentProfileId",
"createdAt",
"updatedAt"
],
"additionalProperties": true
}
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.
Create and import
Add records, prepare imports or start a new setup.
Save a profileSave a reviewed profile as a draft before making it available on the marketplace.POST/agent-profiles
/agent-profilesSend Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.
Before you use it
antiDetectBrowser=none keeps the profile unlisted. Upwork imports require a reviewed import receipt; listing affects the public marketplace.
Request body
| Field | Type | Description and constraints | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
platformRequired | string | One of: "linkedin", "facebook", "x", "upwork", "reddit" | |||||||||
displayNameRequired | string | At least 1 characters · At most 200 characters | |||||||||
headlineOptional | string | At least 0 characters · At most 5000 characters | |||||||||
profileUrlRequired | string · uri | At most 2048 characters | |||||||||
photoUrlOptional | string | At least 0 characters · At most 2048 characters | |||||||||
bannerUrlOptional | string | At least 0 characters · At most 2048 characters | |||||||||
cityOptional | string | At least 0 characters · At most 200 characters | |||||||||
currentCompanyOptional | string | At least 0 characters · At most 200 characters | |||||||||
twoFactorKeyOptional | string | Sensitive credential input. Never returned in webhook payloads; keep bot keys narrowly scoped. At least 0 characters · At most 200 characters | |||||||||
antiDetectBrowserRequired | string | At least 1 characters · At most 80 characters | |||||||||
canBeRehostedOptional | boolean | ||||||||||
priceInCentsRequired | integer | Minimum 0 · Maximum 9007199254740991 | |||||||||
pricingPeriodOptional | string | One of: "day", "week", "month" | |||||||||
descriptionOptional | string | At least 0 characters · At most 5000 characters | |||||||||
connectionCountOptional | integer | Minimum 0 · Maximum 9007199254740991 | |||||||||
genderOptional | string | One of: "male", "female", "other" | |||||||||
isVerifiedOptional | boolean | ||||||||||
payoutMethodOptional | string | One of: "fiat", "crypto" | |||||||||
scrapedDataOptional | object | Platform scrape metadata. Keep credentials out of this field. | |||||||||
upworkImportIdOptional | string · uuid | ||||||||||
isAutoScrapedOptional | boolean | ||||||||||
listImmediatelyOptional | boolean | Automation saves a draft by default. Review before publishing with status=available. Default: false | |||||||||
operatingAgentIdOptional | string · uuid | ||||||||||
agentPayoutRateCentsOptional | integer | Minimum 0 · Maximum 9007199254740991 | |||||||||
monthlyExpensesOptional | array of object | At least 0 items · At most 20 itemsNested fields
|
Edit example fields and validate the request against its schema.
What you receive
Created profile. Review unlisted draft, then PATCH status=available to publish.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X POST "$BASE/agent-profiles" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
-H "Idempotency-Key: $ACTION_KEY" \
-H "Content-Type: application/json" \
--data '{"platform":"linkedin","displayName":"Reviewed profile","profileUrl":"https://www.linkedin.com/in/example/","antiDetectBrowser":"goundetected","priceInCents":5000,"pricingPeriod":"month","listImmediately":false}'Full JSON request schema
{
"type": "object",
"properties": {
"platform": {
"type": "string",
"enum": [
"linkedin",
"facebook",
"x",
"upwork",
"reddit"
]
},
"displayName": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"headline": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"profileUrl": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"photoUrl": {
"type": "string",
"minLength": 0,
"maxLength": 2048
},
"bannerUrl": {
"type": "string",
"minLength": 0,
"maxLength": 2048
},
"city": {
"type": "string",
"minLength": 0,
"maxLength": 200
},
"currentCompany": {
"type": "string",
"minLength": 0,
"maxLength": 200
},
"twoFactorKey": {
"type": "string",
"minLength": 0,
"maxLength": 200,
"description": "Sensitive credential input. Never returned in webhook payloads; keep bot keys narrowly scoped."
},
"antiDetectBrowser": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"canBeRehosted": {
"type": "boolean"
},
"priceInCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"pricingPeriod": {
"type": "string",
"enum": [
"day",
"week",
"month"
]
},
"description": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"connectionCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"gender": {
"type": "string",
"enum": [
"male",
"female",
"other"
]
},
"isVerified": {
"type": "boolean"
},
"payoutMethod": {
"type": "string",
"enum": [
"fiat",
"crypto"
]
},
"scrapedData": {
"type": "object",
"additionalProperties": true,
"description": "Platform scrape metadata. Keep credentials out of this field."
},
"upworkImportId": {
"type": "string",
"format": "uuid"
},
"isAutoScraped": {
"type": "boolean"
},
"listImmediately": {
"type": "boolean",
"default": false,
"description": "Automation saves a draft by default. Review before publishing with status=available."
},
"operatingAgentId": {
"type": "string",
"format": "uuid"
},
"agentPayoutRateCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"monthlyExpenses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"minLength": 0,
"maxLength": 60
},
"amountCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"label",
"amountCents"
],
"additionalProperties": false
},
"maxItems": 20,
"minItems": 0
}
},
"required": [
"platform",
"displayName",
"profileUrl",
"antiDetectBrowser",
"priceInCents"
],
"additionalProperties": false
}Success response schema · HTTP 201
{
"application/json": {
"schema": {
"type": "object",
"properties": {
"platform": {
"type": "string",
"enum": [
"linkedin",
"facebook",
"x",
"upwork",
"reddit"
]
},
"displayName": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"headline": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"profileUrl": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"photoUrl": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 2048
},
"bannerUrl": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 2048
},
"city": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"currentCompany": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"antiDetectBrowser": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"canBeRehosted": {
"type": "boolean"
},
"priceInCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"pricingPeriod": {
"type": "string",
"enum": [
"day",
"week",
"month"
]
},
"description": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"connectionCount": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 9007199254740991
},
"gender": {
"type": [
"string",
"null"
],
"enum": [
"male",
"female",
"other",
null
]
},
"isVerified": {
"type": "boolean"
},
"payoutMethod": {
"type": "string",
"enum": [
"fiat",
"crypto"
]
},
"scrapedData": {
"type": [
"object",
"null"
],
"additionalProperties": true,
"description": "Platform scrape metadata. Keep credentials out of this field."
},
"isAutoScraped": {
"type": "boolean"
},
"operatingAgentId": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"agentPayoutRateCents": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 9007199254740991
},
"monthlyExpenses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"minLength": 0,
"maxLength": 60
},
"amountCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"label",
"amountCents"
],
"additionalProperties": false
},
"maxItems": 20,
"minItems": 0
},
"id": {
"type": "string",
"format": "uuid"
},
"organizationId": {
"type": "string",
"format": "uuid"
},
"createdById": {
"type": "string",
"format": "uuid"
},
"publicSlug": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"twoFactorKey": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000,
"description": "Omitted by default; requires profiles:credentials:read on a Profiles operation."
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"status": {
"type": "string",
"enum": [
"available",
"rented",
"unlisted"
]
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"id",
"organizationId",
"platform",
"displayName",
"profileUrl",
"status",
"priceInCents",
"pricingPeriod"
],
"additionalProperties": true
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.
Import public LinkedIn detailsFetch public LinkedIn details for review before you create or update a profile.POST/agent-profiles/scrape
/agent-profiles/scrapeSend Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.
Before you use it
A duplicate check runs before the paid scraper. This can incur provider costs; no scraping guarantee.
Request body
| Field | Type | Description and constraints |
|---|---|---|
urlRequired | string · uri | At most 2048 characters |
excludeProfileIdOptional | string · uuid |
Edit example fields and validate the request against its schema.
What you receive
Scraped profile data for review; this does not create a listing.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X POST "$BASE/agent-profiles/scrape" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
-H "Idempotency-Key: $ACTION_KEY" \
-H "Content-Type: application/json" \
--data '{"url":"https://www.linkedin.com/in/example/"}'Full JSON request schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"excludeProfileId": {
"type": "string",
"format": "uuid"
}
},
"required": [
"url"
],
"additionalProperties": false
}Success response schema · HTTP 201
{
"application/json": {
"schema": {
"type": "object",
"properties": {
"firstName": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"lastName": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"displayName": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"headline": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"about": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"photoUrl": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"bannerUrl": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"city": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"currentCompany": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"followers": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 9007199254740991
},
"connections": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 9007199254740991
},
"gender": {
"type": "null"
},
"isVerified": {
"type": [
"boolean",
"null"
]
},
"verifications": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"description": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"verifiedAt": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
}
},
"required": [
"type",
"description",
"verifiedAt"
],
"additionalProperties": true
}
},
"firstRoleYear": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 9007199254740991
},
"totalExperienceYears": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 9007199254740991
},
"experiences": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"companyName": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"companyLogoUrl": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"companyLinkedinUrl": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"employmentType": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"startDate": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"endDate": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"duration": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"location": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"workMode": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"description": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
}
},
"required": [
"title",
"companyName",
"companyLogoUrl",
"companyLinkedinUrl",
"employmentType",
"startDate",
"endDate",
"duration",
"location",
"workMode",
"description"
],
"additionalProperties": true
}
}
},
"required": [
"displayName",
"headline",
"about",
"photoUrl",
"bannerUrl",
"city",
"currentCompany",
"followers",
"connections",
"gender",
"isVerified",
"verifications",
"firstRoleYear",
"totalExperienceYears",
"experiences"
],
"additionalProperties": true
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.
Start an Upwork importStart an import job and retain its receipt for the review step.POST/agent-profiles/upwork-imports
/agent-profiles/upwork-importsSend Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.
Request body
| Field | Type | Description and constraints |
|---|---|---|
urlRequired | string · uri | At most 2048 characters |
requestIdRequired | string · uuid | |
excludeProfileIdOptional | string · uuid |
Edit example fields and validate the request against its schema.
What you receive
Import job/receipt identifier and status; poll before applying the reviewed result.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X POST "$BASE/agent-profiles/upwork-imports" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
-H "Idempotency-Key: $ACTION_KEY" \
-H "Content-Type: application/json" \
--data '{"url":"https://www.upwork.com/freelancers/~0123456789abcdef01","requestId":"923ee3b1-2b21-4ce3-8c2c-679e22867541"}'Full JSON request schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"requestId": {
"type": "string",
"format": "uuid"
},
"excludeProfileId": {
"type": "string",
"format": "uuid"
}
},
"required": [
"url",
"requestId"
],
"additionalProperties": false
}Success response schema · HTTP 201
{
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"status": {
"type": "string",
"enum": [
"pending"
]
}
},
"required": [
"id",
"status"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"status": {
"type": "string",
"enum": [
"ready"
]
},
"profile": {
"type": "object",
"properties": {
"profileUrl": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"displayName": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"headline": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"description": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"city": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"upwork": {
"type": "object",
"properties": {
"jobSuccessScore": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"completedJobs": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"totalHours": {
"type": "number",
"minimum": 0,
"maximum": 9007199254740991
},
"totalEarningsUsd": {
"type": "number",
"minimum": 0,
"maximum": 9007199254740991
},
"hourlyRateUsd": {
"type": "number",
"minimum": 0,
"maximum": 9007199254740991
},
"talentBadge": {
"type": "string",
"enum": [
"rising-talent",
"top-rated",
"top-rated-plus",
"expert-vetted"
]
},
"skills": {
"type": "array",
"items": {
"type": "string",
"minLength": 0,
"maxLength": 5000
}
},
"source": {
"type": "string",
"enum": [
"manual",
"reviewed-import"
]
},
"provider": {
"type": "string",
"enum": [
"moxlade"
]
},
"fetchedAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"source",
"updatedAt"
],
"additionalProperties": true
}
},
"required": [
"profileUrl",
"displayName",
"headline",
"description",
"city",
"upwork"
],
"additionalProperties": true
},
"fetchedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"id",
"status",
"profile",
"fetchedAt"
],
"additionalProperties": true
},
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"status": {
"type": "string",
"enum": [
"failed"
]
},
"message": {
"type": "string",
"minLength": 0,
"maxLength": 5000
}
},
"required": [
"id",
"status",
"message"
],
"additionalProperties": true
}
]
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.
Upload a profile imageUpload an image into your organization's profile asset location.POST/agent-profiles/upload-photo
/agent-profiles/upload-photoSend Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.
Request body
| Field | Type | Description and constraints |
|---|---|---|
imageRequired | string | Public image URL or supported image data URL. Existing upload size/type/host checks apply. At least 1 characters · At most 12000000 characters |
platformRequired | string | At least 1 characters · At most 80 characters |
folderOptional | string | One of: "avatars", "banners", "experience-logos" |
Edit example fields and validate the request against its schema.
What you receive
{url:string}. Only the current organization's upload location is used.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X POST "$BASE/agent-profiles/upload-photo" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
-H "Idempotency-Key: $ACTION_KEY" \
-H "Content-Type: application/json" \
--data '{"image":"https://example.com/reviewed-profile.jpg","platform":"linkedin","folder":"avatars"}'Full JSON request schema
{
"type": "object",
"properties": {
"image": {
"type": "string",
"minLength": 1,
"maxLength": 12000000,
"description": "Public image URL or supported image data URL. Existing upload size/type/host checks apply."
},
"platform": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"folder": {
"type": "string",
"enum": [
"avatars",
"banners",
"experience-logos"
]
}
},
"required": [
"image",
"platform"
],
"additionalProperties": false
}Success response schema · HTTP 201
{
"application/json": {
"schema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 0,
"maxLength": 2048
}
},
"required": [
"url"
],
"additionalProperties": false
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.
Create an initials avatarGenerate an initials avatar when you do not have a profile image.POST/agent-profiles/default-avatar
/agent-profiles/default-avatarSend Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.
Request body
| Field | Type | Description and constraints |
|---|---|---|
displayNameOptional | string | At least 0 characters · At most 200 characters |
platformOptional | string | At least 0 characters · At most 80 characters |
Edit example fields and validate the request against its schema.
What you receive
{url:string}. Platform defaults to linkedin; display name defaults to ?.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X POST "$BASE/agent-profiles/default-avatar" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
-H "Idempotency-Key: $ACTION_KEY" \
-H "Content-Type: application/json" \
--data '{}'Full JSON request schema
{
"type": "object",
"properties": {
"displayName": {
"type": "string",
"minLength": 0,
"maxLength": 200
},
"platform": {
"type": "string",
"minLength": 0,
"maxLength": 80
}
},
"required": [],
"additionalProperties": false
}Success response schema · HTTP 201
{
"application/json": {
"schema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 0,
"maxLength": 2048
}
},
"required": [
"url"
],
"additionalProperties": false
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.
Update and configure
Change existing records, assignments and configuration.
Edit or publish a profileEdit profile details or change listing visibility within the actor's permissions.PATCH/agent-profiles/:id
/agent-profiles/:idSend Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.
Path parameters
| Field | Type | Description and constraints |
|---|---|---|
idRequired | string · uuid | Resource UUID scoped to the current organization. |
Request body
| Field | Type | Description and constraints |
|---|---|---|
platformOptional | string | One of: "linkedin", "facebook", "x", "upwork", "reddit" |
displayNameOptional | string | At least 1 characters · At most 200 characters |
headlineOptional | string | At least 0 characters · At most 5000 characters |
profileUrlOptional | string · uri | At most 2048 characters |
photoUrlOptional | string | At least 0 characters · At most 2048 characters |
bannerUrlOptional | string | At least 0 characters · At most 2048 characters |
cityOptional | string | At least 0 characters · At most 200 characters |
currentCompanyOptional | string | At least 0 characters · At most 200 characters |
twoFactorKeyOptional | string | Sensitive credential input. Never returned in webhook payloads; keep bot keys narrowly scoped. At least 0 characters · At most 200 characters |
antiDetectBrowserOptional | string | At least 1 characters · At most 80 characters |
canBeRehostedOptional | boolean | |
priceInCentsOptional | integer | Minimum 0 · Maximum 9007199254740991 |
pricingPeriodOptional | string | One of: "day", "week", "month" |
descriptionOptional | string | At least 0 characters · At most 5000 characters |
connectionCountOptional | integer | Minimum 0 · Maximum 9007199254740991 |
genderOptional | string | One of: "male", "female", "other" |
isVerifiedOptional | boolean | |
payoutMethodOptional | string | One of: "fiat", "crypto" |
scrapedDataOptional | object | Platform scrape metadata. Keep credentials out of this field. |
upworkImportIdOptional | string · uuid | |
statusOptional | string | available publishes; unlisted hides. rented is subject to service lifecycle checks; use rental actions for paid rentals. One of: "available", "rented", "unlisted" |
Edit example fields and validate the request against its schema.
What you receive
Updated profile. Existing member field restrictions, rental-state rules and duplicate URL checks apply.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X PATCH "$BASE/agent-profiles/$ID" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
-H "Idempotency-Key: $ACTION_KEY" \
-H "Content-Type: application/json" \
--data '{"status":"available"}'Full JSON request schema
{
"type": "object",
"properties": {
"platform": {
"type": "string",
"enum": [
"linkedin",
"facebook",
"x",
"upwork",
"reddit"
]
},
"displayName": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"headline": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"profileUrl": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"photoUrl": {
"type": "string",
"minLength": 0,
"maxLength": 2048
},
"bannerUrl": {
"type": "string",
"minLength": 0,
"maxLength": 2048
},
"city": {
"type": "string",
"minLength": 0,
"maxLength": 200
},
"currentCompany": {
"type": "string",
"minLength": 0,
"maxLength": 200
},
"twoFactorKey": {
"type": "string",
"minLength": 0,
"maxLength": 200,
"description": "Sensitive credential input. Never returned in webhook payloads; keep bot keys narrowly scoped."
},
"antiDetectBrowser": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"canBeRehosted": {
"type": "boolean"
},
"priceInCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"pricingPeriod": {
"type": "string",
"enum": [
"day",
"week",
"month"
]
},
"description": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"connectionCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"gender": {
"type": "string",
"enum": [
"male",
"female",
"other"
]
},
"isVerified": {
"type": "boolean"
},
"payoutMethod": {
"type": "string",
"enum": [
"fiat",
"crypto"
]
},
"scrapedData": {
"type": "object",
"additionalProperties": true,
"description": "Platform scrape metadata. Keep credentials out of this field."
},
"upworkImportId": {
"type": "string",
"format": "uuid"
},
"status": {
"type": "string",
"enum": [
"available",
"rented",
"unlisted"
],
"description": "available publishes; unlisted hides. rented is subject to service lifecycle checks; use rental actions for paid rentals."
}
},
"required": [],
"additionalProperties": false
}Success response schema · HTTP 200
{
"application/json": {
"schema": {
"type": "object",
"properties": {
"platform": {
"type": "string",
"enum": [
"linkedin",
"facebook",
"x",
"upwork",
"reddit"
]
},
"displayName": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"headline": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"profileUrl": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"photoUrl": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 2048
},
"bannerUrl": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 2048
},
"city": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"currentCompany": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"antiDetectBrowser": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"canBeRehosted": {
"type": "boolean"
},
"priceInCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"pricingPeriod": {
"type": "string",
"enum": [
"day",
"week",
"month"
]
},
"description": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"connectionCount": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 9007199254740991
},
"gender": {
"type": [
"string",
"null"
],
"enum": [
"male",
"female",
"other",
null
]
},
"isVerified": {
"type": "boolean"
},
"payoutMethod": {
"type": "string",
"enum": [
"fiat",
"crypto"
]
},
"scrapedData": {
"type": [
"object",
"null"
],
"additionalProperties": true,
"description": "Platform scrape metadata. Keep credentials out of this field."
},
"isAutoScraped": {
"type": "boolean"
},
"operatingAgentId": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"agentPayoutRateCents": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 9007199254740991
},
"monthlyExpenses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"minLength": 0,
"maxLength": 60
},
"amountCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"label",
"amountCents"
],
"additionalProperties": false
},
"maxItems": 20,
"minItems": 0
},
"id": {
"type": "string",
"format": "uuid"
},
"organizationId": {
"type": "string",
"format": "uuid"
},
"createdById": {
"type": "string",
"format": "uuid"
},
"publicSlug": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"twoFactorKey": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000,
"description": "Omitted by default; requires profiles:credentials:read on a Profiles operation."
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"status": {
"type": "string",
"enum": [
"available",
"rented",
"unlisted"
]
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"id",
"organizationId",
"platform",
"displayName",
"profileUrl",
"status",
"priceInCents",
"pricingPeriod"
],
"additionalProperties": true
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.
Replace profile sectionsReplace the whole section collection atomically; an empty list clears it.PUT/agent-profiles/:id/sections
/agent-profiles/:id/sectionsSend Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.
Before you use it
Replacement uses the current service's ordered replace operation. Hidden text is supported by the application but must not be copied into public content.
Path parameters
| Field | Type | Description and constraints |
|---|---|---|
idRequired | string · uuid | Resource UUID scoped to the current organization. |
Request body
| Field | Type | Description and constraints | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sectionsRequired | array of object | At least 0 items · At most 20 itemsNested fields
|
Edit example fields and validate the request against its schema.
What you receive
The complete new section collection; an empty list clears the sections.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X PUT "$BASE/agent-profiles/$ID/sections" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
-H "Idempotency-Key: $ACTION_KEY" \
-H "Content-Type: application/json" \
--data '{"sections":[{"title":"example","icon":"example","bodyType":"list"}]}'Full JSON request schema
{
"type": "object",
"properties": {
"sections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"icon": {
"type": "string",
"minLength": 0,
"maxLength": 40
},
"bodyType": {
"type": "string",
"enum": [
"list",
"description"
]
},
"body": {
"type": "string",
"minLength": 0,
"maxLength": 5000
},
"items": {
"type": "array",
"items": {
"type": "string",
"minLength": 0,
"maxLength": 500
},
"maxItems": 50,
"minItems": 0
},
"sortOrder": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"title",
"icon",
"bodyType"
],
"additionalProperties": false
},
"maxItems": 20,
"minItems": 0
}
},
"required": [
"sections"
],
"additionalProperties": false
}Success response schema · HTTP 200
{
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"icon": {
"type": "string",
"minLength": 0,
"maxLength": 40
},
"bodyType": {
"type": "string",
"enum": [
"list",
"description"
]
},
"body": {
"type": [
"string",
"null"
],
"minLength": 0,
"maxLength": 5000
},
"items": {
"type": "array",
"items": {
"type": "string",
"minLength": 0,
"maxLength": 500
},
"maxItems": 50,
"minItems": 0
},
"sortOrder": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"id": {
"type": "string",
"format": "uuid"
},
"agentProfileId": {
"type": "string",
"format": "uuid"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"title",
"icon",
"bodyType",
"body",
"items",
"sortOrder",
"id",
"agentProfileId",
"createdAt",
"updatedAt"
],
"additionalProperties": true
}
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.
Remove and disconnect
Remove a record, revoke access or end a connection.
Delete a profilePermanently remove a profile after its active rental has ended.DELETE/agent-profiles/:id
/agent-profiles/:idSend Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.
Path parameters
| Field | Type | Description and constraints |
|---|---|---|
idRequired | string · uuid | Resource UUID scoped to the current organization. |
Edit example fields and validate the request against its schema.
What you receive
{deleted:true}. Active rentals must be ended through their lifecycle before deletion.
Request example · cURL
Replace example IDs and values. Supply the token from your secret store. Each intended write uses one stable $ACTION_KEY.
curl -X DELETE "$BASE/agent-profiles/$ID" \
-H "Authorization: Bearer $ALLPROFILES_API_TOKEN" \
-H "Idempotency-Key: $ACTION_KEY"Success response schema · HTTP 200
{
"application/json": {
"schema": {
"type": "object",
"properties": {
"deleted": {
"type": "boolean"
}
},
"required": [
"deleted"
],
"additionalProperties": false
}
}
}Errors and recovery
400- Invalid JSON, request fields, query, path identifier or missing Idempotency-Key.
401- Missing, invalid, revoked or expired organization API token; its issuing actor must still be the current organization owner.
403- Token scope or actor capability denied, disabled/banned account, or action unavailable.
404- Unknown route or resource not accessible in the bound organization. Cross-tenant resources are not enumerated.
409- Conflicting profile/rental state, duplicate resource, idempotency payload mismatch or operation still in progress.
410- event_cursor_expired: the event cursor is behind retained history. Reconcile current resources and start from the supplied recovery cursor.
422- Business validation/moderation rejected the operation. CHAT_MESSAGE_BLOCKED was not delivered.
429- API rate/concurrency limit exceeded; use backoff and Retry-After when present.
500- Internal operation error. Sensitive implementation details are not returned. Investigate using the request ID before repeating a write.
503- Provider or configuration unavailable; uncertain writes must retain the same Idempotency-Key.
These are documented API errors. The local sandbox checks schema fields only and does not test authorization, moderation or provider behavior.
Financial fields named ...Cents or ...InCents use integer cents. Path fields and nested constraints are shown above and in the downloadable OpenAPI contract.