Skip to documentation
Profiles & rentalsProfiles

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
Token scope profiles:readActor permission memberAction type read

Pagination: 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

FieldTypeDescription and constraints
limitOptionalintegerMinimum 1 · Maximum 100 · Default: 50
cursorOptionalstringAt least 1 characters · At most 768 characters
searchOptionalstringAt least 0 characters · At most 200 characters
Explore this request

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
Token scope profiles:readActor permission memberAction type read

Path parameters

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Explore this request

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
Token scope profiles:readActor permission memberAction type read

Path parameters

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Explore this request

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
Token scope profiles:readActor permission memberAction type read

Path parameters

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Explore this request

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
Token scope profiles:writeActor permission managerAction type write

Send 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

FieldTypeDescription and constraints
platformRequiredstringOne of: "linkedin", "facebook", "x", "upwork", "reddit"
displayNameRequiredstringAt least 1 characters · At most 200 characters
headlineOptionalstringAt least 0 characters · At most 5000 characters
profileUrlRequiredstring · uriAt most 2048 characters
photoUrlOptionalstringAt least 0 characters · At most 2048 characters
bannerUrlOptionalstringAt least 0 characters · At most 2048 characters
cityOptionalstringAt least 0 characters · At most 200 characters
currentCompanyOptionalstringAt least 0 characters · At most 200 characters
twoFactorKeyOptionalstring

Sensitive credential input. Never returned in webhook payloads; keep bot keys narrowly scoped.

At least 0 characters · At most 200 characters
antiDetectBrowserRequiredstringAt least 1 characters · At most 80 characters
canBeRehostedOptionalboolean
priceInCentsRequiredintegerMinimum 0 · Maximum 9007199254740991
pricingPeriodOptionalstringOne of: "day", "week", "month"
descriptionOptionalstringAt least 0 characters · At most 5000 characters
connectionCountOptionalintegerMinimum 0 · Maximum 9007199254740991
genderOptionalstringOne of: "male", "female", "other"
isVerifiedOptionalboolean
payoutMethodOptionalstringOne of: "fiat", "crypto"
scrapedDataOptionalobject

Platform scrape metadata. Keep credentials out of this field.

upworkImportIdOptionalstring · uuid
isAutoScrapedOptionalboolean
listImmediatelyOptionalboolean

Automation saves a draft by default. Review before publishing with status=available.

Default: false
operatingAgentIdOptionalstring · uuid
agentPayoutRateCentsOptionalintegerMinimum 0 · Maximum 9007199254740991
monthlyExpensesOptionalarray of objectAt least 0 items · At most 20 items
Nested fields
FieldTypeDescription and constraints
labelRequiredstringAt least 0 characters · At most 60 characters
amountCentsRequiredintegerMinimum 0 · Maximum 9007199254740991
Explore this request

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
Token scope profiles:writeActor permission memberAction type external

Send 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

FieldTypeDescription and constraints
urlRequiredstring · uriAt most 2048 characters
excludeProfileIdOptionalstring · uuid
Explore this request

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
Token scope profiles:writeActor permission managerAction type external

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Request body

FieldTypeDescription and constraints
urlRequiredstring · uriAt most 2048 characters
requestIdRequiredstring · uuid
excludeProfileIdOptionalstring · uuid
Explore this request

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
Token scope profiles:writeActor permission memberAction type write

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Request body

FieldTypeDescription and constraints
imageRequiredstring

Public image URL or supported image data URL. Existing upload size/type/host checks apply.

At least 1 characters · At most 12000000 characters
platformRequiredstringAt least 1 characters · At most 80 characters
folderOptionalstringOne of: "avatars", "banners", "experience-logos"
Explore this request

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
Token scope profiles:writeActor permission memberAction type write

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Request body

FieldTypeDescription and constraints
displayNameOptionalstringAt least 0 characters · At most 200 characters
platformOptionalstringAt least 0 characters · At most 80 characters
Explore this request

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
Token scope profiles:writeActor permission memberAction type write

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Path parameters

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Request body

FieldTypeDescription and constraints
platformOptionalstringOne of: "linkedin", "facebook", "x", "upwork", "reddit"
displayNameOptionalstringAt least 1 characters · At most 200 characters
headlineOptionalstringAt least 0 characters · At most 5000 characters
profileUrlOptionalstring · uriAt most 2048 characters
photoUrlOptionalstringAt least 0 characters · At most 2048 characters
bannerUrlOptionalstringAt least 0 characters · At most 2048 characters
cityOptionalstringAt least 0 characters · At most 200 characters
currentCompanyOptionalstringAt least 0 characters · At most 200 characters
twoFactorKeyOptionalstring

Sensitive credential input. Never returned in webhook payloads; keep bot keys narrowly scoped.

At least 0 characters · At most 200 characters
antiDetectBrowserOptionalstringAt least 1 characters · At most 80 characters
canBeRehostedOptionalboolean
priceInCentsOptionalintegerMinimum 0 · Maximum 9007199254740991
pricingPeriodOptionalstringOne of: "day", "week", "month"
descriptionOptionalstringAt least 0 characters · At most 5000 characters
connectionCountOptionalintegerMinimum 0 · Maximum 9007199254740991
genderOptionalstringOne of: "male", "female", "other"
isVerifiedOptionalboolean
payoutMethodOptionalstringOne of: "fiat", "crypto"
scrapedDataOptionalobject

Platform scrape metadata. Keep credentials out of this field.

upworkImportIdOptionalstring · uuid
statusOptionalstring

available publishes; unlisted hides. rented is subject to service lifecycle checks; use rental actions for paid rentals.

One of: "available", "rented", "unlisted"
Explore this request

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
Token scope profiles:writeActor permission memberAction type write

Send 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

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Request body

FieldTypeDescription and constraints
sectionsRequiredarray of objectAt least 0 items · At most 20 items
Nested fields
FieldTypeDescription and constraints
titleRequiredstringAt least 1 characters · At most 80 characters
iconRequiredstringAt least 0 characters · At most 40 characters
bodyTypeRequiredstringOne of: "list", "description"
bodyOptionalstringAt least 0 characters · At most 5000 characters
itemsOptionalarray of stringAt least 0 items · At most 50 items
sortOrderOptionalintegerMinimum 0 · Maximum 9007199254740991
Explore this request

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
Token scope profiles:writeActor permission managerAction type destructive

Send Idempotency-Key. Retry the same intended action with the same key and exact payload to retrieve its saved result.

Path parameters

FieldTypeDescription and constraints
idRequiredstring · uuid

Resource UUID scoped to the current organization.

Explore this request

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.