A TypeScript client library for interacting with the Punyshort API — a powerful link shortener service with workspace, domain, and user management support.
- 🔗 Create and manage shortened links
- 🧑💼 Workspace and user management
- 🌍 Domain integration and control
- 📊 Rich statistics (date, country, OS)
- ✅ Fully typed API responses and requests
⚠️ Built-in exception handling
npm install @interaapps/punyshort-client
import { PunyshortClient } from '@interaapps/punyshort-client';
const client = new PunyshortClient('your-api-token');
// Example: Create a shortened link
const shortLink = await client.shortenLink({
domain: 'example.com',
long_link: 'https://your-long-url.com',
});
console.log(shortLink.full_link);
client.setApiToken(token: string)
getUser(): Promise<User>
editUser(id: string, req: EditUserRequest): Promise<ActionResponse>
createAccessToken(req: CreateAccessTokenRequest)
getAccessTokens()
deleteAccessToken(key: string)
getDomains()
createDomain(req: CreateDomainRequest)
deleteDomain(id: string)
shortenLink(req: ShortenLinkRequest)
getShortenLinks(params?: ShortenLinkFilters)
getShortenLink(id: string)
editShortenLink(id: string, req: ShortenLinkRequest)
deleteShortenLink(id: string)
getShortenLinkStatsTotal(id: string)
getShortenLinkDateStats(id: string, filters?)
getShortenLinkCountryStats(id: string, filters?)
getShortenLinkOperatingSystemStats(id: string, filters?)
followLink(req: FollowLinkRequest)
getWorkspaces(filters?)
createWorkspace(req: CreateWorkspaceRequest)
getWorkspace(id: string)
deleteWorkspace(id: string)
getWorkspaceUsers(workspaceId)
inviteWorkspaceUser(workspaceId, req)
editWorkspaceUser(workspaceId, userId, req)
removeWorkspaceUser(workspaceId, userId)
acceptWorkspaceInvitation(workspaceId, userId)
getWorkspaceDomains(workspaceId)
addWorkspaceDomain(workspaceId, req)
removeWorkspaceDomain(workspaceId, domainId)
The SDK is fully typed with reusable interfaces for:
- Requests (
ShortenLinkRequest
,CreateDomainRequest
, etc.) - Responses (
ShortenLink
,Domain
,User
, etc.) - Pagination, filters, and stat breakdowns
All API errors are handled using custom exception classes:
try {
await client.shortenLink({ ... });
} catch (e) {
if (e instanceof PathTakenException) {
console.error('The desired short path is already taken.');
}
}
List of exceptions:
AuthenticationException
-
BadRequestException
(with subclasses likeInvalidLinkException
,PathTakenException
, etc.) -
NotFoundException
(e.g.,DomainNotFoundException
) -
PermissionsDeniedException
,BlockedException
, etc.
MIT © InteraApps