×

The ExoMind Tasker API is a cutting edge API that uses multiple language models, large and small, to help your business explore and exploit the benefits of Generative AI. This API allows you to do a host of tasks including but not limited to:

  • Translation
  • Transcription
  • Summarisation
  • Categorisation 
  • Sentiment Analysis
  • Custom Queries and more!

Please note that this API uses ExoML which is an XML based language to instruct the API on the tasks to be accomplished. 

ExoML has Verbs and Nouns and both of them have their own attributes as well. Businesses can use these Verbs and Nouns with their relevant attributes to construct and instruct the ExoMind Tasker API to accomplish a host of tasks in a manner and priority of their choosing. 

The Exomind Tasker API adapts to the specific context of each task, whether that demands maximised speed for real-time responsiveness, uncompromised accuracy for high-stakes data fidelity, or a balanced approach for general-purpose tasks. This customisation ensures that your application runs optimally, delivering the expected results tailored to the user experience you seek to provide.

Optimized Intelligence for Advanced Applications

Welcome to the forefront of intelligent task management—Exomind Tasker API. A solution that not only understands the requisites of agile and precise task handling but also provides the key to unlock the full potential of your application through a spectrum of optimization options.

Setting the Stage: Optimized Task Delivery

Exomind Tasker API offers a range of optimization choices, ensuring that every task is executed with an approach that best suits its nature and your application's demands. This versatility is embedded within our unique optimization mechanism which includes options for various scenarios—each designed to enhance the overall functionality and efficiency of your application without delving into complexities.

The Optimization Spectrum

Exomind Tasker API adapts to the specific context of each task, whether that demands maximized speed for real-time responsiveness, uncompromised accuracy for high-stakes data fidelity, or a balanced approach for general-purpose tasks. This customization ensures that your application runs optimally, delivering the expected results tailored to the user experience you seek to provide.

Effective Task Submission via /exotasks Endpoint

Interacting with the /exotasks endpoint is straightforward, ensuring your requirements are met with optimal execution. Below is a snapshot of what submitting a task entails:

POST

https://exomind.exotel.com/api/v1/exotasks

{
"custom_params": "<any valid JSON>",
"exoml": "<The ExoML doc containing the flow>"
}

“custom_params” are any user defined parameters that need to be pushed as a part of the WebHook hit done on the endpoint. Please note that the “custom_params” are also returned in the Async API response as evidenced below in the Sample Response section. 

HTTP Response:

  • On success, the HTTP response status code will be 200
  • Please note that this is an Asynchronous API. The actual results are generated and pushed to the WebHook endpoint that’s passed in the API request body; as a part of the ExoML doc. 
{
    "http_code": 2xx,
    "metadata": null,
    "method": "POST",
    "request_id": "<Random request ID generated by system>",
    "response": {
      "code": 202,
      "error_data": null,
      "status": "success",
      "data": {
"task_sid": "task-SID: Example ab145jdk879",
"custom_params": "custom parameter given by customer"
}
}
}
{
"event_details": {
"event_type": "verb_event",
"event_name": "Verb event name - This depends on the verb that is executed - Example: gather_started, say_completed…",
"event_timestamp": "Event timestamp",
"task_sid": "<task_sid that was generated during ExoTask creation>",
"custom_params": "< if this event is due to an action that was submitted, this should be filled with corresponding custom_params else null>",
"event_data": {
"<This totally depends on the verb and the event>"
}
},
"data": {
"<Standard fields of ExoTask entity>"
}
}
{
"event_details": {
"event_type": "action_event",
"event_timestamp": "Event timestamp",
"event_name": "action_failure",
"task_sid": "<task_sid - must in this case>",
"custom_params": "<the custom parameter that was passed when create ExoTask API was called>",
"event_data" {
"error_code": "<Indicating reason for failure>",
"message": "<one line brief of failure>",
"description": "<detailed explanation>"
}
},
"data": null
}

