{"id":13528305,"url":"https://github.com/intercom/intercom-node","last_synced_at":"2026-01-16T07:16:08.699Z","repository":{"id":20817003,"uuid":"24102687","full_name":"intercom/intercom-node","owner":"intercom","description":"Node.js bindings for the Intercom API ","archived":false,"fork":false,"pushed_at":"2026-01-13T18:18:28.000Z","size":4455,"stargazers_count":384,"open_issues_count":5,"forks_count":123,"subscribers_count":177,"default_branch":"master","last_synced_at":"2026-01-13T19:21:19.354Z","etag":null,"topics":["api","intercom","sdk"],"latest_commit_sha":null,"homepage":"https://developers.intercom.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/intercom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-09-16T14:21:30.000Z","updated_at":"2026-01-13T18:08:23.000Z","dependencies_parsed_at":"2023-12-12T15:26:17.248Z","dependency_job_id":"b5e6c02c-1a50-47ca-8d66-7edd3af42fd4","html_url":"https://github.com/intercom/intercom-node","commit_stats":{"total_commits":305,"total_committers":69,"mean_commits":4.420289855072464,"dds":0.6983606557377049,"last_synced_commit":"f51f0c8162b0cd1bac59fbdd08e38e8d27675e2c"},"previous_names":[],"tags_count":72,"template":false,"template_full_name":null,"purl":"pkg:github/intercom/intercom-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intercom%2Fintercom-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intercom%2Fintercom-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intercom%2Fintercom-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intercom%2Fintercom-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intercom","download_url":"https://codeload.github.com/intercom/intercom-node/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intercom%2Fintercom-node/sbom","scorecard":{"id":491267,"data":{"date":"2025-08-11","repo":{"name":"github.com/intercom/intercom-node","commit":"38db2d607454e4ee67179f457ec8416b49777877"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.3,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":4,"reason":"4 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/intercom/intercom-node/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/intercom/intercom-node/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/intercom/intercom-node/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/intercom/intercom-node/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/intercom/intercom-node/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/intercom/intercom-node/ci.yml/master?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Info: 'branch protection settings apply to administrators' is required to merge on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T19:13:27.780Z","repository_id":20817003,"created_at":"2025-08-19T19:13:27.780Z","updated_at":"2025-08-19T19:13:27.780Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["api","intercom","sdk"],"created_at":"2024-08-01T06:02:24.783Z","updated_at":"2026-01-16T07:16:08.691Z","avatar_url":"https://github.com/intercom.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Intercom TypeScript Library\n\n[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github\u0026utm_medium=github\u0026utm_campaign=readme\u0026utm_source=https%3A%2F%2Fgithub.com%2Fintercom%2Fintercom-node)\n[![npm shield](https://img.shields.io/npm/v/intercom-client)](https://www.npmjs.com/package/intercom-client)\n\nThe Intercom TypeScript library provides convenient access to the Intercom APIs from TypeScript.\n\n## Project Updates\n\nThe TypeScript SDK has been updated to support latest API version (2.11).\n\n## Installation\n\n```sh\nnpm i -s intercom-client\n```\n\n## Reference\n\nA full reference for this library is available [here](https://github.com/intercom/intercom-node/blob/HEAD/./reference.md).\n\n## Usage\n\nInstantiate and use the client with the following:\n\n```typescript\nimport { IntercomClient } from \"intercom-client\";\n\nconst client = new IntercomClient({ token: \"YOUR_TOKEN\" });\nawait client.aiContent.createContentImportSource({\n    url: \"https://www.example.com\"\n});\n```\n\n## Request And Response Types\n\nThe SDK exports all request and response types as TypeScript interfaces. Simply import them with the\nfollowing namespace:\n\n```typescript\nimport { Intercom } from \"intercom-client\";\n\nconst request: Intercom.ConfigureAwayAdminRequest = {\n    ...\n};\n```\n\n## Exception Handling\n\nWhen the API returns a non-success status code (4xx or 5xx response), a subclass of the following error\nwill be thrown.\n\n```typescript\nimport { IntercomError } from \"intercom-client\";\n\ntry {\n    await client.aiContent.createContentImportSource(...);\n} catch (err) {\n    if (err instanceof IntercomError) {\n        console.log(err.statusCode);\n        console.log(err.message);\n        console.log(err.body);\n        console.log(err.rawResponse);\n    }\n}\n```\n\n## Pagination\n\nList endpoints are paginated. The SDK provides an iterator so that you can simply loop over the items:\n\n```typescript\nimport { IntercomClient } from \"intercom-client\";\n\nconst client = new IntercomClient({ token: \"YOUR_TOKEN\" });\nconst pageableResponse = await client.articles.list();\nfor await (const item of pageableResponse) {\n    console.log(item);\n}\n\n// Or you can manually iterate page-by-page\nlet page = await client.articles.list();\nwhile (page.hasNextPage()) {\n    page = page.getNextPage();\n}\n\n// You can also access the underlying response\nconst response = page.response;\n```\n\n## Advanced\n\n### Additional Headers\n\nIf you would like to send additional headers as part of the request, use the `headers` request option.\n\n```typescript\nconst response = await client.aiContent.createContentImportSource(..., {\n    headers: {\n        'X-Custom-Header': 'custom value'\n    }\n});\n```\n\n### Additional Query String Parameters\n\nIf you would like to send additional query string parameters as part of the request, use the `queryParams` request option.\n\n```typescript\nconst response = await client.aiContent.createContentImportSource(..., {\n    queryParams: {\n        'customQueryParamKey': 'custom query param value'\n    }\n});\n```\n\n### Retries\n\nThe SDK is instrumented with automatic retries with exponential backoff. A request will be retried as long\nas the request is deemed retryable and the number of retry attempts has not grown larger than the configured\nretry limit (default: 2).\n\nA request is deemed retryable when any of the following HTTP status codes is returned:\n\n- [408](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408) (Timeout)\n- [429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) (Too Many Requests)\n- [5XX](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) (Internal Server Errors)\n\nUse the `maxRetries` request option to configure this behavior.\n\n```typescript\nconst response = await client.aiContent.createContentImportSource(..., {\n    maxRetries: 0 // override maxRetries at the request level\n});\n```\n\n### Timeouts\n\nThe SDK defaults to a 60 second timeout. Use the `timeoutInSeconds` option to configure this behavior.\n\n```typescript\nconst response = await client.aiContent.createContentImportSource(..., {\n    timeoutInSeconds: 30 // override timeout to 30s\n});\n```\n\n### Aborting Requests\n\nThe SDK allows users to abort requests at any point by passing in an abort signal.\n\n```typescript\nconst controller = new AbortController();\nconst response = await client.aiContent.createContentImportSource(..., {\n    abortSignal: controller.signal\n});\ncontroller.abort(); // aborts the request\n```\n\n### Access Raw Response Data\n\nThe SDK provides access to raw response data, including headers, through the `.withRawResponse()` method.\nThe `.withRawResponse()` method returns a promise that results to an object with a `data` and a `rawResponse` property.\n\n```typescript\nconst { data, rawResponse } = await client.aiContent.createContentImportSource(...).withRawResponse();\n\nconsole.log(data);\nconsole.log(rawResponse.headers['X-My-Header']);\n```\n\n### Logging\n\nThe SDK supports logging. You can configure the logger by passing in a `logging` object to the client options.\n\n```typescript\nimport { IntercomClient, logging } from \"intercom-client\";\n\nconst client = new IntercomClient({\n    ...\n    logging: {\n        level: logging.LogLevel.Debug, // defaults to logging.LogLevel.Info\n        logger: new logging.ConsoleLogger(), // defaults to ConsoleLogger\n        silent: false, // defaults to true, set to false to enable logging\n    }\n});\n```\nThe `logging` object can have the following properties:\n- `level`: The log level to use. Defaults to `logging.LogLevel.Info`.\n- `logger`: The logger to use. Defaults to a `logging.ConsoleLogger`.\n- `silent`: Whether to silence the logger. Defaults to `true`.\n\nThe `level` property can be one of the following values:\n- `logging.LogLevel.Debug`\n- `logging.LogLevel.Info`\n- `logging.LogLevel.Warn`\n- `logging.LogLevel.Error`\n\nTo provide a custom logger, you can pass in an object that implements the `logging.ILogger` interface.\n\n\u003cdetails\u003e\n\u003csummary\u003eCustom logger examples\u003c/summary\u003e\n\nHere's an example using the popular `winston` logging library.\n```ts\nimport winston from 'winston';\n\nconst winstonLogger = winston.createLogger({...});\n\nconst logger: logging.ILogger = {\n    debug: (msg, ...args) =\u003e winstonLogger.debug(msg, ...args),\n    info: (msg, ...args) =\u003e winstonLogger.info(msg, ...args),\n    warn: (msg, ...args) =\u003e winstonLogger.warn(msg, ...args),\n    error: (msg, ...args) =\u003e winstonLogger.error(msg, ...args),\n};\n```\n\nHere's an example using the popular `pino` logging library.\n\n```ts\nimport pino from 'pino';\n\nconst pinoLogger = pino({...});\n\nconst logger: logging.ILogger = {\n  debug: (msg, ...args) =\u003e pinoLogger.debug(args, msg),\n  info: (msg, ...args) =\u003e pinoLogger.info(args, msg),\n  warn: (msg, ...args) =\u003e pinoLogger.warn(args, msg),\n  error: (msg, ...args) =\u003e pinoLogger.error(args, msg),\n};\n```\n\u003c/details\u003e\n\n\n### Runtime Compatibility\n\n\nThe SDK works in the following runtimes:\n\n\n\n- Node.js 18+\n- Vercel\n- Cloudflare Workers\n- Deno v1.25+\n- Bun 1.0+\n- React Native\n\n### Customizing Fetch Client\n\nThe SDK provides a way for you to customize the underlying HTTP client / Fetch function. If you're running in an\nunsupported environment, this provides a way for you to break glass and ensure the SDK works.\n\n```typescript\nimport { IntercomClient } from \"intercom-client\";\n\nconst client = new IntercomClient({\n    ...\n    fetcher: // provide your implementation here\n});\n```\n\n## Contributing\n\nWhile we value open-source contributions to this SDK, this library is generated programmatically.\nAdditions made directly to this library would have to be moved over to our generation code,\notherwise they would be overwritten upon the next generated release. Feel free to open a PR as\na proof of concept, but know that we will not be able to merge it as-is. We suggest opening\nan issue first to discuss with us!\n\nOn the other hand, contributions to the README are always very welcome!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintercom%2Fintercom-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintercom%2Fintercom-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintercom%2Fintercom-node/lists"}