Persona API Docs

Created by Support @ BHuman, Modified on Sat, 1 Mar at 5:23 AM by Support @ BHuman

We provide extensive APIs for Persona, so you can make your clone do anything you can imagine. Here's a list of available APIs.

The base URL is persona.bhuman.ai/persona/ unless otherwise specified

Authentication is done with the header --header 'Authorization: Client Secret'
Your Client Secret key can be found in Settings > API

Create a new Persona

POST /api/admin/add_voice

  • Description: Adds a new voice profile for a persona.

Request Body:

jsonCopy code{
  "voice_data": {
    "language": "en",
    "tone": "friendly",
    "pitch": "medium",
    "sample_audio": "base64_encoded_audio"
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Voice profile added successfully",
  "voice_id": "12345"
}

Schema:

  • language: String, required, language code.
  • tone: String, required, tone description.
  • pitch: String, required, pitch level.
  • sample_audio: String, required, base64 encoded audio.

GET /persona/voice/{embed_name}

Description: Retrieves the training URL for a specified embed.

Response Example

jsonCopy code{
  "training_url": "https://example.com/training-data"
}

Schema:

  • training_url: String, required. URL to be used for training in the next step.

Append response output URL with https://s3.us-east-2.amazonaws.com/
For example: https://s3.us-east-2.amazonaws.com/tmp-prod-0524/generated_audio/bdf21d1c-9bb9-4c25-a3d3-7a11beea9cca.wav

POST https://voice.bhuman.ai/api/v2/voice/generate

Description: Generates a voice using the provided training URL.

Request Body

{
  "config": null,
  "names": [],
  "training_urls": ["https://example.com/training-data"],
  "use_prosody": false
}

Response Example

{
  "status": "success",
  "message": "Voice generated successfully",
  "voice_id": "12345"
}

Schema:

  • config: Null, optional. Reserved for advanced configuration.
  • names: Array of Strings, optional. Names associated with the voice.
  • training_urls: Array of Strings, required. URLs retrieved from the previous step.
  • use_prosody: Boolean, optional. Set to true to enable natural prosody.

POST /api/admin/instance

  • Description: Creates a new instance for a persona.

Request Body:

jsonCopy code{
  "instance_data": {
    "name": "PersonaName",
    "description": "A detailed description of the persona",
    "configuration": {
      "setting1": "value1",
      "setting2": "value2"
    }
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Instance created successfully",
  "instance_id": "67890"
}

Schema:

  • name: String, required, persona name.
  • description: String, required, detailed description.
  • configuration: Object, required, configuration settings.

POST /api/admin/video

  • Description: Adds a new video to a persona's profile.

Request Body:

jsonCopy code{
  "video_data": {
    "file": "base64_encoded_video",
    "title": "Introduction Video",
    "description": "A brief introduction video",
    "duration": 120,
    "resolution": "1080p"
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Video added successfully",
  "video_id": "abc123"
}

Schema:

  • file: String, required, base64 encoded video.
  • title: String, required, video title.
  • description: String, optional, video description.
  • duration: Integer, required, video duration in seconds.
  • resolution: String, required, video resolution.

POST /api/instance

  • Description: Creates a new instance of a persona.

Request Body:

jsonCopy code{
  "instance_data": {
    "name": "PersonaName",
    "description": "A detailed description of the persona",
    "configuration": {
      "setting1": "value1",
      "setting2": "value2"
    }
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Instance created successfully",
  "instance_id": "67890"
}

Schema:

  • name: String, required, persona name.
  • description: String, required, detailed description.
  • configuration: Object, required, configuration settings.

DELETE /api/instance

  • Description: Deletes an existing persona instance.

Request Body:

jsonCopy code{
  "instance_id": "67890"
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Instance deleted successfully"
}

Schema:

  • instance_id: String, required, unique identifier of the instance.

Add to KB (Knowledge Base)

POST /api/kb/auto-generate-prompts

  • Description: Automatically generates prompts for the knowledge base.

Request Body:

jsonCopy code{
  "data": {
    "topics": ["topic1", "topic2"],
    "context": "Additional context for prompt generation"
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "prompts": ["Generated prompt 1", "Generated prompt 2"]
}

Schema:

  • topics: Array of Strings, required, topics for prompt generation.
  • context: String, optional, additional context.

Review Data

POST /api/kb/review-data

  • Description: Submits data for review in the knowledge base.

Request Body:

jsonCopy code{
  "review_data": {
    "articles": ["article1", "article2"],
    "notes": ["note1", "note2"]
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Data submitted for review"
}

Schema:

  • articles: Array of Strings, required, articles for review.
  • notes: Array of Strings, required, notes for review.

Store Pages

POST /api/kb/store-pages

  • Description: Stores pages in the knowledge base.

Request Body:

jsonCopy code{
  "pages": [
    {
      "title": "Page Title",
      "content": "Page content here",
      "metadata": {
        "author": "Author Name",
        "date": "2024-05-01"
      }
    }
  ]
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Pages stored successfully"
}

Schema:

  • title: String, required, title of the page.
  • content: String, required, content of the page.
  • metadata: Object, optional, metadata about the page.

Stream Pages

POST /api/kb/stream-pages

  • Description: Streams pages into the knowledge base.

Request Body:

jsonCopy code{
  "stream_data": {
    "stream_id": "stream123",
    "pages": [
      {
        "title": "Page Title",
        "content": "Page content here",
        "metadata": {
          "author": "Author Name",
          "date": "2024-05-01"
        }
      }
    ]
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Pages streamed successfully"
}

Schema:

  • stream_id: String, required, unique identifier for the stream.
  • pages: Array of Page objects, required, pages to be streamed.

Manage Training Data

GET /api/kb/training-data

  • Description: Retrieves training data from the knowledge base.

Response Example:

jsonCopy code{
  "status": "success",
  "training_data": [
    {
      "id": "data1",
      "content": "Training data content here"
    },
    {
      "id": "data2",
      "content": "More training data content"
    }
  ]
}

PUT /api/kb/training-data

  • Description: Updates training data in the knowledge base.

Request Body:

jsonCopy code{
  "training_data": {
    "id": "data1",
    "content": "Updated training data content"
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Training data updated successfully"
}

Schema:

  • id: String, required, unique identifier for the training data.
  • content: String, required, content of the training data.

DELETE /api/kb/training-data/

  • Description: Deletes specific training data from the knowledge base.

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Training data deleted successfully"
}

Schema:

  • id: String, required, unique identifier for the training data to be deleted.

Chat

POST /api/kb/v2/chat

  • Description: Initiates a chat using knowledge base version 2.

Request Body:

jsonCopy code{
  "chat_data": {
    "user_id": "user123",
    "message": "Hello, I need help with...",
    "context": "Context for the chat"
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "chat_id": "chat123",
  "response": "How can I assist you today?"
}

Schema:

  • user_id: String, required, unique identifier of the user.
  • message: String, required, initial message from the user.
  • context: String, optional, additional context for the chat.

Chat History

GET /api/persona/chats

  • Description: Retrieves the chat history.

Response Example:

jsonCopy code{
  "status": "success",
  "chats": [
    {
      "chat_id": "chat123",
      "user_id": "user123",
      "messages": ["Hello", "How can I help you?"]
    }
  ]
}

GET /api/persona/messages/

  • Description: Retrieves messages from a specific chat.

Response Example:

jsonCopy code{
  "status": "success",
  "messages": ["Hello", "How can I help you?"]
}

Schema:

  • chat_id: String, required, unique identifier of the chat### Make New Persona

Create a new Persona

POST /api/admin/add_voice

  • Description: Adds a new voice profile for a persona.

Request Body:

jsonCopy code{
  "voice_data": {
    "language": "en",
    "tone": "friendly",
    "pitch": "medium",
    "sample_audio": "base64_encoded_audio"
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Voice profile added successfully",
  "voice_id": "12345"
}

Schema:

  • language: String, required, language code.
  • tone: String, required, tone description.
  • pitch: String, required, pitch level.
  • sample_audio: String, required, base64 encoded audio.

POST /api/admin/instance

  • Description: Creates a new instance for a persona.

Request Body:

jsonCopy code{
  "instance_data": {
    "name": "PersonaName",
    "description": "A detailed description of the persona",
    "configuration": {
      "setting1": "value1",
      "setting2": "value2"
    }
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Instance created successfully",
  "instance_id": "67890"
}

Schema:

  • name: String, required, persona name.
  • description: String, required, detailed description.
  • configuration: Object, required, configuration settings.

POST /api/admin/video

  • Description: Adds a new video to a persona's profile.

Request Body:

jsonCopy code{
  "video_data": {
    "file": "base64_encoded_video",
    "title": "Introduction Video",
    "description": "A brief introduction video",
    "duration": 120,
    "resolution": "1080p"
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Video added successfully",
  "video_id": "abc123"
}

Schema:

  • file: String, required, base64 encoded video.
  • title: String, required, video title.
  • description: String, optional, video description.
  • duration: Integer, required, video duration in seconds.
  • resolution: String, required, video resolution.

POST /api/instance

  • Description: Creates a new instance of a persona.

Request Body:

jsonCopy code{
  "instance_data": {
    "name": "PersonaName",
    "description": "A detailed description of the persona",
    "configuration": {
      "setting1": "value1",
      "setting2": "value2"
    }
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Instance created successfully",
  "instance_id": "67890"
}

Schema:

  • name: String, required, persona name.
  • description: String, required, detailed description.
  • configuration: Object, required, configuration settings.

DELETE /api/instance

  • Description: Deletes an existing persona instance.

Request Body:

jsonCopy code{
  "instance_id": "67890"
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Instance deleted successfully"
}

Schema:

  • instance_id: String, required, unique identifier of the instance.

Add to KB (Knowledge Base)

POST /api/kb/auto-generate-prompts

  • Description: Automatically generates prompts for the knowledge base.

Request Body:

jsonCopy code{
  "data": {
    "topics": ["topic1", "topic2"],
    "context": "Additional context for prompt generation"
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "prompts": ["Generated prompt 1", "Generated prompt 2"]
}

Schema:

  • topics: Array of Strings, required, topics for prompt generation.
  • context: String, optional, additional context.

POST /api/kb/review-data

  • Description: Submits data for review in the knowledge base.

Request Body:

jsonCopy code{
  "review_data": {
    "articles": ["article1", "article2"],
    "notes": ["note1", "note2"]
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Data submitted for review"
}

Schema:

  • articles: Array of Strings, required, articles for review.
  • notes: Array of Strings, required, notes for review.

POST /api/kb/store-pages

  • Description: Stores pages in the knowledge base.

Request Body:

jsonCopy code{
  "pages": [
    {
      "title": "Page Title",
      "content": "Page content here",
      "metadata": {
        "author": "Author Name",
        "date": "2024-05-01"
      }
    }
  ]
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Pages stored successfully"
}

Schema:

  • title: String, required, title of the page.
  • content: String, required, content of the page.
  • metadata: Object, optional, metadata about the page.

POST /api/kb/stream-pages

  • Description: Streams pages into the knowledge base.

Request Body:

jsonCopy code{
  "stream_data": {
    "stream_id": "stream123",
    "pages": [
      {
        "title": "Page Title",
        "content": "Page content here",
        "metadata": {
          "author": "Author Name",
          "date": "2024-05-01"
        }
      }
    ]
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Pages streamed successfully"
}

Schema:

  • stream_id: String, required, unique identifier for the stream.
  • pages: Array of Page objects, required, pages to be streamed.

GET /api/kb/training-data

  • Description: Retrieves training data from the knowledge base.

Response Example:

jsonCopy code{
  "status": "success",
  "training_data": [
    {
      "id": "data1",
      "content": "Training data content here"
    },
    {
      "id": "data2",
      "content": "More training data content"
    }
  ]
}

PUT /api/kb/training-data

  • Description: Updates training data in the knowledge base.

Request Body:

jsonCopy code{
  "training_data": {
    "id": "data1",
    "content": "Updated training data content"
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Training data updated successfully"
}

Schema:

  • id: String, required, unique identifier for the training data.
  • content: String, required, content of the training data.

DELETE /api/kb/training-data/

  • Description: Deletes specific training data from the knowledge base.

Response Example:

jsonCopy code{
  "status": "success",
  "message": "Training data deleted successfully"
}

Schema:

  • id: String, required, unique identifier for the training data to be deleted.

Chat

POST /api/kb/v2/chat

  • Description: Initiates a chat using knowledge base version 2.

Request Body:

jsonCopy code{
  "chat_data": {
    "user_id": "user123",
    "message": "Hello, I need help with...",
    "context": "Context for the chat"
  }
}

Response Example:

jsonCopy code{
  "status": "success",
  "chat_id": "chat123",
  "response": "How can I assist you today?"
}

Schema:

  • user_id: String, required, unique identifier of the user.
  • message: String, required, initial message from the user.
  • context: String, optional, additional context for the chat.

Chat History

GET /api/persona/chats

  • Description: Retrieves the chat history.

Response Example:

jsonCopy code{
  "status": "success",
  "chats": [
    {
      "chat_id": "chat123",
      "user_id": "user123",
      "messages": ["Hello", "How can I help you?"]
    }
  ]
}

GET /api/persona/messages/

  • Description: Retrieves messages from a specific chat.

Response Example:

jsonCopy code{
  "status": "success",
  "messages": ["Hello", "How can I help you?"]
}

Schema:

  • chat_id: String, required, unique identifier of the chat.

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article