Skip to content

API Reference

Complete API reference for linked.is REST API

The linked.is API allows you to programmatically manage your short links, bio profiles, and access analytics data.

Base URL

All API requests should be made to:

https://api.linked.is/v1

Authentication

All API requests require authentication using an API token. You can generate an API token from your account settings.

Include your API token in the Authorization header:

curl -X GET "https://api.linked.is/v1/links" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
<script setup lang="ts">
const authenticatedApiCall = async () => {
  const response = await fetch("https://api.linked.is/v1/links", {
    method: "GET",
    headers: {
      Authorization: "Bearer YOUR_API_TOKEN",
    },
  });

  const data = await response.json();
  console.log(data);
  return data;
};
</script>

<template>
  <div>
    <button @click="authenticatedApiCall">Call Authenticated API</button>
  </div>
</template>

Response Format

All responses are returned in JSON format:

<script setup lang="ts">
const successResponse = {
  success: true,
  data: { /* ... */ }
};

const errorResponse = {
  success: false,
  error: {
    code: "INVALID_REQUEST",
    message: "Description of the error"
  }
};
</script>

<template>
  <div>
    <h3>Success Response:</h3>
    <pre>{{ JSON.stringify(successResponse, null, 2) }}</pre>
    <h3>Error Response:</h3>
    <pre>{{ JSON.stringify(errorResponse, null, 2) }}</pre>
  </div>
</template>

HTTP Status Codes

CodeDescription
200Success
201Created
400Bad Request
401Unauthorized
403Forbidden
404Not Found
429Rate Limit Exceeded
500Internal Server Error

Rate Limits

API requests are rate limited based on your plan:

PlanRequests per minute
Free60
Pro300
EnterpriseUnlimited

Rate limit information is included in response headers:

<script setup lang="ts">
const rateLimitHeaders = {
  "X-RateLimit-Limit": 60,
  "X-RateLimit-Remaining": 59,
  "X-RateLimit-Reset": 1640000000
};
</script>

<template>
  <div>
    <h3>Rate Limit Headers:</h3>
    <pre>{{ JSON.stringify(rateLimitHeaders, null, 2) }}</pre>
  </div>
</template>

Endpoints

Bio Profiles

Analytics

LLM Integration