The following are the ExoML Verbs:

  • Transcribe: This verb converts media to text
  • Translate: This verb converts text in source language to text in target language
  • Query: This verb has the ability to take in text as input (typically a natural language query) and output text (typically the answer to that query)
  • Summarize: This verb has the ability to either take in text as input or encompass multiple actions like (Transcribe, Translate) and output a final summary as output text which condenses and captures the essence of all the input text passed into this verb

We will go over each Verb, it’s attributes along with the associated Nouns and it’s relevant attributes below. 

Transcribe:

This verb converts media to text

Attributes

Attribute Name

Allowed Values

Default Value

Mandatory

resourceFormat

mp3, wav

None

Y

resourceURL

valid publicly accessible URL that returns resource file which is of type=resourceFormat

None

Y

speakerDiarization

True/False

True

N

autoTagSpeakers

True/False

True

N

customSpeakerLabels

comma separated labels as str for speakers in given media resource

“”

N

customUniqueID

any valid str

“”

N

optimizeFor

comma separated str of enums = [cost, latency]

“”

N

verbEventSubscription

transcribe_completed, 

transcribe_failed

All

N

verbEventEndpoint

Valid HTTP webhook

None

N

verbEventCallbackMethod

POST

POST

N

resourceFormat

This attribute specifies the file type that is either going to be returned when we make GET request on resourceURL OR the base64 encoded file passed in the Noun

resourceURL

This attribute specifies a valid URL that should return a valid file of type=resourceFormat given above, when our system makes a GET on /resourceURL

speakerDiarization

This attribute specifies a boolean whether to perform speaker diarization on the resource

autoTagSpeakers

This attribute specifies a boolean whether to automatically label the detected speakers in the resource using LLM based on diarized transcript

customSpeakerLabels

This attribute specifies a comma separated str of user-defined speaker labels that will be used by our system to pick and tag speakers ONLY from the user-defined keywords

customUniqueID

This attribute specifies a user-defined unique ID as str so that it becomes useful to refer this ID in supported downstream Verbs / actions if the output of this Verb / action needs to be chained

optimizeFor

This attribute specifies a comma separated str of key constraints (enums) => [cost, latency] which the user can pass in the order of decreasing priority. For eg: if optimizeFor=”latency,cost” then our system infers that it needs to optimizeFor latency first and then for cost. This can also be defined at ExoTask level and here the individual verb level values DONOT override the global ExoTask level optimizeFor attribute

verbEventSubscription

This allows the user to specify which verb events should be notified to verbEventEndpoint.

  • Documented in table below
  • To start with, we may not support event subscriptions. We may decide to send all events
verbEventEndpoint
  • This is optional. If not given, an ExoTask level endpoint will be used.
    • Maybe to start with, we may not support this. We may deliver all events to ExoTask level endpoint
  • This takes the absolute endpoint URL as an argument. Our system delivers events when <Transcribe> verb is completed or interrupted (depending on which all events are subscribed)
  • If this is given, all verb events will be delivered to this endpoint henceforth (even for future verbs). However, taskLifecycleEvents would still be delivered to the endpoint registered during ExoTask creation.
<?xml version="1.0" encoding="UTF-8"?>
<Flow>
<Transcribe resourceURL="https://example.com/audio" resourceFormat="mp3"></Transcribe>
</Flow>
{
"event_details": {
"event_type": "verb_event",
"event_name": "transcribe_completed",
"event_timestamp": "2019-01-10T17:08:00+05:30",
"task_sid": "ab145jdk879 - Same as what we returned in API",
"custom_params": "abcdefghijklmn - same as what user passed in API request",
"event_data" {
"<Event related data>"
}
},
"data": {
"<Standard fields of ExoTask entity>",
}
}
{
 "event_data" { 
      "transcript":"Hello World",
      "confidence":0.95,
      },
}
{
"event_data": {
"error_code": "1234",
"message": "asr_failed",
"description": "<Reason for Transcribe failed>"
}
}

