Chatbot API

General operation

A conversational response from the chatbot by hitting this publicly available end point.

Use HTTP GET to retrieve what you want (read on below for more details). Results can returned as raw JSON data.

The result will always look like this:

To send a request you will always need two things.

A conversation id (convo_id) and what the user has said (say) and there is an optional parameter bot_id to connect to a specific chatbot.

Here is an example of saying hello to Shakespearebot

Parameter: say

The STRING value of say represents what the user wants to say to the bot.

This must be url encoded.

Parameter: bot_id

The INTEGER value of bot_id holds the bot which you wish to communicate with.

Currently there are 3 avilable bots.
6 – Program O the original chatbot

10 – Shakespearebot – talk to the Bard

13 – Carlos chow a comedybot.

The default bot_id is 13 – Carlos Chow

Parameter: convo_id

The STRING value of convo_id represents what the unique user session and is used to keep context within the conversation.

This can only be made up of alpha numeric characters and can be generated however you want.

For example (in PHP)

Or just send the current session id as the convo_id.

Generate one convo_id per user and then the chatbot will remember conversational values such as the user’s name, topic and context.

This is a publicly available API there are no requirements for an API key. You might see the public api slow down in high use traffic times. Though it should still suit most medium scale projects and perfect for hacks and experimenting.

If you would like to use the Program O API key for production then please get in touch to discuss the matter further stating expected usage. By sending an email to

  • AkoZ

    Parameter: say
    The STRING value of say represents what the user wants to say to the bot. This must be url encoded.
    also but, how ?
    does that mean when i put “say “la couleur est une onde”” the bot will record that “la couleur” + “est” + “une onde” are 3 parts useful .. and ask perhpas each of it to “know” the words in order ?

    this start is quite too short :)
    –> “{“convo_id”:”apianon”,”usersay”:”yo”,”botsay”:”Can I help you?”} “

  • lexasss

    Hi. Great API, but doesn;t work on a client side, since this server does not support cross-site requests. (the header ‘Access-Control-Allow-Origin: * ‘ is missing).

  • Gordie Rothschild

    is this thing offline or what? getting 403’s…

    • 0r0b0r0


  • hitunny2014

    Hello, I downloaded the latest version of Program-O, but found it difficult how to use my API calls.

  • ashish bulchandani

    404 and 403 error

  • Ryan Plauche

    I get a 403 Error when trying to hit this api :(

  • AIML

    403 Forbidden

  • Ryan Westcott

    Yep, 403 :(