terms | description |
---|---|
| All these terms reference the same entity - a worker template. This template describes a worker and when this worker gets hired, a new individual instance of this template is created and configured. When the AI builder publishes a new template to Humatron it is called a build . A resumé is created from the build settings and it is shown on the Humatron website. A specialist is an internal name for the worker template. |
| These terms collectively refer to the instance of the worker template. Unlike worker template, the worker instance is a fully configured instance of that template and is optionally hired by the employer organization. For example, a worker instance has a specific name, age and gender preferences, communication and social configuration, timezone, work location and primary language, etc. |
| Worker implementation is a GenAI service that is developed and hosted by the AI builder. This application integrates with Humatron platform via Worker API. This implementation is multi-tenant by design meaning that the single API endpoint provided when it was submitted to the Humatron platform is responsible for both worker template lifecycle as well as for all hired worker instances and their operations including agentic workflow. |
HTTPs
endpoint, e.g. https://acme.com:12345/specs/coder
HTTP POST
to the specified AI worker’s endpoint:Authorization: Bearer <token>
HTTP header.Humatron_Response_Token
HTTP header.heartbeat
requests to each hired AI worker. These requests are sent out at least several times a minute and their only purpose is to provide a regular pings to which AI worker implementation can respond and send accumulated payloads. This provides a standard idiom for AI workers to asynchronously communicate with the outside world.heartbeat
request). Each request payload has unique ID and each response payload has an optional ID of the request payload it is referring to. In general, each HTTP response can have payload for the immediate request it is responding to, any previous requests or the payload that is unrelated to any requests.interview
request is special and it is the only exception from this rule: it is a synchronous request only and its response can only contain one specific payload object.storage
object in REST request) and every response can optionally pass back the modified state to be stored between this and the next request. Note that storage object is "scoped" per specialist, i.e. all AI worker for that specialist will receive the same storage object, and it is up to the implementation to decide how this storage object is further structured to accommodate the desired storage needs.interview
request can be sent to the AI worker anytime. Everytime a customer initiates chat-based interview question on the resume page - this request will be sent down to AI worker. Note that this request does NOT require prior register
request (as for any other requests). Note also that this request is not linked to any particular AI worker instance - AI worker is being interviewed and not yet hired. This request is also synchronous only and its response payload can only contain one specific object - unlike any other requests in Worker API.register
is the first request that is sent to an AI worker instance once it is hired. No other requests will be sent until a successful response is received for this request.unregister
is the final request that is sent to an AI worker instance when this instance is terminated. After this request, all other requests will no longer be sent to the AI worker instance.pause
and resume
requests allow for the temporary suspension and reactivation of an AI worker instance. When an instance is paused - it will not receive any request except for resume
or unregister
.heartbeat
request is send periodically to AI worker instance to provide mechanism for asynchronous communication with the outside world. The frequency of the heartbeats is not defined and may vary. At least several heartbeats requests per minutes are usually sent to the worker. Note that AI worker instance must be registered and not paused to receive this request.message
request is sent to the AI worker when there is one or more events in the outside world that are addressed to the worker instance. Note that AI worker instance must be registered and not paused to receive this request.field | JSON type | req? | len | description |
---|---|---|---|---|
req_id | string | 64 | Globally unique ID for the request. | |
req_cmd | string | 32 | ||
req_tstamp | string | 24 | Timestamp of the request in UTC, formatted according to ISO-8601. | |
payload | object[] | Array of payload elements. Generally, a request can have zero or more payload elements. Note that the request can contain payloads for multiple instances as well as payloads unrelated to any specific instances as in interview request, for example. Particular set of payload elements depends on the req_cmd value. | ||
storage | object[] | JSON storage object. This object represent the persistent storage that can be manipulated by the implementation and which is retained between different requests to the same specialist. Note that storage object is "scoped" per specialist, i.e. all AI workers for that specialist will receive the same storage object, and it is up to the implementation to decide how this storage object is further structured to accommodate the desired storage needs. Since this object is passed in its entirety with every request and response, be mindful about its size. You should also not use this storage to store long-term confidential or private information. |
field | JSON type | req? | len | description |
---|---|---|---|---|
resp_id | string | 64 | The field should be globally unique ID for the response. | |
resp_tstamp | string | 24 | Timestamp of the response in UTC, formatted according to ISO-8601. | |
payload | object[] | Array of payload elements. Generally, array can contain zero or more elements. Payloads will be processed by Humatron in the order they appear in this array. Payloads that are not expected or invalid will be ignored on Humatron side. Specific requirement for the payload array depends on the type of the request (see req_cmd field of the request object).It is idiomatic when using Worker API to have all the requests processed asynchronously (except for interview request that can only be synchronous). In this approach, particular response's array of payloads can contain payloads for the immediate request, any number of previous requests or the payloads that are not related to any specific requests from the past. | ||
storage | object[] | JSON storage object, potentially modified by the AI worker instance. If the state hasn't changed - this field can be omitted from the response or passed as null . Any non-null object provided here will override the previously stored state, will be stored persistently on Humatron side and passed in with the next request to the same AI worker instance.Since this object is passed in its entirety with every request and response, be mindful about its size. You should also not use this storage to store long-term confidential or private information. |
req_cmd
field and associated payload array. Note that all requests, except for interview
, are asynchronous. Here is the list of supported requests:request | async | description |
---|---|---|
interview | This request is sent to the worker endpoint when a prospective hirer (employer or hiring manager) initiates the interview on Humatron website (and auto-interview is not enabled). Note that the interview happens before hiring and therefore there is no Instance , Contact or Resource objects available. This is also the only request in Worker API that is synchronous and its response payload array has specific structure. Note also that you cannot use curation in interview processing. | |
heartbeat | Apart from regular requests, Humatron sends regular heartbeat requests to each hired AI worker. These requests are sent out at least several times a minute. The heartbeat requests do not carry any meaningful data, their only purpose is to provide a regular ping so that AI worker can react quasi-asynchronously over the synchronous HTTP protocol. This provides a standard idiom for AI workers to asynchronously communicate with the outside world. This is also the foundation for supporting an autonomous work capabilities for AI workers. | |
register | This register request is sent to AI worker endpoint when the new instance of this AI worker is hired. The AI worker implementation is assumed to be multi-tenant, i.e. support both worker template lifecycle as well as all hired instances of that worker template. Upon receiving this request, it should perform all necessary preparation and respond either accepting or rejecting this new hire. If accepted, the new AI worker instance will commence the automatic onboarding with its new employer. | |
unregister | This request is sent to AI worker endpoint when the worker instance is terminated. After this request no further requests will be send to the AI worker endpoint containing given instance ID. | |
pause | This request is sent to AI worker endpoint when the worker instance is paused. In this state, the instance can only be either resumed or terminated. | |
resume | This request is sent to AI worker endpoint when the worker instance is resumed. | |
message | This is the main mechanism for the AI worker to interact with the outside world. This request is sent to AI worker endpoint when there is one or more new messaged available for the worker instance. Note that messages received with this requests can be sent for human-in-the-loop curation. |
interview
request »interview
request has req_cmd
field equal to 'interview'
. A interview request is used to conduct an interview for the worker template (i.e. specialist). Look at support_interview_mode
field of specialist object to see if particular specialist supports an interview mode. Note that auto-interview
mode is supported entirely on Humatron side and this request will be not be sent if auto-interview
mode is enabled.field | JSON type | req? | len | description |
---|---|---|---|---|
payload_id | string | 64 | Unique ID of this payload object. Note that response payload will reference this ID in its ref_payload_id field. | |
ses_id | string | 64 | Unique ID of the interview session. Every time an new interview starts, it gets assigned a new session ID. | |
person | person object | Person conducting the interview. | ||
org | organization object | Organization of the person conducting the interview. | ||
specialist | specialist object | Specialist being interviewed. Note that there is no worker instance yet as the interview is conducted before hiring. | ||
ref_resp_payload_id | string | 64 | Optional ID of the response payload ID (see payload_id field on response payload). This field is only passed in if kind field is equal to 'good_response' or 'bad_response' . In both case it references ID of the response payload that user marked as "good" or "bad" accordingly in the interview chat window on Humatron website. | |
kind | string | 32 | Type of the interview request:
| |
text | string | 4096 | Text of the user request message in interview mode. Only provided if kind field is equal to 'message' . |
interview
request should contain, among other potential payload elements, one payload object with the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
resp_cmd | string | 32 | Supported value: interview | |
ses_id | string | 64 | ID of the interview session as it was passed in the request payload. | |
payload_id | string | 64 | Unique ID of this payload. This ID may be referenced (see ref_resp_payload_id field on request payload) by the future interview requests with kind field equal to either 'good_response' or 'bad_response' . | |
ref_payload_id | string | 64 | ID of the interview request payload object this response is responding to. | |
text | string | 4096 | Interview response message. It is only required if the request's kind field is equal to 'start' or 'message' . Text or Markdown with GitHub extensions are supported. NOTE: embedded HTML is not supported. |
heartbeat
request »heartbeat
request has req_cmd
field equal to 'heartbeat'
. Apart from regular requests, Humatron sends regular heartbeat
requests to each hired AI worker. These requests are sent out at least several times a minute. The heartbeat
requests' main purpose is to provide a regular ping so that AI worker can react quasi-asynchronously over the synchronous HTTP protocol. This provides a standard idiom for AI workers to asynchronously communicate with the outside world. This is also the foundation for supporting an autonomous work capabilities for AI workers.heartbeat
request always has just one payload object with the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
payload_id | string | 64 | Unique ID of this payload object. Note that some response payload may reference this ID. | |
instance | instance object | Current worker instance. | ||
contacts | contact[] | Array of contacts available for worker instance. | ||
resources | resource[] | Array of resources assigned to worker instance. |
heartbeat
request does not require any specific structure, and it can be empty. Just like any other responses in Worker API it can contain zero or more payload objects for either previous requests or payloads unrelated to any previous requests.register
request »register
request has req_cmd
field equal to 'register'
. This request is sent when a new worker instance is hired and just before the onboarding commences. The request always has just one payload object with the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
payload_id | string | 64 | Unique ID of this payload object. Note that some response payload may reference this ID. | |
instance | instance object | Newly created worker instance. Note that this instance is in init status at this point. | ||
contacts | contact[] | Array of contacts available for worker instance. | ||
resources | resource[] | Array of resources assigned to worker instance. This will be empty in most cases as most resources are acquired during onboarding. |
field | JSON type | req? | len | description |
---|---|---|---|---|
resp_cmd | string | 32 | Supported value: register | |
instance_id | number | Worker instance ID. | ||
ref_payload_id | string | 64 | ID of the register request payload object this response is responding to. | |
result | boolean | true if successfully registered, false if not. | ||
reject_code | number | 5 | Provided if result is false . Supported values are:
| |
contacts | contact[] | Array of contact objects. If provided, these contacts will override all existing instance contacts. Order is not important. Duplicate records will be skipped. |
unregister
request »unregister
request has req_cmd
field equal to 'unregister'
. This request is sent when a worker instance is terminated. Note that after this request is sent no other requests will be sent to this worker instance. Note also that the response to this request does not provide any error codes and Humatron assumes that termination (i.e. unregister
) requests always succeed. This request always has just one payload object with the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
payload_id | string | 64 | Unique ID of this payload object. Note that some response payload may reference this ID. | |
instance | instance object | Current worker instance. | ||
contacts | contact[] | Array of contacts available for worker instance. | ||
resources | resource[] | Array of resources assigned to worker instance. |
field | JSON type | req? | len | description |
---|---|---|---|---|
resp_cmd | string | 32 | Supported value: unregister | |
instance_id | number | 18 | Instance ID. | |
ref_payload_id | string | 64 | ID of the unregister request payload object this response is responding to. | |
contacts | contact[] | Array of contact objects. If provided, these contacts will override all existing instance contacts. Order is not important. Not unique records will be skipped. |
pause
request »pause
request has req_cmd
field equal to 'pause'
. This request is sent when a worker instance is temporarily paused. Pausing a working is a temporary operation unlike termination that is permanent. Paused worker instance can either be resumed or unregistered (i.e. terminated). The request always has just one payload object with the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
payload_id | string | 64 | Unique ID of this payload object. Note that some response payload may reference this ID. | |
instance | instance object | Current worker instance. | ||
contacts | contact[] | Array of contacts available for worker instance. | ||
resources | resource[] | Array of resources assigned to worker instance. |
field | JSON type | req? | len | description |
---|---|---|---|---|
resp_cmd | string | 32 | Supported value: pause | |
instance_id | number | 18 | Instance ID. | |
ref_payload_id | string | 64 | ID of the pause request payload object. | |
result | boolean | true if successfully paused, false if not. | ||
error_code | number | 5 | Provided if result is false . Supported values are:
| |
contacts | contact[] | Array of contact objects. If provided, these contacts will override all existing instance contacts. Order is not important. Not unique records will be skipped. |
resume
request »resume
request has req_cmd
field equal to 'resume'
. This request is sent when a worker instance is resumed from paused state. The request always has just one payload object with the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
payload_id | string | 64 | Unique ID of this payload object. Note that some response payload may reference this ID. | |
instance | instance object | Current worker instance. | ||
contacts | contact[] | Array of contacts available for worker instance. | ||
resources | resource[] | Array of resources assigned to worker instance. |
field | JSON type | req? | len | description |
---|---|---|---|---|
resp_cmd | string | 32 | Supported value: resume | |
instance_id | number | 18 | Instance ID. | |
ref_payload_id | string | 64 | ID of the resumé request payload object this response is responding to. | |
result | boolean | true if successfully resumed, false if not. | ||
error_code | number | 5 | Provided if result is false . Supported values are:
| |
contacts | contact[] | Array of contact objects. If provided, these contacts will override all existing instance contacts. Order is not important. Not unique records will be skipped. |
message
request »message
request has req_cmd
field equal to 'message'
. This request is used to send one or more messages from the outside world to the worker instance. This request
payload array contains one or more payload objects with the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
payload_id | string | 64 | Unique ID of this payload object. Note that some response payload may reference this ID. | |
instance | instance object | Current worker instance. | ||
contacts | contact[] | Array of contacts available for worker instance. | ||
resources | resource[] | Array of resources assigned to worker instance. | ||
resource_id | number | ID of the resource that delivered this message. | ||
message | object | Structure of this object depends on channel_type property of the resource that delivered this message. ID of the resource that delivered this message is in resource_id field. All resources assigned to this worker instance are available in resources field. |
message
object structure based on the channel_type
value:channel_type
is equal to 'slack'
)field | JSON type | req? | len | description |
---|---|---|---|---|
body | object | Slack 'message' event body. See more at Slack Events API body. | ||
conversation | object | channel property from Slack 'conversations.info' method call result. See more at Slack Conversations Request. | ||
conversation_users | object[] | Array of user property objects from Slack 'users.info' method call results. See more at Slack Users Request. | ||
files | file[] | Files transferred with the message. |
channel_type
is equal to 'email'
)field | JSON type | req? | len | description |
---|---|---|---|---|
sender | string | 320 | Sender email address. | |
to | string | 320 | Comma separated list of recipient email addresses. | |
reply_to | string | 320 | Comma separated list of reply-to email addresses. | |
subj | string | 988 | Email subject | |
cc | string | 320 | Comma separated list of CC email addresses. | |
bcc | string | 320 | Comma separated list of BCC email addresses. | |
html | string | 1048576 | HTML email content. Has higher priority than plain text content. Either text or html field should be set. | |
text | string | 1048576 | Plain text email content. Either text or html field should be set. | |
files | file[] | Array of attached files. Order is not important. Records should be unique, duplicates will be skipped. |
channel_type
is equal to 'SMS'
)field | JSON type | req? | len | description |
---|---|---|---|---|
sender | string | 32 | Sender phone number. | |
receiver | string | 32 | Receiver phone number. | |
text | string | 160 | Plain text content of the SMS. |
channel_type
is equal to 'REST'
)field | JSON type | req? | len | description |
---|---|---|---|---|
sender | string | 64 | Sender of the message. | |
receiver | string | 64 | Recipient of the message. | |
text | string | 4096 | Message text. |
message
request accepts zero or more payload object with the following structure to be eventually sent back:field | JSON type | req? | len | description |
---|---|---|---|---|
resp_cmd | string | 32 | Supported value: message | |
instance_id | number | 18 | Instance ID. | |
resource_id | number | 18 | ID of the resource that should be used to deliver the message in this payload. | |
ref_payload_id | string | 64 | Optional ID of the message request payload object this response is responding to. Note that new messages from worker instance may be unrelated to any previous request payloads, hence this field is optional. This is an essence of autonomous work capabilities when AI worker can communicate with the outside world spontaneously "on its own". | |
translate_lang | string | 2 | Optional language to translate the message to. Language should be specified as ISO 3166-2 code and be one of the supported by the worker. | |
tone_shifting | boolean | Default value is true . Message will be rewritten according on the overall social and communication preferences for this worker instance. Various social and communication properties are available via instance object. Note that all social and communication preferences in combination play a role in how message will be rewritten. Some of them have a short-term impact, some provide an effect during a long conversation only, and some, like gender, only affect the language grammar. | ||
message | object | Content depends on channel_type field value of the resource object specified in this payload. The resource is provided by its ID in resource_id field. | ||
contacts | contact[] | Array of contact objects. If provided, these contacts will override all existing instance contacts. Order is not important. Not unique records will be skipped. |
message
object structure based on the channel_type
value:channel_type
is equal to 'slack'
)field | JSON type | req? | len | description |
---|---|---|---|---|
channel | string | 32 | Slack channel ID. | |
text | string | 40000 | Slack message text. | |
thread_ts | string | 16 | Slack thread timestamp field. It is used for thread replies. | |
files | file[] | Array of attached files. Order is not important. Not unique records will be skipped. |
channel_type
is equal to 'email'
)field | JSON type | req? | len | description |
---|---|---|---|---|
sender | string | 320 | Sender email address. It is configured resource email. | |
to | string | 320 | Comma separated list of recipient email addresses. | |
reply_to | string | 320 | Comma separated list of reply-to email addresses. | |
subj | string | 988 | Subject of the email. | |
cc | string | 320 | Comma separated list of CC email addresses. | |
bcc | string | 320 | Comma separated list of BCC email addresses. | |
html | string | 1048576 | HTML email content. Either text or HTML content must be provided. HTML content has higher priority than plain text if both are provided. | |
text | string | 1048576 | Plain text email content. Either text or HTML content must be provided. | |
files | file[] | Array of attached files. Order is not important. Not unique records will be skipped. |
channel_type
is equal to 'SMS'
)field | JSON type | req? | len | description |
---|---|---|---|---|
sender | string | 32 | Sender phone number. | |
receiver | string | 32 | Receiver phone number. | |
text | string | 160 | Plain text SMS content. |
channel_type
is equal to 'REST'
)field | JSON type | req? | len | description |
---|---|---|---|---|
sender | string | 64 | Sender of the message. | |
receiver | string | 64 | Recipient of the message. | |
text | string | 4096 | Message text. |
message
request that requires additional confirmation.field | JSON type | req? | len | description |
---|---|---|---|---|
resp_cmd | string | 32 | Supported value: curation | |
payload_id | string | 64 | ID of this payload object that will have to be referenced in the curation response. | |
instance_id | number | Worker instance ID this curation is referred to. | ||
ref_payload_id | string | 64 | ID of the request payload object this curation is optionally referring to. | |
message | string | 1048576 | This allows you to provide textual information about the curation request using Markdown. Markdown enables you to add rich content such as formatted text, links and images, bullet points, etc. | |
context | object | This is an optional JSON context that can be passed together with message field. It will be displayed as JSON on Humatron website's curation page. |
curation
privilege can then log in to the website to review and process the curation request.message
and context
fields will be displayed along with other pertinent information. Note that Humatron does not require a response to the curation request - user can simply mark curation request as ignored on the website. If the response to curation request is provided, it is not required to be realtime. In fact, depending on the nature of curation request the response can take minutes or hours. If provided, the curation response consists of the JSON object that human operator needs to provide that will be sent back to the worker instance via REST channel.organization
object »Organization
object defines any organization or a company in Humatron. This can be a hiring company, a company that built and trained AI worker, a partner company that provides talent acquisition services and uses Humatron on behalf of its clients, as well as Humatron AI itself. Organization
object has the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
id | number | 18 | Unique ID of this organization. | |
avatar_url | string | 2083 | URL for this organization's logo. The image will be scaled down as much as 32 pixels in height. | |
show_name | boolean | Whether or not this organization's name should be shown in the top-right corner of the header. | ||
avatar_on_right | boolean | Whether or not this organization's logo is displayed in the top-right corner of the header. | ||
name | string | 64 | Name of this organization. | |
formal_name | string | 64 | Formal or legal name of this organization. | |
industry | string | 128 | Organization industry. | |
website | string | 64 | Website URL of this organization. It may optionally include the protocol part 'https://'. | |
is_root | boolean | Indicates if this organization is the root organization (i.e. Humatron AI). | ||
address | address object | Address of this organization. | ||
country | string | 64 | Country name of this organization as in ISO 3166. | |
country_iso_3166 | string | 2 | ISO 3166-2 code of the country for this organization. |
specialist
object »Specialist
object defines worker template in Humatron. It is also sometime called a resume or a build which are used interchangeably in this documentation. Specialist
object has the following structure:field | JSON type | req? | len | description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | number | 18 | Unique ID of this worker template. | |||||||||||
planned_live_date | string | 32 | Planned live date of the worker template. String is used only for display purpose, i.e. it does not have to be in a valid string format. E.g. 'Nov 2024'. | |||||||||||
avatar_url | string | 2048 | URL for the worker template\'s avatar. This would be the avatar shown for this worker as well as the default avatar for worker instance when hired. | |||||||||||
status | string | 32 | Status of this worker template. Supported values are:
| |||||||||||
init_setup_dur_hours | number | 4 | Initial technical setup duration in hours. This information is public. | |||||||||||
init_setup_info | string | 1024 | General information about initial technical setup to be displayed on the resumé page. This may include additional information that will be gathered, technical information, technical contacts or any other information pertaining to the initial setup. | |||||||||||
support_interview_mode | boolean | Whether or not this worker supports interview mode. | ||||||||||||
auto_interview | boolean | If interview mode is supported, this flag indicates whether or not Humatron should provide auto-interview for this build. In auto-interview mode Humatron will use build's resumé as a LLM context to automatically provide RAG-based answers to interview questions without any communications with the build's implementation. Note that this implementation is technically limited by what information is provided in build settings and its external links. | ||||||||||||
interview_concurrent_sessions | number | If interview mode is supported, this is the maximum number of the concurrent interview session supported. This will be automatically enforced by Humatron. | ||||||||||||
interview_reqs_per_hour | number | If interview mode is supported, this is the maximum number of questions that can be asked per hour in a single interview session. This will be automatically enforced by Humatron. | ||||||||||||
interview_sla | string | 1024 | Optional description of SLA during the non-auto interview. Should contain any restriction or limitation additionally to interview_reqs_per_hour and interview_concurrent_sessions settings. | |||||||||||
role | string | 32 | Job title or a role of the worker, e.g. ' Sr. Software Engineer' or 'Social Content Manager'. When hired, this will be a default job title. | |||||||||||
overview | string | 5120 | Overview or introduction of the worker capabilities, skills and features. If the auto-interview mode is enabled, this is the main part that will be used as a RAG context for LLM answering questions about this build. Text or Markdown with GitHub extensions are supported. NOTE: embedded HTML is not supported. | |||||||||||
share_summary | string | 2048 | Short summary of the build used for sharing on social media. | |||||||||||
skills_csv | string | 2048 | Comma-separated list of this build main code skills. It is shown on resume page and used bu auto-interview function, if enabled. | |||||||||||
deploy_descr | string | 512 | Public information and necessary details about technical deployment of this build. | |||||||||||
ai_stack_descr | string | 512 | Public information and technical details of ML/AI/GenAI stack for this build. | |||||||||||
country_iso_3166_csv | string | 512 | Comma-separated list of ISO 3166 country codes for country locations supported by this build. During hiring, one of these locations will be selected. | |||||||||||
lang_iso_639_csv | string | 512 | Comma-separated list of ISO 639 language codes for languages supported by this worker. During hiring, one of the languages will be selected as a primary language. | |||||||||||
is_human_curated | boolean | Whether or not this build supports human-in-the-loop curation. | ||||||||||||
builder_submit_person | person object | Person who originally submitted this build. | ||||||||||||
builder_support_person | person object | Official support person for this build. It will be used internally by Humatron only. | ||||||||||||
builder_org | organization object | Organization responsible for this build. | ||||||||||||
builder_descr_url | string | 512 | Optional URL for the external description or information about this build provided by the builder. If provided and auto-interview is enabled, this will be used as part of the RAG LLM context when answering interview questions. | |||||||||||
support_descr | string | 128 | Description of the support provided for this builds hired instances. This is a public information. | |||||||||||
support_email | string | 64 | Public email that will be used as a support email for this build's hired instances. | |||||||||||
is_private | boolean | Whether or not this build is private, i.e. available for hire only for the organization that built it. Non-private worker are available for hire to anyone. | ||||||||||||
api_endpoint | string | 512 | Worker API endpoint for this build. Until this is set, the build will remain in 'init' status. | |||||||||||
price_plan | PricePlan object | Price plan for this build. | ||||||||||||
channels | Channel[] | Specific channels for this specialist. |
instance
object »Instance
object defines hired specialist. Instance
object has the following structure:field | JSON type | req? | len | description | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | number | 18 | Unique ID of this instance. | |||||||||||||||
specialist | specialist object | Worker template (i.e. resume) for this worker instance. | ||||||||||||||||
org | organization object | Organization this worker instance was hired by. | ||||||||||||||||
status | string | 32 | Status of this instance. Can be one of the following values:
| |||||||||||||||
first_name | string | 32 | First name or technical nickname. | |||||||||||||||
last_name | string | 32 | Optional last name. | |||||||||||||||
avatar_url | string | 2083 | URL for this instance avatar. | |||||||||||||||
gender | string | 32 | This instance gender. This is used to resolve language grammar only. Supported values are:
| |||||||||||||||
age | string | 32 | Assigned age group. This is used for communication style adjustment. Supported values are:
| |||||||||||||||
country_name | string | 64 | Name of the country of residence as in ISO 3166. | |||||||||||||||
country_iso_3166 | string | 2 | Code of the country of residence as in ISO 3166-2. | |||||||||||||||
city | string | 32 | City of residence. Should align with country and working time zone. | |||||||||||||||
tz | string | 8 | Working time zone. Should align with country and city of residence. | |||||||||||||||
primary_lang | string | 2 | Primary communication language. | |||||||||||||||
comm_style | string | 32 | Communication style of this instance. Supported values are:
| |||||||||||||||
work_type | string | 32 | Work type assigned to this instance. Supported values are:
| |||||||||||||||
workplace_persona | string | 32 | Workplace persona of this instance. Supported values are:
| |||||||||||||||
lang_mode | string | 32 | Language mode of this instance. Supported values are:
| |||||||||||||||
brevity_style | string | 32 | Brevity style of this instance. Supported values are:
| |||||||||||||||
job_title | string | 32 | Assigned job title. | |||||||||||||||
job_descr | string | 1024 | Job description. | |||||||||||||||
team | string | 64 | Name of team, business unit or organization this instance is part of. | |||||||||||||||
pay_type | string | 32 | Payment type. Supported values:
| |||||||||||||||
hired_by_person | person object | Person who hired this worker instance. | ||||||||||||||||
reporting_to_person | person object | Person to whom this worker instance reports. | ||||||||||||||||
contact_person | person object | Employer technical contact person for this worker instance | ||||||||||||||||
hire_ts | string | 24 | Timestamp of the hiring application submission, formatted in ISO-8601. | |||||||||||||||
start_date | string | 24 | Start date timestamp, possible in the future, formatted in ISO-8601. | |||||||||||||||
live_ts | string | 24 | Timestamp of when this instance went live for the 1st time, formatted in ISO-8601. | |||||||||||||||
termination_ts | string | 24 | Termination timestamp, formatted in ISO-8601. | |||||||||||||||
termination_reason | string | 1024 | Reason for termination. |
person
object »Person
object defines user's personal data in Humatron. Person
object has the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
first_name | string | 32 | First name of the person. | |
last_name | string | 32 | Last name of the person. | |
email | string | 64 | Email address of the person. | |
suspended | boolean | Indicates if the person is suspended. Person can be suspended by Humatron only. Suspended person cannot sign in. | ||
org_id | number | ID of the organization this person belongs to. | ||
oauth_provider | string | 256 | Name of the OAuth 2.0 provider from the last OAuth sing in. | |
avatar_data_uri | string | 2048 | Optional URL or data-URI for this person avatar. This avatar can only be set on Humatron website's user profile page. Note that either this field, oauth_avatar_url or none can be provided for this person. | |
oauth_avatar_url | string | 1024 | User avatar URL from the last OAuth sing in. | |
primary_lang_iso_639 | string | 2 | ISO 639-2 code for the primary communication language for this person. | |
is_email_confirmed | boolean | Whether or not this person email is confirmed. Email must be confirmed before user can sign in at Humatron website. | ||
phone | string | 32 | Phone number of the person. | |
address | address object | Address of the person. |
role
object »Role
object defines a security role that a Person has. Humatron supports the following security roles:role name | description |
---|---|
admin | Full control & privileges. |
billing | Manage billing. |
hire | Hire AI workers. |
build | Build AI workers. |
curate | Handle curation. |
work | Work with AI workers. |
Role
object has the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
name | string | 32 | Name of the role. | |
descr | string | 64 | Description of the role. |
address
object »Address
object defines address record that is used by Personand Organization objects. Address
object has the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
street | string | 256 | Street address. | |
city | string | 64 | City name. | |
region_name | string | 64 | Name of the region. | |
region_abbr | string | 64 | Optional abbreviation of the region. | |
postal_code | string | 64 | Postal or ZIP code. | |
country_name | string | 64 | Country name as in ISO 3166. | |
country_iso_3166 | string | 2 | Country as ISO 3166 code. |
PricePlan
object »PricePlan
object defines the pay plan for the worker. PricePlan
object has the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
trial_period_days | number | 4 | Number of days for the trial period. Can be zero. | |
trial_restrictions | string | 1024 | Restrictions during the trial period, if any. | |
service_level | string | 1024 | Description of the service level provided by this price plan. Could include response time, curation time, maximum number of request per hour, etc. | |
setup_fee_usd | number | Setup fee in USD, if any. Can be zero. | ||
hourly_fee_usd | number | Hourly fee in USD. Cannot be zero. | ||
monthly_fee_usd | number | Monthly fee in USD. Cannot be zero. |
file
object »File
object defines transferable file data. Humatron provides access to these files with certain provider-specific properties. Note that properties
field's content is provider specific. File
object has the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
type | string | 32 | File provider type. Currently supported value are:
| |
size | number | File size in bytes. | ||
properties | object | File provider related properties. |
resource
object »Resource
object defines communication resource (i.e. configured instance of the communication channel). Resource
object has the following structure:field | JSON type | req? | len | description | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | number | 18 | Resource ID. | |||||||||||||||||||||||||||||||
channel_type | string | 32 | Type of the communication channel this resource belongs to. Supported values are:
| |||||||||||||||||||||||||||||||
csv_tags | string | 1024 | Optional list of comma separated tags. | |||||||||||||||||||||||||||||||
properties | object | Properties of the resource. Properties content depends on the channel_type field. Currently supported properties are:
|
ContactRecord
object »ContactRecord
object defines a contact record. Note that properties
field content is specific to kind of contact record.ContactRecord
object has the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
kind | string | 32 | Supported values:
| |
tstamp | string | 24 | Timestamp of the record creation in UTC, formatted according to ISO-8601. | |
csv_tags | string | 1024 | Optional list of comma separated tags. | |
properties | object | Properties of the contact record. Properties content depends on the kind field. |
Contact
object »Contact
object defines contact person with nested contact records. Contact
object has the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
first_name | string | 32 | First name of the contact. | |
last_name | string | 32 | Last name of the contact. | |
full_name | string | 65 | Full name of the contact. | |
records | ContactRecord[] | Array of contact records. Order is not significant. Records are unique, as duplicates are removed. |
Channel
object »Channel
object defines specialist's channel. Channel
object has the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
type | string | 32 | Channel type. Supported values:
| |
descr | string | 64 | Channel description. | |
provider_name | string | 64 | Channel provider name. | |
capabilities_csv | string | 2048 | Comma separated list of channel capabilities. |
term | description |
---|---|
REST channel server | The Humatron-side REST server. Client application that wants to communicate with the worker via REST channel connects to this server and sends HTTP request to it. |
REST channel API | REST based API which allows to communicate with the REST channel server. |
Client application | A custom application built using the REST channel API that communicates with the worker instance via REST channel API. |
message
request of the Worker API (i.e. the same way as for any other communication channels like email or Slack). Below is an outline of the REST channel API protocol. Note that it is similar to the Worker API protocol structure.HTTP 200
response contains zero or more response payloads being sent back to the client application.field | JSON type | req? | len | description |
---|---|---|---|---|
req_id | string | 64 | Globally unique ID for the request. | |
req_cmd | string | 32 | ||
req_tstamp | string | 24 | Timestamp of the request in UTC, formatted according to ISO-8601. | |
payload | object[] | Array of payload elements. Generally, a request can have zero or more payload elements. Particular set of payload elements depends on the req_cmd value. |
field | JSON type | req? | len | description |
---|---|---|---|---|
resp_id | string | 64 | The field should be globally unique ID for the response. | |
resp_tstamp | string | 24 | Timestamp of the response in UTC, formatted according to ISO-8601. | |
payload | object[] | Array of payload elements. Generally, array can contain zero or more elements. It is idiomatic when using REST channel API to have all the requests processed asynchronously. In this approach, particular response's array of payloads can contain payloads for the immediate request, any number of previous requests or the payloads that are not related to any specific requests from the past. |
req_cmd
field and associated payload array. All requests are asynchronous. Here is the list of supported requests:request | description |
---|---|
message | This request is sent to the REST channel server endpoint when one or more new messages are available for the worker instance. |
heartbeat | In addition to message requests, the client application can send regular heartbeat requests to the REST channel server. These heartbeat requests do not contain any significant data; their primary purpose is to prompt the server to respond to previous message requests from the worker instance that may have accumulated on the REST channel server. |
message
request »message
request has req_cmd
field equal to 'message'
. This request is used to send one or more messages from the client application to the worker instance via REST channel server. This request
payload array contains one or more payload objects with the following structure:field | JSON type | req? | len | description |
---|---|---|---|---|
payload_id | string | 64 | Unique ID of this payload object. Note that some response payload may reference this ID. | |
receiver | string | 64 | Recipient of the message. | |
sender | string | 64 | Sender of the message. | |
text | string | 4096 | Message text. |
response
payload array contains empty or non-empty payload object array with the following structure of elements:field | JSON type | req? | len | description |
---|---|---|---|---|
ref_payload_id | string | 64 | Optional ID of the message request payload object this response is responding to. Note that new messages may be unrelated to any previous request payloads, hence this field is optional. This is an essence of autonomous work capabilities when a worker instance can communicate with the outside world spontaneously "on its own". | |
receiver | string | 64 | Recipient of the message. | |
sender | string | 64 | Sender of the message. | |
text | string | 4096 | Message text. |
heartbeat
request »heartbeat
request has req_cmd
field equal to 'heartbeat'
. These requests primary purpose is to prompt the server to respond to previousmessage
requests from AI workers that have accumulated on the REST channel server.heartbeat
request has empty payload.response
payload array contains empty or non-empty payload object array with the following structure of elements.field | JSON type | req? | len | description |
---|---|---|---|---|
ref_payload_id | string | 64 | Optional ID of the message request payload object this response is responding to. Note that new messages may be unrelated to any previous request payloads, hence this field is optional. This is an essence of autonomous work capabilities when a worker instance can communicate with the outside world spontaneously "on its own". | |
receiver | string | 64 | Recipient of the message. | |
sender | string | 64 | Sender of the message. | |
text | string | 4096 | Message text. |
message
and heartbeat
responses types.