Signal Templates
List all signal templates for your organization
Retrieve a paginated list of signal templates for your organization. Returns the latest active version of each template.
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Query Parameters
Maximum number of templates to return
201 <= value <= 100Number of templates to skip for pagination
00 <= valueInclude deleted templates in the response
falseResponse Body
application/json
application/json
curl -X GET "https://example.com/v1/companies/signals/templates"{ "items": [ { "id": "e45c1dc4-d422-4b51-956b-cb6d3ddaf250", "templateId": "e45c1dc4-d422-4b51-956b-cb6d3ddaf250", "version": 1, "organizationId": "org_123", "name": "CRM Detection", "description": "Identifies which CRM system a company is using", "question": "Which CRM are they using?", "answerType": "open_text", "outputSchema": {}, "weight": "important", "qualificationCriteria": {}, "createdByUserId": "user_123", "createdAt": "2024-10-14T15:30:00Z", "deletedAt": null, "source": "api" } ], "total": 10, "limit": 20, "offset": 0, "hasMore": false}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}Create a signal template
Create a reusable signal template that can be referenced when creating signals. Templates allow you to define standard research questions that can be applied to multiple companies.
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
User-friendly name for the template
1 <= length <= 200Optional description of what this template does
length <= 1000The research question to ask about companies
1 <= length <= 500The expected format of the answer
"open_text""open_text" | "number" | "boolean" | "list" | "percentage" | "currency" | "url" | "contacts" | "contacts_generation" | "contact_posts" | "contact_engagements" | "json_schema"JSON Schema defining the expected output structure. Required when answerType is "json_schema". See CreateSignalRequest.outputSchema for full documentation.
The importance/weight of the signal
"important" | "nice_to_have" | "not_important"Qualification criteria mapping answer values based on answerType. Structure varies by answerType:
- For percentage/number/currency: { ranges: [{ rangeStart, rangeEnd, answerQualification }] }
- For boolean: { yes: "qualification", no: "qualification" }
- For list: { choices: { key: { answerQualification, label } } }
Valid answerQualification values: disqualified, poor, neutral, good, excellent
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/companies/signals/templates" \ -H "Content-Type: application/json" \ -d '{ "name": "CRM Detection", "question": "Which CRM are they using?" }'{ "id": "e45c1dc4-d422-4b51-956b-cb6d3ddaf250", "templateId": "e45c1dc4-d422-4b51-956b-cb6d3ddaf250", "version": 1, "organizationId": "org_123", "name": "CRM Detection", "description": "Identifies which CRM system a company is using", "question": "Which CRM are they using?", "answerType": "open_text", "outputSchema": {}, "weight": "important", "qualificationCriteria": {}, "createdByUserId": "user_123", "createdAt": "2024-10-14T15:30:00Z", "deletedAt": null, "source": "api"}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}Get a signal template by ID
Retrieve a specific signal template by ID
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Path Parameters
The unique identifier of the template
uuidResponse Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/companies/signals/templates/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "id": "e45c1dc4-d422-4b51-956b-cb6d3ddaf250", "templateId": "e45c1dc4-d422-4b51-956b-cb6d3ddaf250", "version": 1, "organizationId": "org_123", "name": "CRM Detection", "description": "Identifies which CRM system a company is using", "question": "Which CRM are they using?", "answerType": "open_text", "outputSchema": {}, "weight": "important", "qualificationCriteria": {}, "createdByUserId": "user_123", "createdAt": "2024-10-14T15:30:00Z", "deletedAt": null, "source": "api"}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}Update a signal template
Update a signal template using PATCH semantics (partial update). This creates a new version of the template and soft-deletes the previous version. Only provided fields will be updated; omitted fields will retain their values from the previous version.
The template ID remains the same across all versions. The version number will be incremented.
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Path Parameters
The unique identifier of the template to update
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
User-friendly name for the template
1 <= length <= 200Optional description of what this template does
length <= 1000The research question to ask about companies
1 <= length <= 500The expected format of the answer
"open_text" | "number" | "boolean" | "list" | "percentage" | "currency" | "url" | "contacts" | "contact_posts" | "contact_engagements" | "json_schema"JSON Schema defining the expected output structure. Required when answerType is "json_schema".
The importance/weight of the signal
"important" | "nice_to_have" | "not_important"Qualification criteria mapping answer values based on answerType
Response Body
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/v1/companies/signals/templates/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "e45c1dc4-d422-4b51-956b-cb6d3ddaf250", "templateId": "e45c1dc4-d422-4b51-956b-cb6d3ddaf250", "version": 1, "organizationId": "org_123", "name": "CRM Detection", "description": "Identifies which CRM system a company is using", "question": "Which CRM are they using?", "answerType": "open_text", "outputSchema": {}, "weight": "important", "qualificationCriteria": {}, "createdByUserId": "user_123", "createdAt": "2024-10-14T15:30:00Z", "deletedAt": null, "source": "api"}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}Delete a signal template
Soft-delete a signal template. The template will be marked as deleted but preserved for historical tracking.
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Path Parameters
The unique identifier of the template to delete
uuidResponse Body
application/json
application/json
curl -X DELETE "https://example.com/v1/companies/signals/templates/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}