Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application.
Bring your own key. This API needs your own Appwrite key - get one from the provider, add it once below, and the proxy injects it on every call. Your OmniStream plan covers the unified SDK, key storage, and proxy - the provider's own rate limits still apply to your key.
This is a community listing. If you own this API, you can request ownership.
npm install omnistream-sdkimport { OmniClient } from "omnistream-sdk";
const omni = new OmniClient({ token: process.env.OMNI_KEY! });
// One key reaches every API on the marketplace.
const data = await omni.call("appwrite/accountGet");One install, one key - the same client calls every API on the marketplace.
Get Account
Create Account
Delete Account
Update Account Email
Create Account JWT
Get Account Logs
Update Account Name
Update Account Password
Get Account Preferences
/**
* Appwrite - generated by OmniStream from Appwrite's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/appwrite";
export class AppwriteError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `Appwrite error ${status}`);
this.name = "AppwriteError";
this.status = status;
this.code = code;
}
}
export interface AppwriteOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class Appwrite {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: AppwriteOptions = {}) {
if (!token) throw new Error("Appwrite: token is required");
}
rateLimit: { remainingMinute?: number; remainingDay?: number } | null = null;
private async _request(method: string, path: string, { params, body }: { params?: Record<string, unknown>; body?: unknown } = {}): Promise<any> {
const f = this.opts.fetch ?? globalThis.fetch;
const url = new URL((this.opts.baseUrl ?? DEFAULT_BASE).replace(/\/+$/, "") + path);
if (params) for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const headers: Record<string, string> = { "x-omni-key": this.token };
if (body !== undefined) headers["content-type"] = "application/json";
const res = await f(url, { method, headers, body: body !== undefined ? JSON.stringify(body) : undefined });
this.rateLimit = {
remainingMinute: Number(res.headers.get("x-ratelimit-remaining-minute")) || undefined,
remainingDay: Number(res.headers.get("x-ratelimit-remaining-day")) || undefined,
};
const data = await res.json().catch(() => ({}));
if (!res.ok) throw new AppwriteError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** Get Account */
accountGet(): Promise<any> {
return this._request("GET", "/account", {});
}
/** Create Account */
accountCreate(body: unknown): Promise<any> {
return this._request("POST", "/account", { body });
}
/** Delete Account */
accountDelete(): Promise<any> {
return this._request("DELETE", "/account", {});
}
/** Update Account Email */
accountUpdateEmail(body: unknown): Promise<any> {
return this._request("PATCH", "/account/email", { body });
}
/** Create Account JWT */
accountCreateJWT(): Promise<any> {
return this._request("POST", "/account/jwt", { });
}
/** Get Account Logs */
accountGetLogs(): Promise<any> {
return this._request("GET", "/account/logs", {});
}
/** Update Account Name */
accountUpdateName(body: unknown): Promise<any> {
return this._request("PATCH", "/account/name", { body });
}
/** Update Account Password */
accountUpdatePassword(body: unknown): Promise<any> {
return this._request("PATCH", "/account/password", { body });
}
/** Get Account Preferences */
accountGetPrefs(): Promise<any> {
return this._request("GET", "/account/prefs", {});
}
/** Update Account Preferences */
accountUpdatePrefs(body: unknown): Promise<any> {
return this._request("PATCH", "/account/prefs", { body });
}
/** Create Password Recovery */
accountCreateRecovery(body: unknown): Promise<any> {
return this._request("POST", "/account/recovery", { body });
}
/** Complete Password Recovery */
accountUpdateRecovery(body: unknown): Promise<any> {
return this._request("PUT", "/account/recovery", { body });
}
/** Get Account Sessions */
accountGetSessions(): Promise<any> {
return this._request("GET", "/account/sessions", {});
}
/** Create Account Session */
accountCreateSession(body: unknown): Promise<any> {
return this._request("POST", "/account/sessions", { body });
}
/** Delete All Account Sessions */
accountDeleteSessions(): Promise<any> {
return this._request("DELETE", "/account/sessions", {});
}
/** Create Anonymous Session */
accountCreateAnonymousSession(): Promise<any> {
return this._request("POST", "/account/sessions/anonymous", { });
}
/** Create Account Session with OAuth2 */
accountCreateOAuth2Session(params: { "provider": string; "success"?: string; "failure"?: string; "scopes"?: unknown[] }): Promise<any> {
return this._request("GET", "/account/sessions/oauth2/{provider}", { params });
}
/** Get Session By ID */
accountGetSession(params: { "sessionId": string }): Promise<any> {
return this._request("GET", "/account/sessions/{sessionId}", { params });
}
/** Delete Account Session */
accountDeleteSession(params: { "sessionId": string }): Promise<any> {
return this._request("DELETE", "/account/sessions/{sessionId}", { params });
}
/** Create Email Verification */
accountCreateVerification(body: unknown): Promise<any> {
return this._request("POST", "/account/verification", { body });
}
/** Complete Email Verification */
accountUpdateVerification(body: unknown): Promise<any> {
return this._request("PUT", "/account/verification", { body });
}
/** Get Browser Icon */
avatarsGetBrowser(params: { "code": string; "width"?: number; "height"?: number; "quality"?: number }): Promise<any> {
return this._request("GET", "/avatars/browsers/{code}", { params });
}
/** Get Credit Card Icon */
avatarsGetCreditCard(params: { "code": string; "width"?: number; "height"?: number; "quality"?: number }): Promise<any> {
return this._request("GET", "/avatars/credit-cards/{code}", { params });
}
/** Get Favicon */
avatarsGetFavicon(params: { "url": string }): Promise<any> {
return this._request("GET", "/avatars/favicon", { params });
}
/** Get Country Flag */
avatarsGetFlag(params: { "code": string; "width"?: number; "height"?: number; "quality"?: number }): Promise<any> {
return this._request("GET", "/avatars/flags/{code}", { params });
}
/** Get Image from URL */
avatarsGetImage(params: { "url": string; "width"?: number; "height"?: number }): Promise<any> {
return this._request("GET", "/avatars/image", { params });
}
/** Get User Initials */
avatarsGetInitials(params: { "name"?: string; "width"?: number; "height"?: number; "color"?: string; "background"?: string }): Promise<any> {
return this._request("GET", "/avatars/initials", { params });
}
/** Get QR Code */
avatarsGetQR(params: { "text": string; "size"?: number; "margin"?: number; "download"?: boolean }): Promise<any> {
return this._request("GET", "/avatars/qr", { params });
}
/** List Documents */
databaseListDocuments(params: { "collectionId": string; "filters"?: unknown[]; "limit"?: number; "offset"?: number; "orderField"?: string; "orderType"?: string; "orderCast"?: string; "search"?: string }): Promise<any> {
return this._request("GET", "/database/collections/{collectionId}/documents", { params });
}
/** Create Document */
databaseCreateDocument(body: unknown, params: { "collectionId": string }): Promise<any> {
return this._request("POST", "/database/collections/{collectionId}/documents", { body, params });
}
/** Get Document */
databaseGetDocument(params: { "collectionId": string; "documentId": string }): Promise<any> {
return this._request("GET", "/database/collections/{collectionId}/documents/{documentId}", { params });
}
/** Update Document */
databaseUpdateDocument(body: unknown, params: { "collectionId": string; "documentId": string }): Promise<any> {
return this._request("PATCH", "/database/collections/{collectionId}/documents/{documentId}", { body, params });
}
/** Delete Document */
databaseDeleteDocument(params: { "collectionId": string; "documentId": string }): Promise<any> {
return this._request("DELETE", "/database/collections/{collectionId}/documents/{documentId}", { params });
}
/** List Executions */
functionsListExecutions(params: { "functionId": string; "search"?: string; "limit"?: number; "offset"?: number; "orderType"?: string }): Promise<any> {
return this._request("GET", "/functions/{functionId}/executions", { params });
}
/** Create Execution */
functionsCreateExecution(body: unknown, params: { "functionId": string }): Promise<any> {
return this._request("POST", "/functions/{functionId}/executions", { body, params });
}
/** Get Execution */
functionsGetExecution(params: { "functionId": string; "executionId": string }): Promise<any> {
return this._request("GET", "/functions/{functionId}/executions/{executionId}", { params });
}
/** Get User Locale */
localeGet(): Promise<any> {
return this._request("GET", "/locale", {});
}
/** List Continents */
localeGetContinents(): Promise<any> {
return this._request("GET", "/locale/continents", {});
}
/** List Countries */
localeGetCountries(): Promise<any> {
return this._request("GET", "/locale/countries", {});
}
/** List EU Countries */
localeGetCountriesEU(): Promise<any> {
return this._request("GET", "/locale/countries/eu", {});
}
/** List Countries Phone Codes */
localeGetCountriesPhones(): Promise<any> {
return this._request("GET", "/locale/countries/phones", {});
}
/** List Currencies */
localeGetCurrencies(): Promise<any> {
return this._request("GET", "/locale/currencies", {});
}
/** List Languages */
localeGetLanguages(): Promise<any> {
return this._request("GET", "/locale/languages", {});
}
/** List Files */
storageListFiles(params: { "search"?: string; "limit"?: number; "offset"?: number; "orderType"?: string }): Promise<any> {
return this._request("GET", "/storage/files", { params });
}
/** Create File */
storageCreateFile(): Promise<any> {
return this._request("POST", "/storage/files", { });
}
/** Get File */
storageGetFile(params: { "fileId": string }): Promise<any> {
return this._request("GET", "/storage/files/{fileId}", { params });
}
/** Update File */
storageUpdateFile(body: unknown, params: { "fileId": string }): Promise<any> {
return this._request("PUT", "/storage/files/{fileId}", { body, params });
}
/** Delete File */
storageDeleteFile(params: { "fileId": string }): Promise<any> {
return this._request("DELETE", "/storage/files/{fileId}", { params });
}
/** Get File for Download */
storageGetFileDownload(params: { "fileId": string }): Promise<any> {
return this._request("GET", "/storage/files/{fileId}/download", { params });
}
/** Get File Preview */
storageGetFilePreview(params: { "fileId": string; "width"?: number; "height"?: number; "gravity"?: string; "quality"?: number; "borderWidth"?: number; "borderColor"?: string; "borderRadius"?: number; "opacity"?: number; "rotation"?: number; "background"?: string; "output"?: string }): Promise<any> {
return this._request("GET", "/storage/files/{fileId}/preview", { params });
}
/** Get File for View */
storageGetFileView(params: { "fileId": string }): Promise<any> {
return this._request("GET", "/storage/files/{fileId}/view", { params });
}
/** List Teams */
teamsList(params: { "search"?: string; "limit"?: number; "offset"?: number; "orderType"?: string }): Promise<any> {
return this._request("GET", "/teams", { params });
}
/** Create Team */
teamsCreate(body: unknown): Promise<any> {
return this._request("POST", "/teams", { body });
}
/** Get Team */
teamsGet(params: { "teamId": string }): Promise<any> {
return this._request("GET", "/teams/{teamId}", { params });
}
/** Update Team */
teamsUpdate(body: unknown, params: { "teamId": string }): Promise<any> {
return this._request("PUT", "/teams/{teamId}", { body, params });
}
/** Delete Team */
teamsDelete(params: { "teamId": string }): Promise<any> {
return this._request("DELETE", "/teams/{teamId}", { params });
}
/** Get Team Memberships */
teamsGetMemberships(params: { "teamId": string; "search"?: string; "limit"?: number; "offset"?: number; "orderType"?: string }): Promise<any> {
return this._request("GET", "/teams/{teamId}/memberships", { params });
}
/** Create Team Membership */
teamsCreateMembership(body: unknown, params: { "teamId": string }): Promise<any> {
return this._request("POST", "/teams/{teamId}/memberships", { body, params });
}
/** Update Membership Roles */
teamsUpdateMembershipRoles(body: unknown, params: { "teamId": string; "membershipId": string }): Promise<any> {
return this._request("PATCH", "/teams/{teamId}/memberships/{membershipId}", { body, params });
}
/** Delete Team Membership */
teamsDeleteMembership(params: { "teamId": string; "membershipId": string }): Promise<any> {
return this._request("DELETE", "/teams/{teamId}/memberships/{membershipId}", { params });
}
/** Update Team Membership Status */
teamsUpdateMembershipStatus(body: unknown, params: { "teamId": string; "membershipId": string }): Promise<any> {
return this._request("PATCH", "/teams/{teamId}/memberships/{membershipId}/status", { body, params });
}
}
export default Appwrite;
No reviews yet. Be the first to rate this API.
Yes. Appwrite uses apiKey authentication, so you bring your own key from the provider. You store it once on OmniStream and the proxy injects it into every call, so your code only ever sends your Omni key.
Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. It exposes 61 endpoints over GET, POST, DELETE, PATCH, PUT, including GET /account, POST /account, DELETE /account.
Install the OmniStream SDK for your language and call Appwrite through it. The client is generated from this API's OpenAPI spec, so parameters and responses are fully typed, and the same client also calls every other API in the marketplace.
You can start on the free plan. OmniStream charges for the unified SDK, key storage and proxy rather than for Appwrite itself, and Appwrite's own rate limits still apply to your provider key.
QuickChart: An API to generate charts and QR codes using QuickChart services.
Update Account Preferences
Create Password Recovery
Complete Password Recovery
Get Account Sessions
Create Account Session
Delete All Account Sessions
Create Anonymous Session
Create Account Session with OAuth2
Get Session By ID
Delete Account Session
Create Email Verification
Complete Email Verification
Get Browser Icon
Get Credit Card Icon
Get Favicon
Get Country Flag
Get Image from URL
Get User Initials
Get QR Code
List Documents
Create Document
Get Document
Update Document
Delete Document
List Executions
Create Execution
Get Execution
Get User Locale
List Continents
List Countries
List EU Countries
List Countries Phone Codes
List Currencies
List Languages
List Files
Create File
Get File
Update File
Delete File
Get File for Download
Get File Preview
Get File for View
List Teams
Create Team
Get Team
Update Team
Delete Team
Get Team Memberships
Create Team Membership
Update Membership Roles
Delete Team Membership
Update Team Membership Status