Docs
Libraries
TypeScript Client

This is the official Unbody client for typescript/javascript

Installation

Install unbody ts-client with npm

  npm i @unbody-io/ts-client

Usage/Examples

Instantiate

import Unbody from '@unbody-io/ts-client'
 
const unbody = new Unbody({
  apiKey: 'your api key',
  projectId: 'your project key',
})

note: using this on client-side of your application can lead to crawling your data!

Transformers

You can use this option to parse JSON strings in the response the way you want

import Unbody from '@unbody-io/ts-client'
 
const unbody = new Unbody({
  apiKey: 'your api key',
  projectId: 'your project key',
  GoogleDoc: {
    mentions(data: string): { [p: string]: any } {
      return {} // Any format you want
    },
  },
})

Get methods

You can use this method to get data from any source that you have in Unbody panel

note: examples are for googleDoc but you can replace that with other sources like imageBlock, audioFile etc...

Get without any query

unbody.get.googleDoc
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Where - simple query using object param

unbody.get.googleDoc
  .where({ title: 'My google doc title' })
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Where - advance query using callback param

unbody.get.googleDoc
  .where(({ Like, GreaterThan }) => {
    return {
      title: Like('Document'),
      size: GreaterThan(20),
    }
  })
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Ask - simple usage

unbody.get.googleDoc
  .ask('What is the price of bitcoin?')
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Ask - selecting properties to look for your question response in

unbody.get.googleDoc
  .ask('What is the price of bitcoin?', ['summary'])
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

or you can just pass arguments as an object

unbody.get.googleDoc
  .ask({ question: 'What is the price of bitcoin?', properties: ['summary'] })
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Semantic search - simple usage

unbody.get.googleDoc
    .search
    .about('privacy and security')
    .exec()
    .then((response) => { console.log(response)})
    .catch((error) => {
        console.error(error)
    })

Semqantic search - specify the distance from the text

unbody.get.googleDoc
    .search
    .about('privacy and security', { distance: 1.5 })
    .exec()
    .then((response) => { console.log(response)})
    .catch((error) => {
        console.error(error)
    })

or you can just pass arguments as an object

unbody.get.googleDoc
  .search.about({ distance: 1.5, concepts: ['bitcoin', 'price'], ...etc })
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Near vector - simple usage

unbody.get.googleDoc
  .nearVector(1)
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Near vector - specify the distance from the text

unbody.get.googleDoc
  .nearVector(1, 0.5)
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

or you can just pass arguments as an object

unbody.get.googleDoc
  .nearText({ distance: 1.5, vector: [1, 20], ...etc })
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Group - simple usage

unbody.get.googleDoc
  .group(3.5)
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Group - specify the type

unbody.get.googleDoc
  .group(3.5, 'closest')
  .limit(10)
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

or you can just pass arguments as an object

unbody.get.googleDoc
  .group({ force: 3.5, type: 'closest' })
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Group By - simple usage

unbody.get.googleDoc
  .groupBy('title')
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Group By - specify the groups

unbody.get.googleDoc
  .groupBy('title', 3)
  .limit(10)
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

or you can just pass arguments as an object

unbody.get.googleDoc
  .group({ path: 'title', groups: 3, ...etc })
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Sort, Limit and Offset - using for pagination

unbody.get.googleDoc
  .limit(10)
  .offset(1)
  .sort('title', 'asc')
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Select - you can specify which fields to retrieve (by default all fields will be retrieved)

unbody.get.googleDoc
  .select('title', 'blocks.ImageBlock.alt')
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Additional - you can specify which additional fields to retrieve (by default all fields will be retrieved)

unbody.get.googleDoc
  .select('title', 'blocks.ImageBlock.alt')
  .exec()
  .then((response) => {
    console.log(response)
  })
  .catch((error) => {
    console.error(error)
  })

Aggregate methods

All the methods in get applies to this, except for additional

Other methods in Get and Aggregate

You can use getGraphQuery and getJsonQuery for debugging purposes