Translate:

This verb converts text in source language to text in target language

Attributes

Attribute Name

Allowed Values

Default Value

Mandatory

resourceFormat

txt

txt

Y

resourceURL

valid publicly accessible URL that returns resource file which is of type=resourceFormat

None

Y

sourceLanguage

“auto” OR valid ISO-6391 language code

“auto”

N

targetLanguage

valid ISO-6391 language code

“”

Y

customUniqueID

any valid str

“”

N

optimizeFor

comma separated str of enums = [cost, latency]

“”

N

verbEventSubscription

transcribe_completed, 

transcribe_failed

All

N

verbEventEndpoint

Valid HTTP webhook

None

N

verbEventCallbackMethod

POST

POST

N

 

resourceFormat

This attribute specifies the file type that is either going to be returned when we make GET request on resourceURL OR the base64 encoded file passed in the Noun

resourceURL

This attribute specifies a valid URL that should return a valid file of type=resourceFormat given above, when our system makes a GET on /resourceURL

customUniqueID

This attribute specifies a user-defined unique ID as str so that it becomes useful to refer this ID in supported downstream Verbs / actions if the output of this Verb / action needs to be chained

optimizeFor

This attribute specifies a comma separated str of key constraints (enums) => [cost, latency] which the user can pass in the order of decreasing priority. For eg: if optimizeFor=”latency,cost” then our system infers that it needs to optimizeFor latency first and then for cost. This can also be defined at ExoTask level and here the individual verb level values DONOT override the global ExoTask level optimizeFor attribute

verbEventSubscription

This allows the user to specify which verb events should be notified to verbEventEndpoint.

  • Documented in table below
  • To start with, we may not support event subscriptions. We may decide to send all events
verbEventEndpoint
  • This is optional. If not given, an ExoTask level endpoint will be used.
    • Maybe to start with, we may not support this. We may deliver all events to ExoTask level endpoint
  • This takes the absolute endpoint URL as an argument. Our system delivers events when <Translate> verb is completed or failed (depending on which all events are subscribed)
  • If this is given, all verb events will be delivered to this endpoint henceforth (even for future verbs). However, taskLifecycleEvents would still be delivered to the endpoint registered during ExoTask creation.
<?xml version="1.0" encoding="UTF-8"?>
<Flow>
<Translate exoResourceSID=”abcd-1234” targetLanguage=”hi”></Translate>
</Flow>
{
"event_details": {
"event_type": "verb_event",
"event_name": "translate_completed",
"event_timestamp": "2019-01-10T17:08:00+05:30",
"task_sid": "ab145jdk879 - Same as what we returned in API",
"custom_params": "abcdefghijklmn - same as what user passed in API request",
"event_data" {
"<Event related data>"
}
},
"data": {
"<Standard fields of ExoTask entity>",
}
}
{
"event_data" { 
      "translation":"வணக்கம் உலகம்",
      "confidence":0.95,
      },
}
{
"event_data" { 
            "error_code":"1234",
            "message":"translator_failed",
            "description":"<Reason for Translate failed>"
      },
}

Query:

This verb has the ability to take in text as input (typically a natural language query) and output text (typically the answer to that query)

Attributes

Attribute Name

Allowed Values

Default Value

Mandatory

customUniqueID

any valid str

“”

N

optimizeFor

comma separated str of enums = [cost, latency, determinism, conversational]

“”

N

verbEventSubscription

query_completed, 

query_failed

All

N

verbEventEndpoint

Valid HTTP webhook

None

N

verbEventCallbackMethod

POST

POST

N

customUniqueID

This attribute specifies a user-defined unique ID as str so that it becomes useful to refer this ID in supported downstream Verbs / actions if the output of this Verb / action needs to be chained

optimizeFor

