Submit external form
Submit a contact form from an external website. Creates a new person record in the CRM system. Requires a valid client token in the x-client-token header.
/v1/external/client/formSubmit a contact form from an external website. Creates a new person record in the CRM system. Requires a valid client token in the x-client-token header.
Header Parameters
Client token for project authentication
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://api-external.svit.one/api/v1/external/client/form" \ -H "x-client-token: string" \ -H "Content-Type: application/json" \ -d '{ "name": "string", "phone": "string" }'{
"personId": "string",
"opportunityId": "string",
"message": "Form submitted successfully"
}{
"type": "https://api-errors.svit.one/validation/invalid-request",
"title": "Validation Failed",
"status": 400,
"detail": "Phone is required",
"code": "INVALID_REQUEST",
"errors": [
{
"field": "phone",
"message": "Phone is required"
}
],
"timestamp": "2026-10-27T09:18:23.001Z"
}{
"type": "https://api-errors.svit.one/external-client/invalid-token",
"title": "Invalid Client Token",
"status": 401,
"detail": "The provided client token is invalid",
"code": "INVALID_CLIENT_TOKEN",
"timestamp": "2026-10-27T09:18:23.001Z"
}{
"type": "https://api-errors.svit.one/external-client/invalid-origin",
"title": "Origin Not Allowed",
"status": 403,
"detail": "Origin 'https://example.com' is not allowed for this token",
"code": "INVALID_CLIENT_ORIGIN",
"timestamp": "2026-10-27T09:18:23.001Z"
}{
"type": "https://api-errors.svit.one/internal/server-error",
"title": "Internal Server Error",
"status": 500,
"detail": "An unexpected error occurred",
"code": "INTERNAL_SERVER_ERROR",
"timestamp": "2026-10-27T09:18:23.001Z"
}Resolve an initial Person association candidate POST
Read-only search under properties.personAssociation.projectAccessTokenIds and its explicit svit-user onboardingPolicy. The source's exact IDs must be canonical Svit User IDs. Existing exact associations win; otherwise preserved cutover evidence precedes unique lowercase/trim email matching. Conflicting history never falls back to email. Results are hints, not reservations; linking repeats the policy transactionally. No profiles or historical values are returned. POST keeps email out of URLs.
Update a task PATCH
Updates only the supplied fields on a task in the project associated with the bearer project access token. Pass null to clear a nullable field or an empty assigneeIds array to remove all assignees. The token creator's current task permissions apply. Explicit priority assignments accept only 0–3. Responses represent priorities 0–4. Omitted priority preserves the stored value, including 4 (the lowest priority).