SDK Reference


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?

const res = await orbis.createPost(content, encryptionRules);


  • 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 be displayed in the app for example
    • media - array optional An array of media objects stored on IPFS
      • url - string media URL 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.
      • token-gated(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.
      • custom (Custom encryption rules):
        • accessControlConditions - object The custom Lit access control conditions you want to use to encrypt this post.


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


Create a post in the global feed

    body: "hello everyone"

Create a post in a specific context

  body: "gm",
  context: "kjz...kk3gn"

Create an encrypted post using token gating

In this example, only Azuki holders on Ethereum mainnet can read the post.

    body: "Hello Azuki holders!"
    type: "token-gated",
    chain: "ethereum",
    contractType: "ERC721",
    contractAddress: "0xed5af388653567af2f388e6224dc7c4b3241c544",
    minTokenBalance: "1"

Encrypt a post using a custom access control conditions

In this example, only people with more than 0.00001 ETH on Ethereum mainnet can read the post.

    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'