This attribute specifies a comma separated str of key constraints (enums) => [cost, latency, determinism, conversational] which the user can pass in the order of decreasing priority. For eg: if optimizeFor=”cost,determinism,conversational” then our system infers that it needs to optimizeFor cost first and then ensure the response is deterministic and also try to make it sound more human-like (conversational). This can also be defined at ExoTask level and here the individual verb level values DONOT override the global ExoTask level optimizeFor attribute

verbEventSubscription

This allows the user to specify which verb events should be notified to verbEventEndpoint.

  • Documented in table below
  • To start with, we may not support event subscriptions. We may decide to send all events
verbEventEndpoint
  • This is optional. If not given, an ExoTask level endpoint will be used.
    • Maybe to start with, we may not support this. We may deliver all events to ExoTask level endpoint
  • This takes the absolute endpoint URL as an argument. Our system delivers events when <Query> verb is completed or failed (depending on which all events are subscribed)
  • If this is given, all verb events will be delivered to this endpoint henceforth (even for future verbs). However, taskLifecycleEvents would still be delivered to the endpoint registered during ExoTask creation.
<?xml version="1.0" encoding="UTF-8"?>
<Flow>
<Query optimizeFor="determinism">What is the capital of India?</Query>
</Flow>
{
"event_details": {
"event_type": "verb_event",
"event_name": "query_completed",
"event_timestamp": "2019-01-10T17:08:00+05:30",
"task_sid": "ab145jdk879 - Same as what we returned in API",
"custom_params": "abcdefghijklmn - same as what user passed in API request",
"event_data" {
"<Event related data>"
}
},
"data": {
"<Standard fields of ExoTask entity>",
}
}
{
"event_data" { 
"answer":"The capital of India is New Delhi.",
"confidence":0.95,
},
}
{
 "event_data" { 
            "error_code":"1234",
            "message":"query_failed",
            "description":"<Reason for Query failed>"
      },
}

Summarize:

This verb has the ability to either take in text as input or encompass multiple actions like (Transcribe, Translate) and output a final summary as output text which condenses and captures the essence of all the input text passed into this verb

Attributes

Attribute Name

Allowed Values

Default Value

Mandatory

customUniqueID

any valid str

“”

N

optimizeFor

comma separated str of enums = [cost, latency, determinism, conversational]

“”

N

withSentiment

True/False

False

N

withIntent

True/False

False

N

customIntents

comma separated str of user-defined intents

“”

N

maxWords

>=1

150

 

verbEventSubscription

summarize_completed, 

summarize_failed

All

N

verbEventEndpoint

Valid HTTP webhook

None

N

verbEventCallbackMethod

POST

POST

N

customUniqueID

This attribute specifies a user-defined unique ID as str so that it becomes useful to refer this ID in supported downstream Verbs / actions if the output of this Verb / action needs to be chained

optimizeFor

This attribute specifies a comma separated str of key constraints (enums) => [cost, latency, determinism, conversational] which the user can pass in the order of decreasing priority. For eg: if optimizeFor=”cost,determinism,conversational” then our system infers that it needs to optimizeFor cost first and then ensure the response is deterministic and also try to make it sound more human-like (conversational). This can also be defined at ExoTask level and here the individual verb level values DONOT override the global ExoTask level optimizeFor attribute

withSentiment

This attribute specifies whether to extract the Natural Language Sentiment (Positive, Negative, Neutral) from the summary

withIntent

This attribute specifies whether to extract the overall intent, which is the most important action that is conveyed in the summary

customIntents

This attribute specifies a comma separated str of user-defined intents, which will be used ONLY when withIntent=True to map the extracted intent of the passage within the set of given customIntents

maxWords

This attribute specifies the max number of words that shall be present in the final output summary

verbEventSubscription

This allows the user to specify which verb events should be notified to verbEventEndpoint.

  • Documented in table below
  • To start with, we may not support event subscriptions. We may decide to send all events
