> For the complete documentation index, see [llms.txt](https://gitbook.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gitbook.com/docs/developers/gitbook-api/api-reference/integrations/render-an-integration-ui-with-get-method.md).

# Render an integration UI with GET method

```json
{"openapi":"3.1.0","info":{"title":"GitBook API","version":"0.0.1-beta"},"tags":[{"name":"integrations","description":"Expand the capabilities of GitBook by connecting it with various external platforms—CRM, finding trackers, or CI/CD pipelines—through standardized integration endpoints.\n"}],"servers":[{"url":"{host}/v1","variables":{"host":{"default":"https://api.gitbook.com"}}}],"security":[{"user":[]},{"user-internal":[]},{"user-staff":[]},{"integration":[]},{"integration-installation":[]}],"components":{"securitySchemes":{"user":{"type":"http","scheme":"bearer"},"user-internal":{"type":"http","scheme":"bearer"},"user-staff":{"type":"http","scheme":"bearer"},"integration":{"type":"http","scheme":"bearer"},"integration-installation":{"type":"http","scheme":"bearer"}},"parameters":{"integrationName":{"name":"integrationName","in":"path","required":true,"description":"Name of the integration.","schema":{"type":"string","pattern":"^[a-zA-Z0-9-_.]+$","maxLength":100}}},"schemas":{"ContentKitRenderOutput":{"type":"object","description":"Output of the integration when rendering a UI.","oneOf":[{"$ref":"#/components/schemas/ContentKitRenderOutputElement"},{"$ref":"#/components/schemas/ContentKitRenderOutputComplete"}]},"ContentKitRenderOutputElement":{"type":"object","description":"Output of type element in the lifecycle of the component.","properties":{"type":{"type":"string","enum":["element"]},"element":{"$ref":"#/components/schemas/ContentKitRootElement"},"state":{"type":"object"},"props":{"$ref":"#/components/schemas/PlainObject"},"canAccessVisitorClaims":{"type":"boolean","description":"Whether the rendered integration UI can receive visitor claims."}},"required":["element","state","props"]},"ContentKitRootElement":{"description":"Element used as root","oneOf":[{"$ref":"#/components/schemas/ContentKitBlock"},{"$ref":"#/components/schemas/ContentKitModal"},{"$ref":"#/components/schemas/ContentKitConfiguration"}],"discriminator":{"propertyName":"type"}},"ContentKitBlock":{"type":"object","description":"Higher level element to represent a custom block.","properties":{"type":{"type":"string","enum":["block"]},"children":{"type":"array","items":{"$ref":"#/components/schemas/ContentKitDescendantElement"}},"controls":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ContentKitBlockControl"},{"type":"array","items":{"$ref":"#/components/schemas/ContentKitBlockControl"}}]}}},"required":["type","children"]},"ContentKitDescendantElement":{"description":"Any element that can be used as children.","oneOf":[{"$ref":"#/components/schemas/ContentKitButton"},{"$ref":"#/components/schemas/ContentKitTextInput"},{"$ref":"#/components/schemas/ContentKitHStack"},{"$ref":"#/components/schemas/ContentKitVStack"},{"$ref":"#/components/schemas/ContentKitBox"},{"$ref":"#/components/schemas/ContentKitDivider"},{"$ref":"#/components/schemas/ContentKitWebFrame"},{"$ref":"#/components/schemas/ContentKitCodeBlock"},{"$ref":"#/components/schemas/ContentKitMarkdown"},{"$ref":"#/components/schemas/ContentKitCard"},{"$ref":"#/components/schemas/ContentKitImage"},{"$ref":"#/components/schemas/ContentKitInput"},{"$ref":"#/components/schemas/ContentKitSelect"},{"$ref":"#/components/schemas/ContentKitSwitch"},{"$ref":"#/components/schemas/ContentKitCheckbox"},{"$ref":"#/components/schemas/ContentKitRadio"},{"$ref":"#/components/schemas/ContentKitText"},{"$ref":"#/components/schemas/ContentKitHint"},{"$ref":"#/components/schemas/ContentKitLink"},{"$ref":"#/components/schemas/ContentKitStepperStep"}],"discriminator":{"propertyName":"type"}},"ContentKitButton":{"type":"object","description":"Pressable button triggering an action.","properties":{"type":{"type":"string","enum":["button"]},"style":{"type":"string","enum":["primary","secondary","danger"]},"onPress":{"$ref":"#/components/schemas/ContentKitAction"},"icon":{"$ref":"#/components/schemas/ContentKitIcon"},"trailingIcon":{"$ref":"#/components/schemas/ContentKitIcon"},"label":{"type":"string"},"tooltip":{"type":"string"},"confirm":{"$ref":"#/components/schemas/ContentKitConfirm"},"disabled":{"type":"boolean"}},"required":["type","onPress"]},"ContentKitAction":{"anyOf":[{"type":"object","description":"Custom action to re-render the block.","properties":{"action":{"type":"string"}},"additionalProperties":true,"required":["action"]},{"$ref":"#/components/schemas/ContentKitDefaultAction"}]},"ContentKitDefaultAction":{"oneOf":[{"type":"object","description":"Action to open an overlay modal defined by \"componentId\".","properties":{"action":{"type":"string","enum":["@ui.modal.open"]},"componentId":{"type":"string"},"props":{"$ref":"#/components/schemas/PlainObject"}},"required":["action","componentId","props"]},{"type":"object","description":"Action when a modal overlay is closed, with a return value to the higher level component in the stack. This action will be triggered on the parent component instance.","properties":{"action":{"type":"string","enum":["@ui.modal.close"]},"returnValue":{"$ref":"#/components/schemas/PlainObject"}},"required":["action","returnValue"]},{"type":"object","description":"Action to open an url.","properties":{"action":{"type":"string","enum":["@ui.url.open"]},"url":{"type":"string"}},"required":["action","url"]},{"type":"object","description":"Action when a link is being unfurled into a block.","properties":{"action":{"type":"string","enum":["@link.unfurl"]},"url":{"type":"string"}},"required":["action","url"]},{"type":"object","description":"Action to update the properties stored in the related node.","properties":{"action":{"type":"string","enum":["@editor.node.updateProps"]},"props":{"$ref":"#/components/schemas/PlainObject"}},"required":["action","props"]}]},"PlainObject":{"properties":{},"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/PlainObject"},{"type":"string"},{"type":"boolean"},{"type":"number"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"boolean"},{"type":"number"},{"$ref":"#/components/schemas/PlainObject"}]}}]}},"ContentKitIcon":{"type":"string","enum":["close","edit","github","gitlab","maximize","email","settings","search","delete","star","warning","link","link-external","eye","eye-off","lock","check","check-circle"]},"ContentKitConfirm":{"type":"object","description":"A confirm object that defines an optional confirmation dialog after the input is clicked.","properties":{"title":{"type":"string","description":"A text value that defines the dialog's title.","maxLength":100},"text":{"type":"string","description":"A text value that defines the explanatory text that appears in the confirm dialog.","maxLength":300},"confirm":{"type":"string","description":"A text value to define the text of the button that confirms the action.","maxLength":30},"style":{"type":"string","enum":["primary","danger"]}},"required":["title","text","confirm"]},"ContentKitTextInput":{"type":"object","description":"Text input to prompt the user.","properties":{"type":{"type":"string","enum":["textinput"]},"disabled":{"type":"boolean"},"state":{"description":"State binding. The value of the input will be stored as a property in the state named after this ID.","type":"string"},"initialValue":{"description":"Text value to initialize the input with.","type":"string"},"placeholder":{"description":"Text that appears in the form control when it has no value set","type":"string"},"multiline":{"type":"boolean"},"inputType":{"type":"string","enum":["text","password","email"],"default":"text"}},"required":["type","state"]},"ContentKitHStack":{"type":"object","description":"Horizontal stack of boxes.","properties":{"type":{"type":"string","enum":["hstack"]},"align":{"type":"string","default":"start","enum":["start","center","end"]},"children":{"type":"array","items":{"$ref":"#/components/schemas/ContentKitDescendantElement"}}},"required":["type","children"]},"ContentKitVStack":{"type":"object","description":"Vertical stack of boxes.","properties":{"type":{"type":"string","enum":["vstack"]},"align":{"type":"string","default":"start","enum":["start","center","end"]},"children":{"type":"array","items":{"$ref":"#/components/schemas/ContentKitDescendantElement"}}},"required":["type","children"]},"ContentKitBox":{"type":"object","properties":{"type":{"type":"string","enum":["box"]},"grow":{"description":"specifies how much of the remaining space in the container should be assigned to the element","type":"number"},"children":{"type":"array","items":{"$ref":"#/components/schemas/ContentKitDescendantElement"}}},"required":["type","children"]},"ContentKitDivider":{"type":"object","description":"Divider between 2 boxes in a stack.","properties":{"type":{"type":"string","enum":["divider"]},"size":{"type":"string","enum":["small","medium","large"]}},"required":["type"]},"ContentKitWebFrame":{"type":"object","description":"Frame for a webpage","properties":{"type":{"type":"string","enum":["webframe"]},"aspectRatio":{"type":"number","description":"Ratio between width and height. Used to size the webframe."},"source":{"type":"object","description":"Content to load in the frame.","properties":{"url":{"type":"string"}},"required":["url"]},"buttons":{"type":"array","description":"Controls button shown as an overlay in a corner of the frame.","items":{"$ref":"#/components/schemas/ContentKitButton"}},"data":{"type":"object","description":"Data to communicated to the webframe's content. Each state update will cause the webframe to receive a message.","additionalProperties":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/ContentKitDynamicBinding"}]}}},"required":["type","source"]},"ContentKitDynamicBinding":{"type":"object","description":"Binding between a property and a state value.","properties":{"$state":{"type":"string","description":"Key in the state"}},"required":["$state"]},"ContentKitCodeBlock":{"type":"object","description":"Code block with syntax highlighting","properties":{"type":{"type":"string","enum":["codeblock"]},"content":{"oneOf":[{"$ref":"#/components/schemas/ContentKitDynamicBinding"},{"type":"string","description":"Code content to display"}]},"syntax":{"description":"Syntax to use for highlighting (ex: javascript, python)","type":"string"},"lineNumbers":{"oneOf":[{"type":"boolean"},{"type":"number","description":"Line number to start at."}]},"buttons":{"type":"array","description":"Controls button shown as an overlay in a corner of the code block.","items":{"$ref":"#/components/schemas/ContentKitButton"}},"state":{"description":"State binding when editable. The value of the input will be stored as a property in the state named after this ID.","type":"string"},"onContentChange":{"$ref":"#/components/schemas/ContentKitAction"},"header":{"type":"array","description":"Header displayed before the code lines","items":{"$ref":"#/components/schemas/ContentKitDescendantElement"}},"footer":{"type":"array","description":"Footer displayed after the code lines","items":{"$ref":"#/components/schemas/ContentKitDescendantElement"}}},"required":["type","content"]},"ContentKitMarkdown":{"type":"object","description":"Block with rich text formatting of a markdown content.","properties":{"type":{"type":"string","enum":["markdown"]},"content":{"oneOf":[{"$ref":"#/components/schemas/ContentKitDynamicBinding"},{"type":"string","description":"Markdown content to display"}]}},"required":["type","content"]},"ContentKitCard":{"type":"object","properties":{"type":{"type":"string","enum":["card"]},"title":{"type":"string"},"hint":{"oneOf":[{"type":"string"},{"type":"array","items":{"$ref":"#/components/schemas/ContentKitInlineElement"}}]},"icon":{"oneOf":[{"$ref":"#/components/schemas/ContentKitIcon"},{"$ref":"#/components/schemas/ContentKitImage"}]},"onPress":{"$ref":"#/components/schemas/ContentKitAction"},"children":{"type":"array","items":{"$ref":"#/components/schemas/ContentKitDescendantElement"}},"buttons":{"type":"array","description":"Buttons displayed in the top right corner of the card.","items":{"$ref":"#/components/schemas/ContentKitButton"}}},"required":["type"]},"ContentKitInlineElement":{"description":"Any element that is inline.","oneOf":[{"$ref":"#/components/schemas/ContentKitText"},{"$ref":"#/components/schemas/ContentKitImage"},{"$ref":"#/components/schemas/ContentKitLink"}],"discriminator":{"propertyName":"type"}},"ContentKitText":{"type":"object","description":"Low level text element.","properties":{"type":{"type":"string","enum":["text"]},"style":{"type":"string","enum":["bold","italic","code","strikethrough"]},"children":{"oneOf":[{"type":"string"},{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/ContentKitText"},{"$ref":"#/components/schemas/ContentKitLink"}]}}]}},"required":["type","children"]},"ContentKitLink":{"type":"object","properties":{"type":{"type":"string","enum":["link"]},"target":{"type":"object","properties":{"url":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/ContentKitURL"}]}},"required":["url"]},"children":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"required":["type","target","children"]},"ContentKitURL":{"type":"object","description":"Specification for an URL in ContentKit.","properties":{"host":{"type":"string","description":"Hostname of the URL along with the port number if required."},"pathname":{"type":"string","description":"Path of the URL prefixed with a `/`."},"query":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/ContentKitDynamicBinding"}]}}},"required":["host","pathname"]},"ContentKitImage":{"type":"object","properties":{"type":{"type":"string","enum":["image"]},"source":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"aspectRatio":{"type":"number"}},"required":["type","source","aspectRatio"]},"ContentKitInput":{"type":"object","description":"Field for an input.","properties":{"type":{"type":"string","enum":["input"]},"label":{"type":"string","description":"Text label displayed next to the input."},"hint":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/ContentKitInlineElement"}]},"element":{"oneOf":[{"$ref":"#/components/schemas/ContentKitTextInput"},{"$ref":"#/components/schemas/ContentKitSelect"},{"$ref":"#/components/schemas/ContentKitSwitch"},{"$ref":"#/components/schemas/ContentKitRadio"},{"$ref":"#/components/schemas/ContentKitCheckbox"},{"$ref":"#/components/schemas/ContentKitButton"},{"$ref":"#/components/schemas/ContentKitCodeBlock"}]}},"required":["type","label","element"]},"ContentKitSelect":{"type":"object","description":"Creates a drop down menu with a list of options for a user to choose.","properties":{"type":{"type":"string","enum":["select"]},"disabled":{"type":"boolean"},"state":{"description":"State binding. The value of the input will be stored as a property in the state named after this ID.","type":"string"},"initialValue":{"description":"Value to initialize the select with.","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"onValueChange":{"$ref":"#/components/schemas/ContentKitAction"},"placeholder":{"description":"Text that appears in the form control when it has no value set","type":"string"},"multiple":{"description":"Should the select accept the selection of multiple options. If true, the state will be an array.","type":"boolean"},"acceptInput":{"description":"Should the filter input be allowed to be selected as an option.","type":"boolean"},"options":{"description":"Options to be displayed in the select.","oneOf":[{"$ref":"#/components/schemas/ContentKitBuiltInSource"},{"type":"array","description":"Static list of options","items":{"$ref":"#/components/schemas/ContentKitSelectOption"}},{"type":"object","properties":{"url":{"oneOf":[{"type":"string","description":"External source of options. The URL should respond with an array of options."},{"$ref":"#/components/schemas/ContentKitURL"}]}},"required":["url"]}]}},"required":["type","state","options"]},"ContentKitBuiltInSource":{"type":"object","description":"Built-in sources that can be used to provide a ContentKitSelect.","properties":{"source":{"type":"string","enum":["openapi"]}},"required":["source"]},"ContentKitSelectOption":{"type":"object","description":"An individual option in a select element","properties":{"id":{"type":"string"},"label":{"type":"string"},"icon":{"oneOf":[{"$ref":"#/components/schemas/ContentKitIcon"},{"$ref":"#/components/schemas/ContentKitImage"}]}},"required":["id","label"]},"ContentKitSwitch":{"type":"object","description":"Renders a boolean input.","properties":{"type":{"type":"string","enum":["switch"]},"disabled":{"type":"boolean"},"state":{"description":"State binding. The value of the input will be stored as a property in the state named after this ID.","type":"string"},"initialValue":{"description":"Value to initialize the switch with.","type":"boolean"},"onValueChange":{"$ref":"#/components/schemas/ContentKitAction"},"confirm":{"$ref":"#/components/schemas/ContentKitConfirm"}},"required":["type","state"]},"ContentKitRadio":{"type":"object","properties":{"type":{"type":"string","enum":["radio"]},"disabled":{"type":"boolean"},"state":{"description":"State binding. The value of the input will be stored as a property in the state named after this ID.","type":"string"},"value":{"description":"Value to store in th state when the checkbox is selected.","oneOf":[{"type":"string"},{"type":"number"}]},"confirm":{"$ref":"#/components/schemas/ContentKitConfirm"}},"required":["type","state","value"]},"ContentKitCheckbox":{"type":"object","properties":{"type":{"type":"string","enum":["checkbox"]},"state":{"description":"State binding. The value of the input will be stored as a property in the state named after this ID.","type":"string"},"value":{"description":"Value to store in a state array when the checkbox is selected.","oneOf":[{"type":"string"},{"type":"number"}]},"confirm":{"$ref":"#/components/schemas/ContentKitConfirm"}},"required":["type","state","value"]},"ContentKitHint":{"type":"object","description":"Element used to contextualize other elements or info.","properties":{"type":{"type":"string","enum":["hint"]},"children":{"type":"array","items":{"$ref":"#/components/schemas/ContentKitInlineElement"}}},"required":["type","children"]},"ContentKitStepperStep":{"type":"object","properties":{"type":{"type":"string","enum":["step"]},"id":{"description":"unique identifier for the step","type":"string"},"title":{"description":"title of the step","type":"string","maxLength":50},"next":{"description":"indicates if the user can progress to the next step based on some internal validation or condition","type":"boolean","default":false},"children":{"type":"array","items":{"$ref":"#/components/schemas/ContentKitDescendantElement"},"minItems":1}},"required":["type","id","children"]},"ContentKitBlockControl":{"type":"object","description":"Control menu item displayed for the block.","properties":{"icon":{"$ref":"#/components/schemas/ContentKitIcon"},"label":{"type":"string"},"onPress":{"$ref":"#/components/schemas/ContentKitAction"},"confirm":{"$ref":"#/components/schemas/ContentKitConfirm"}},"required":["label","onPress"]},"ContentKitModal":{"type":"object","description":"Overlay modal.","properties":{"type":{"type":"string","enum":["modal"]},"title":{"type":"string"},"subtitle":{"type":"array","items":{"$ref":"#/components/schemas/ContentKitInlineElement"}},"size":{"type":"string","enum":["medium","xlarge","fullscreen"]},"returnValue":{"description":"Data passed back to the parent view when the modal is closed. These data are accessible in the \"@ui.modal.close\"","type":"object"},"children":{"type":"array","items":{"$ref":"#/components/schemas/ContentKitDescendantElement"}},"submit":{"$ref":"#/components/schemas/ContentKitButton"}},"required":["type","children"]},"ContentKitConfiguration":{"type":"object","description":"Higher level element to define a configuration block. Does not add any UI elements or wrappers. Must be used as a top level element for any configuration component.","properties":{"type":{"type":"string","enum":["configuration"]},"children":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/ContentKitStepper"},"minItems":1,"maxItems":1},{"type":"array","items":{"$ref":"#/components/schemas/ContentKitDescendantElement"},"minItems":1}]}},"required":["type","children"]},"ContentKitStepper":{"type":"object","properties":{"type":{"type":"string","enum":["stepper"]},"activeStep":{"type":"string","description":"id of the currently active step"},"onStepChange":{"$ref":"#/components/schemas/ContentKitAction"},"onComplete":{"$ref":"#/components/schemas/ContentKitAction"},"children":{"type":"array","items":{"$ref":"#/components/schemas/ContentKitStepperStep"},"minItems":1}},"required":["type","activeStep","onStepChange","onComplete","children"]},"ContentKitRenderOutputComplete":{"type":"object","description":"Output of completed lifecycle of the component.","properties":{"type":{"type":"string","enum":["complete"]},"returnValue":{"type":"object"}},"required":["type"]}}},"paths":{"/integrations/{integrationName}/render":{"get":{"operationId":"renderIntegrationUIWithGet","summary":"Render an integration UI with GET method","tags":["integrations"],"parameters":[{"$ref":"#/components/parameters/integrationName"},{"name":"request","in":"query","required":true,"description":"LZ-string compressed JSON request","schema":{"type":"string"}}],"responses":{"200":{"description":"ContentKit element to render","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentKitRenderOutput"}}},"headers":{"Cache-Control":{"schema":{"type":"string"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://gitbook.com/docs/developers/gitbook-api/api-reference/integrations/render-an-integration-ui-with-get-method.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
