This documentation shows how to use Greip API, By highlighting the API methods, options and some other features that allow you to get the most of this API.
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("greip/getbulklookup");One install, one key - the same client calls every API on the marketplace.
Your API Key. Each user has a unique API Key that can be used to access the API functions. If you don't have an account yet, please create new account first.
The IP Addresses you want to lookup. It's a CSV (Comma Separated Values)
The modules you want to use of the request. It's a CSV (Comma Separated Values)
Used to inform the API to retrieve the response in your native language.
Sets the format of the API response. JSON is the default format.
BulkLookup endpoint: Returns the geolocation data of multiple IP Addresses.
Country endpoint: Returns the information of a specific country by passing the `countrCode`.
GeoIP endpoint: Returns the geolocation data of the visitor.
IPLookup endpoint: Returns the geolocation data of a specific IP Address.
/**
* GreipAPI - generated by OmniStream from Greip API's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/greip";
export class GreipAPIError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `GreipAPI error ${status}`);
this.name = "GreipAPIError";
this.status = status;
this.code = code;
}
}
export interface GreipAPIOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class GreipAPI {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: GreipAPIOptions = {}) {
if (!token) throw new Error("GreipAPI: 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 GreipAPIError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** BulkLookup endpoint: Returns the geolocation data of multiple IP Addresses. */
getbulklookup(params: { "key": string; "ips": string; "params"?: string; "lang"?: string; "format"?: string }): Promise<any> {
return this._request("GET", "/BulkLookup", { params });
}
/** Country endpoint: Returns the information of a specific country by passing the `countrCode`. */
getcountry(params: { "key": string; "CountryCode": string; "params"?: string; "lang"?: string; "format"?: string }): Promise<any> {
return this._request("GET", "/Country", { params });
}
/** GeoIP endpoint: Returns the geolocation data of the visitor. */
getgeoip(params: { "key": string; "params"?: string; "lang"?: string; "format"?: string }): Promise<any> {
return this._request("GET", "/GeoIP", { params });
}
/** IPLookup endpoint: Returns the geolocation data of a specific IP Address. */
getiplookup(params: { "key": string; "ip": string; "params"?: string; "lang"?: string; "format"?: string }): Promise<any> {
return this._request("GET", "/IPLookup", { params });
}
/** badWords endpoint: Detects whether user inputs contain profanity or not. */
getbadwords(params: { "key": string; "text": string; "listBadWords"?: string; "scoreOnly"?: string; "format"?: string }): Promise<any> {
return this._request("GET", "/badWords", { params });
}
}
export default GreipAPI;
No reviews yet. Be the first to rate this API.
No. Greip API is included with your Omni key, so a single OmniStream key is enough to start calling it. There is no separate signup with the provider and no second key to manage.
This documentation shows how to use Greip API, By highlighting the API methods, options and some other features that allow you to get the most of this API. It exposes 5 endpoints over GET, including GET /BulkLookup, GET /Country, GET /GeoIP.
Install the OmniStream SDK for your language and call Greip API 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 Greip API itself.
Zippopotam Postal Codes: Free, keyless place lookup by postal code for 60+ countries - returns place names, state, latitude and longitude.
badWords endpoint: Detects whether user inputs contain profanity or not.