verbEventEndpoint
  • This is optional. If not given, an ExoTask level endpoint will be used.
    • Maybe to start with, we may not support this. We may deliver all events to ExoTask level endpoint
  • This takes the absolute endpoint URL as an argument. Our system delivers events when <Summarize> verb is completed or failed (depending on which all events are subscribed)
  • If this is given, all verb events will be delivered to this endpoint henceforth (even for future verbs). However, taskLifecycleEvents would still be delivered to the endpoint registered during ExoTask creation.

Nouns

The only supported noun for the <Summarize> verb is <Input> which is defined below:

Noun

Description

<Input>

Input is used when user wants to define a custom input to the verb or wants to chain the output of any of the previous supported verbs within the same flow as an input to the verb enclosing this noun

Noun Attributes

Attribute Name

Allowed Values

Default Value

Mandatory

type

verb, txt

None

Y

weightage

float between 0 to 1

0

N

<?xml version="1.0" encoding="UTF-8"?>
<Flow>
<Summarize optimizeFor="cost" withIntent="True" customIntents="acknowledged_to_pay,refused_to_pay,payment_done_already">
     <Input type="txt">Blob of plain text</Input>
     <Input type="txt">Blob of plain text</Input>
</Summarize>
</Flow>
<?xml version="1.0" encoding="UTF-8"?>
<Flow>
<Transcribe exoResourceSID="abc-123" customUniqueID="xyz"></Transcribe>
<Transcribe exoResourceSID="abc-223" customUniqueID="pnr"></Transcribe>
<Transcribe exoResourceSID="abc-323" customUniqueID="def"></Transcribe>
<Summarize optimizeFor="latency,cost" withSentiment="True">
     <Input type="verb">xyz</Input>
     <Input type="txt">Blob of plain text</Input>
     <Input type="verb">def</Input>
</Summarize>
</Flow>
{
 "event_data" { 
      "summary":"The conversation was between a customer and an agent. The customer enquired about a plan upgrade for which the agent responded courteously with necessary details before ending the conversation",
      "confidence":0.85,
      },
}
{
 "event_data" { 
            "error_code":"1234",
            "message":"summarize_failed",
            "description":"<Reason for Summarize failed>"
      },
}

Bringing It All Together

Think of Exomind Tasker API as a maestro, orchestrating every aspect of task execution from initiation to completion with an expert's precision. It's not just about choosing an option—it's about harnessing the essence of tailored performance for every task your application handles.

A Symphony of Benefits

By selecting the most appropriate optimization for each task, Exomind Tasker API:

Maximizes Efficiency: Choose speed when time is of the essence, and watch your application deliver results at a pace that keeps up with your users' expectations.

Ensures Precision: Opt for accuracy when details cannot be compromised, ensuring that the integrity of your data and results stands second to none.

Balances Dynamics: Find the perfect harmony between quick delivery and meticulous detail for everyday tasks, making your application a reliable tool for various use cases.

Exotel's Ecosystem and Exomind Tasker API Synergy

Integration with Exotel's Communication Platform

Exomind Tasker API acts as a natural extension to Exotel's existing communication platform, tapping into the power of voice and messaging services with optimized task management. This harmonization allows for unprecedented efficiency in tasks such as real-time transcription and analysis of calls, processing of customer interactions, and automation of communication-based workflows.

Complementing Exotel's API Offerings

Exomind Tasker API complements the current array of Exotel APIs, providing additional layers of intelligence to smart communication solutions. It does so by leveraging its optimization capabilities to enhance API-driven tasks like sending tailored notifications, automating responses, and integrating with AI-powered customer service bots.

Your Strategic Advantage

Exomind Tasker API is the strategic advantage in your toolkit, providing the innovation and adaptability that modern applications demand. With its flexible optimization, and an investment in efficiency and precision, this API is more than a feature—it's the cornerstone upon which you can build the next generation of intelligent applications.

Elevate your product to new heights with Exomind Tasker API, where every task is an opportunity for excellence.