Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Credal-ai/credal-typescript-sdk

Open more actions menu

Repository files navigation

Credal Typescript Library

fern shield npm shield

The Credal TypeScript library provides convenient access to the Credal API from TypeScript/JavaScript.

Documentation

Docs for the API endpoints available through the SDK can be found here.

Reference

A full reference of the SDK is available here.

Installation

npm install @credal/sdk

Usage

import { CredalClient } from "@credal/sdk";

const credal = new CredalClient({
  apiKey: process.env.CREDAL_API_KEY,
});

await credal.copilots.sendMessage({
    message: "Is Credal SOC 2 compliant?",
    userEmail: "ravin@credal.ai"
});

Docs for the API endpoints available through the SDK can be found here.

Self Hosted

If you're on a self-hosted Credal instance, then you can customize the base url of the SDK.

const credal = new CredalClient({
    apiKey: process.env.CREDAL_API_KEY,
    environment: "https://<custom-domain>/api",
  });

Request and Response Types

The SDK exports all request and response types as TypeScript interfaces. Simply import them under the Credal namespace:

import { Credal } from "@credal/sdk"; 

const metadata: Credal.DocumentMetadataPatch = {
  resourceIdentifier: "..."
};

Exception Handling

When the API returns a non-success status code (4xx or 5xx response), a subclass of CredalError will be thrown:

import { CredalError } from "@credal/sdk";

try {
  await credal.copilots.sendMessage(...);
} catch (err) {
  if (err instanceof CredalError) {
    console.log(err.statusCode); 
    console.log(err.message);
    console.log(err.body); 
  }
}

Retries

The SDK is instrumented with automatic retries with exponential backoff. A request will be retried as long as the request is deemed retriable and the number of retry attempts has not grown larger than the configured retry limit (default: 2).

A request is deemed retriable when any of the following HTTP status codes is returned:

  • 408 (Timeout)
  • 429 (Too Many Requests)
  • 5XX (Internal Server Errors)

Use the maxRetries request option to configure this behavior.

const response = await credal.copilots.sendMessage(..., {
  maxRetries: 0 // override maxRetries at the request level
});

Timeouts

The SDK defaults to a 60 second timout. Use the timeoutInSeconds option to configure this behavior.

const response = await credal.copilots.sendMessage(..., {
  timeoutInSeconds: 30 // override timeout to 30s
});

Aborting Requests

The SDK allows users to abort requests at any point by passing in an abort signal.

const controller = new AbortController();
const response = await credal.copilots.sendMessage(..., {
  abortSignal: controller.signal,
});
controller.abort(); // aborts the request

Runtime compatiblity

The SDK defaults to node-fetch but will use the global fetch client if present. The SDK works in the following runtimes:

The following runtimes are supported:

  • Node.js 18+
  • Vercel
  • Cloudflare Workers
  • Deno v1.25+
  • Bun 1.0+
  • React Native

Customizing Fetch client

The SDK provides a way for you to customize the underlying HTTP client / Fetch function. If you're running in an unsupported environment, this provides a way for you to break the glass and ensure the SDK works.

import { CredalClient } from "@credal/sdk";

const credal = new CredalClient({
  apiKey: "...",
  fetcher: // provide your implementation here
});

About

A TypeScript/JavaScript library for accessing the Credal API.

Topics

Resources

Stars

Watchers

Forks

Contributors 7

Morty Proxy This is a proxified and sanitized view of the page, visit original site.