Used to share a new post on Orbis. Can be used to share posts in a specific context or in the global feed. If you are sharing an encrypted post you will need to use the orbis.decryptPost() function to decrypt the content.

How to use?

The createPost() function accepts a JSON object that must contain a body element which is the actual content of the post being shared.

let res = await orbis.createPost({body: "gm!"});


  • content: A JSON object that contains the details of the post being shared
  • body: string Content of the post being shared
  • title: string optional Title of the post (can be used for articles)
  • context: string optional Context in which the post is being shared. Can be a random string or a group / channel id
  • master: string optional If the post is being shared as a comment of a post
  • reply_to: string optional If the post shared is a reply to another comment in a thread
  • mentions: array optional Array of mentions if this post is mentioning other users, the array items must contain:
  • did: string Did of the user being mentioned
  • username: string Current username of the user
  • tags: array optional Array of tags that can be used to filter posts in queries:
  • slug: string Identifier for the tag (used in queries)
  • title: string Title that can displayed in the app for example
  • media: array optional An array of media object stored on IPFS
  • url: string URL of the image must start with ipfs://
  • gateway: string URL of the IPFS gateway where the media is stored
  • data: object optional Can be used to attach some custom data to a post
  • encryptionRules: object optional A JSON object containing the optional encryption rules for this post.
  • type: string The type of encryption needed, can be token-gated or custom for now.
  • For the token-gated posts:

  • chain: string The chain on which the smart contract is. Must be one of those in lowercase
  • contractType: string The type of contract being used, must be ERC20, ERC721 or ERC1155.
  • contractAddress: string The address of the contract.
  • minTokenBalance: string The minimum balance required to decrypt the post (in WEI for ERC20).
  • tokenId: string optional Used only for ERC1155 tokens to represent the tokenId used.
  • For the custom encryption rules:

  • accessControlConditions: object The custom Lit access control conditions you want to use to encrypt this post.


/** To create a simple post in the global feed */
orbis.createPost({body: "hello everyone"});

/** To create a post in the 'gm' channel of the orbis group */
  body: "gm",
  context: "kjz...kk3gn"

/** To create an encrypted post for Azuki holders */
    body: "Hello Azuki holders!"
    type: "token-gated",
    chain: "ethereum",
    contractType: "ERC721",
    contractAddress: "0xed5af388653567af2f388e6224dc7c4b3241c544",
    minTokenBalance: "1"

/** Encrypt posts using custom access control conditions */
    body: "Post visible for wallets with at least 0.00001 ETH."
    type: "custom",
    accessControlConditions: [
        contractAddress: '',
        standardContractType: '',
        chain: "ethereum",
        method: 'eth_getBalance',
        parameters: [
        returnValueTest: {
          comparator: '>=',
          value: '10000000000000'


  status: 200,
  doc: "kjzl6cwe1...e4wvxhiqj",
  result: "Success creating TileDocument."