{"id":17556321,"url":"https://github.com/cameronking4/notion-openapi-chatgpt-action","last_synced_at":"2025-04-19T15:18:48.447Z","repository":{"id":258831736,"uuid":"875438375","full_name":"cameronking4/notion-openapi-chatgpt-action","owner":"cameronking4","description":"NotionGPT - Create a custom GPT action that calls the official \u0026 latest Notion API. Unlock the power of custom GPTs and access your Notion workspace in ChatGPT with natural language. Push and Pull Content from Your Notion with ChatGPT 🔥.","archived":false,"fork":false,"pushed_at":"2024-10-20T23:07:05.000Z","size":324,"stargazers_count":8,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T09:15:57.461Z","etag":null,"topics":["gpt","gpt-action","gpt-actions","gpteezy","notion","notion-api","openai","openapi","yaml"],"latest_commit_sha":null,"homepage":"https://notion-chatgpt.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cameronking4.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-20T01:21:37.000Z","updated_at":"2025-03-15T13:32:51.000Z","dependencies_parsed_at":"2024-10-28T01:31:17.477Z","dependency_job_id":null,"html_url":"https://github.com/cameronking4/notion-openapi-chatgpt-action","commit_stats":null,"previous_names":["cameronking4/notion-openapi-gpt-action"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cameronking4%2Fnotion-openapi-chatgpt-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cameronking4%2Fnotion-openapi-chatgpt-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cameronking4%2Fnotion-openapi-chatgpt-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cameronking4%2Fnotion-openapi-chatgpt-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cameronking4","download_url":"https://codeload.github.com/cameronking4/notion-openapi-chatgpt-action/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249724925,"owners_count":21316123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gpt","gpt-action","gpt-actions","gpteezy","notion","notion-api","openai","openapi","yaml"],"created_at":"2024-10-21T08:07:42.656Z","updated_at":"2025-04-19T15:18:48.425Z","avatar_url":"https://github.com/cameronking4.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NotionGPT: Push and Pull Content from Your Notion Workspace with ChatGPT 🔥\nEver wished you could create Notion pages from ChatGPT? Have you wondered if there's an easy way your ChatGPT could be in sync with knowledge files in your Notion Workspace? 👀 Well, look no more! \n\n## Demo\nhttps://github.com/user-attachments/assets/3713f886-cd77-49c5-b223-89a4942a4068\n\n## Quickstart\n### Setup for ChatGPT\n1. Create a custom GPT and click ***Create new action***\n2. Go to `https://notion-chatgpt.vercel.app` and click the copy button to get the `Import URL`.\n3. Click \"Authentication\" and select `API-Key` using the `Bearer` authentication method\n4. Head over to Notion Integrations and copy over your API-Key\n5. Ensure this key has access to the workspace pages \u0026 databases you'd like to reference / update\n\n## Raw Notion OpenAPI spec\nAlternatively, you could copy this raw YAML (~500 lines)\n```yaml\nopenapi: 3.1.0\ninfo:\n  title: Notion API\n  description: API for interacting with Notion resources such as pages and databases.\n  version: 1.0.0\nservers:\n  - url: https://api.notion.com/v1\n    description: Main API server\npaths:\n  /pages/{page_id}:\n    get:\n      operationId: getPage\n      summary: Retrieve a page by its ID.\n      parameters:\n        - name: page_id\n          in: path\n          required: true\n          description: The ID of the page to retrieve.\n          schema:\n            type: string\n            format: uuid\n        - name: Notion-Version\n          in: header\n          required: true\n          description: Notion API version\n          schema:\n            type: string\n            default: \"2022-06-28\"\n      responses:\n        \"200\":\n          description: A JSON object representing the page.\n          content:\n            application/json:\n              schema:\n                $ref: \"#/components/schemas/Page\"\n    patch:\n      operationId: updatePage\n      summary: Update a page by its ID.\n      parameters:\n        - name: page_id\n          in: path\n          required: true\n          description: The ID of the page to update.\n          schema:\n            type: string\n            format: uuid\n        - name: Notion-Version\n          in: header\n          required: true\n          description: Notion API version\n          schema:\n            type: string\n            default: \"2022-06-28\"\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \"#/components/schemas/PageUpdate\"\n      responses:\n        \"200\":\n          description: The updated page.\n          content:\n            application/json:\n              schema:\n                $ref: \"#/components/schemas/Page\"\n  /pages:\n    post:\n      operationId: createPage\n      summary: Create a new page.\n      description: Creates a new page that is a child of an existing page or database.\n      parameters:\n        - name: Notion-Version\n          in: header\n          required: true\n          description: Notion API version\n          schema:\n            type: string\n            default: \"2022-06-28\"\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \"#/components/schemas/PageCreate\"\n      responses:\n        \"200\":\n          description: A JSON object representing the newly created page.\n          content:\n            application/json:\n              schema:\n                $ref: \"#/components/schemas/Page\"\n  /databases/{database_id}:\n    get:\n      operationId: getDatabase\n      summary: Retrieve a database by its ID.\n      parameters:\n        - name: database_id\n          in: path\n          required: true\n          description: The ID of the database to retrieve.\n          schema:\n            type: string\n            format: uuid\n        - name: Notion-Version\n          in: header\n          required: true\n          description: Notion API version\n          schema:\n            type: string\n            default: \"2022-06-28\"\n      responses:\n        \"200\":\n          description: A JSON object representing the database.\n          content:\n            application/json:\n              schema:\n                $ref: \"#/components/schemas/Database\"\n  /databases/{database_id}/query:\n    post:\n      operationId: queryDatabase\n      summary: Query a database.\n      parameters:\n        - name: database_id\n          in: path\n          required: true\n          description: The ID of the database to query.\n          schema:\n            type: string\n            format: uuid\n        - name: Notion-Version\n          in: header\n          required: true\n          description: Notion API version\n          schema:\n            type: string\n            default: \"2022-06-28\"\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \"#/components/schemas/DatabaseQuery\"\n      responses:\n        \"200\":\n          description: The query results.\n          content:\n            application/json:\n              schema:\n                $ref: \"#/components/schemas/DatabaseRecord\"\n  /search:\n    post:\n      operationId: search\n      summary: Search all pages and databases.\n      parameters:\n        - name: Notion-Version\n          in: header\n          required: true\n          description: Notion API version\n          schema:\n            type: string\n            default: \"2022-06-28\"\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \"#/components/schemas/SearchRequest\"\n      responses:\n        \"200\":\n          description: The search results.\n          content:\n            application/json:\n              schema:\n                $ref: \"#/components/schemas/SearchResponse\"\n  /users:\n    get:\n      operationId: listUsers\n      summary: List all users in the workspace.\n      parameters:\n        - name: Notion-Version\n          in: header\n          required: true\n          description: Notion API version\n          schema:\n            type: string\n            default: \"2022-06-28\"\n      responses:\n        \"200\":\n          description: A list of users.\n          content:\n            application/json:\n              schema:\n                type: array\n                items:\n                  $ref: \"#/components/schemas/User\"\n  /blocks/{block_id}/children:\n    get:\n      operationId: getPageOrBlockChildrenContent\n      summary: Retrieve the children of a block. Pages are also considered blocks.\n      parameters:\n        - name: block_id\n          in: path\n          required: true\n          description: The ID of the block or page to retrieve children from.\n          schema:\n            type: string\n            format: uuid\n        - name: Notion-Version\n          in: header\n          required: true\n          description: Notion API version\n          schema:\n            type: string\n            default: \"2022-06-28\"\n        - name: start_cursor\n          in: query\n          required: false\n          description: The cursor to start from for pagination.\n          schema:\n            type: string\n        - name: page_size\n          in: query\n          required: false\n          description: The number of results to return per page.\n          schema:\n            type: integer\n            minimum: 1\n            maximum: 100\n            default: 100\n      responses:\n        \"200\":\n          description: A paginated list of child block objects.\n          content:\n            application/json:\n              schema:\n                $ref: \"#/components/schemas/BlockChildren\"\n    patch:\n      operationId: appendBlockChildren\n      summary: Append new content to a block.\n      parameters:\n        - name: block_id\n          in: path\n          required: true\n          description: The ID of the block to append content to.\n          schema:\n            type: string\n            format: uuid\n        - name: Notion-Version\n          in: header\n          required: true\n          description: Notion API version\n          schema:\n            type: string\n            default: \"2022-06-28\"\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              type: object\n              properties:\n                children:\n                  type: array\n                  items:\n                    $ref: \"#/components/schemas/Block\"\n                after:\n                  type: string\n                  description: The ID of the existing block that the new block should be appended after.\n      responses:\n        \"200\":\n          description: A paginated list of newly created first level children block objects.\n          content:\n            application/json:\n              schema:\n                $ref: \"#/components/schemas/BlockChildren\"\ncomponents:\n  headers:\n    NotionVersion:\n      required: true\n      schema:\n        type: string\n        default: \"2022-06-28\"\n      description: Notion API version\n  schemas:\n    Page:\n      type: object\n      required:\n        - object\n        - id\n        - properties\n      properties:\n        object:\n          type: string\n          enum: [page]\n        id:\n          type: string\n          format: uuid\n        properties:\n          type: object\n          additionalProperties: true\n    PageUpdate:\n      type: object\n      properties:\n        properties:\n          type: object\n          additionalProperties: true\n    PageCreate:\n      type: object\n      required:\n        - parent\n        - properties\n      properties:\n        parent:\n          type: object\n          required:\n            - database_id\n          properties:\n            database_id:\n              type: string\n              format: uuid\n        properties:\n          type: object\n          properties:\n            title:\n              type: array\n              items:\n                type: object\n                properties:\n                  text:\n                    type: object\n                    properties:\n                      content:\n                        type: string\n          additionalProperties: true\n        children:\n          type: array\n          items:\n            type: object\n            additionalProperties: true\n        icon:\n          type: object\n          properties:\n            emoji:\n              type: string\n        cover:\n          type: object\n          properties:\n            external:\n              type: object\n              properties:\n                url:\n                  type: string\n                  format: uri\n    Database:\n      type: object\n      required:\n        - object\n        - id\n      properties:\n        object:\n          type: string\n          enum: [database]\n        id:\n          type: string\n          format: uuid\n        properties:\n          type: object\n          additionalProperties: true\n    User:\n      type: object\n      required:\n        - object\n        - id\n      properties:\n        object:\n          type: string\n          enum: [user]\n        id:\n          type: string\n          format: uuid\n        name:\n          type: string\n        avatar_url:\n          type: string\n          format: uri\n    BlockChildren:\n      type: array\n      items:\n        $ref: \"#/components/schemas/Block\"\n    Block:\n      type: object\n      required:\n        - object\n        - id\n      properties:\n        object:\n          type: string\n          enum: [block]\n        id:\n          type: string\n          format: uuid\n        type:\n          type: string\n        block_data:\n          type: object\n          additionalProperties: true\n    Comment:\n      type: object\n      required:\n        - object\n        - id\n      properties:\n        object:\n          type: string\n          enum: [comment]\n        id:\n          type: string\n          format: uuid\n        parent:\n          type: object\n          additionalProperties: true\n        content:\n          type: string\n    PagePropertyItem:\n      type: object\n      required:\n        - object\n        - id\n      properties:\n        object:\n          type: string\n          enum: [property_item]\n        id:\n          type: string\n          format: uuid\n        property_data:\n          type: object\n          additionalProperties: true\n    DatabaseQuery:\n      type: object\n      properties:\n        filter:\n          type: object\n          additionalProperties: true\n        sorts:\n          type: array\n          items:\n            type: object\n            additionalProperties: true\n    DatabaseRecord:\n      type: object\n      required:\n        - object\n        - id\n      properties:\n        object:\n          type: string\n          enum: [database_record]\n        id:\n          type: string\n          format: uuid\n        record_data:\n          type: object\n          additionalProperties: true\n    SearchRequest:\n      type: object\n      properties:\n        query:\n          type: string\n        sort:\n          type: object\n          additionalProperties: true\n    SearchResponse:\n      type: array\n      items:\n        $ref: \"#/components/schemas/SearchResult\"\n    SearchResult:\n      type: object\n      required:\n        - object\n        - id\n      properties:\n        object:\n          type: string\n          enum: [search_result]\n        id:\n          type: string\n          format: uuid\n        result_data:\n          type: object\n          additionalProperties: true\n  securitySchemes:\n    BearerAuth:\n      type: http\n      scheme: bearer\n      bearerFormat: JWT\nsecurity:\n  - BearerAuth: []\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcameronking4%2Fnotion-openapi-chatgpt-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcameronking4%2Fnotion-openapi-chatgpt-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcameronking4%2Fnotion-openapi-chatgpt-action/lists"}