Skip to main content
The Projects API allows you to create, manage, and organize your shortened links into projects. Projects help you group related links together for better organization, tracking, and management across your campaigns or initiatives.

Base URL

https://api.taap.it/v1/projects

Create Project

Create a new project to organize your links.
curl -X POST 'https://api.taap.it/v1/projects' \
  -H 'Authorization: Bearer taapit_your_api_key_here' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Summer Marketing Campaign",
    "description": "Links for our summer marketing campaign across all channels"
  }'
{
  "id": "project_987654321",
  "name": "Summer Marketing Campaign",
  "description": "Links for our summer marketing campaign across all channels",
  
  "created_at": "2024-01-15T10:30:00Z",
  "updated_at": "2024-01-15T10:30:00Z"
}
name
string
required
Name of the project
description
string
Optional description for the project

List Projects

Retrieve a paginated list of projects with optional filtering.
curl -X GET 'https://api.taap.it/v1/projects?page=1&page_size=10' \
  -H 'Authorization: Bearer taapit_your_api_key_here'
{
  "items": [
    {
      "id": "project_987654321",
      "name": "Summer Marketing Campaign",
      "description": "Links for our summer marketing campaign across all channels",
      
      "created_at": "2024-01-15T10:30:00Z",
      "updated_at": "2024-01-15T10:30:00Z"
    },
    {
      "id": "project_123456789",
      "name": "Product Launch 2024",
      "description": "All links related to our 2024 product launch",
      
      "created_at": "2024-01-10T14:20:00Z",
      "updated_at": "2024-01-12T09:15:00Z"
    }
  ],
  "page": 1,
  "page_size": 10,
  "has_next": false,
  "has_prev": false,
  "next_cursor": null,
  "prev_cursor": null
}
page
integer
default:"1"
Page number for pagination
page_size
integer
default:"10"
Number of items per page (max 100)
cursor
string
Cursor for cursor-based pagination

Get Project

Retrieve details for a specific project.
curl -X GET 'https://api.taap.it/v1/projects/project_987654321' \
  -H 'Authorization: Bearer taapit_your_api_key_here'
{
  "id": "project_987654321",
  "name": "Summer Marketing Campaign",
  "description": "Links for our summer marketing campaign across all channels",
  
  "created_at": "2024-01-15T10:30:00Z",
  "updated_at": "2024-01-15T10:30:00Z"
}
project_id
string
required
Unique identifier for the project

Update Project

Update an existing project’s details.
curl -X PUT 'https://api.taap.it/v1/projects/project_987654321' \
  -H 'Authorization: Bearer taapit_your_api_key_here' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Summer Marketing Campaign 2024",
    "description": "Updated description for our comprehensive summer marketing campaign"
  }'
{
  "id": "project_987654321",
  "name": "Summer Marketing Campaign 2024",
  "description": "Updated description for our comprehensive summer marketing campaign",
  
  "created_at": "2024-01-15T10:30:00Z",
  "updated_at": "2024-01-15T11:00:00Z"
}
project_id
string
required
Unique identifier for the project
name
string
Updated name for the project
description
string
Updated description for the project

Delete Project

Remove a project from your account.
curl -X DELETE 'https://api.taap.it/v1/projects/project_987654321' \
  -H 'Authorization: Bearer taapit_your_api_key_here'
{
  "message": "Project deleted successfully"
}
project_id
string
required
Unique identifier for the project to delete
Deleting a project will not delete the links associated with it. Links will remain in your account but will no longer be associated with the deleted project.

Project Organization Strategies

Campaign-Based Organization

Organize projects by marketing campaigns or initiatives:
{
  "name": "Q1 2024 Product Launch",
  "description": "All links for our Q1 product launch campaign including social media, email, and paid ads"
}

Channel-Based Organization

Group projects by marketing channels:
{
  "name": "Social Media Links",
  "description": "All links used across social media platforms"
}

Time-Based Organization

Organize projects by time periods:
{
  "name": "January 2024 Campaigns",
  "description": "All campaigns and initiatives from January 2024"
}

Product-Based Organization

Group projects by products or services:
{
  "name": "Mobile App Links",
  "description": "All links related to our mobile application"
}

Project Workflow

1

Create Project

Start by creating a new project with a descriptive name and clear description.
2

Associate Links

When creating links, associate them with the appropriate project using the project_id field.
3

Monitor Performance

Use the Stats API to track performance across all links within a project.
4

Analyze Results

Review project performance and optimize based on analytics data.
5

Archive or Update

Update project details or archive completed projects as needed.
When creating links, you can associate them with projects:
curl -X POST 'https://api.taap.it/v1/links' \
  -H 'Authorization: Bearer taapit_your_api_key_here' \
  -H 'Content-Type: application/json' \
  -d '{
    "original_url": "https://example.com/campaign-landing-page",
    
    "custom_code": "summer-campaign-main",
    "project_id": "project_987654321"
  }'

Error Responses

{
  "detail": "Project name is required"
}
{
  "detail": "Access denied to this workspace"
}
{
  "detail": "Project not found"
}
{
  "detail": "Project name already exists in this workspace"
}

Rate Limits

  • Plan-based Rate Limits: Rate limits vary based on your subscription plan
  • Project-specific operations: 500 requests per hour per project

Best Practices

  • Use clear, descriptive names for projects
  • Create a consistent naming convention across your organization
  • Use descriptions to provide context and details
  • Regularly review and archive completed projects
  • Monitor project-level analytics regularly
  • Compare performance across different projects
  • Use project data to optimize future campaigns
  • Set up alerts for project performance metrics

Project Analytics

While projects themselves don’t store analytics data, you can analyze project performance by:
  1. Filtering Links by Project: Use the Links API to retrieve all links associated with a project
  2. Aggregating Statistics: Combine stats from all project links to get project-level insights
  3. Cross-Project Comparison: Compare performance metrics across different projects
// Get all links for a project and aggregate stats
async function getProjectStats(projectId) {
  const links = await fetch(`/v1/links?project_id=${projectId}`);
  const linkIds = links.items.map(link => link.id);
  
  const stats = await Promise.all(
    linkIds.map(id => fetch(`/v1/stats/links/${id}`))
  );
  
  return aggregateStats(stats);
}

Next: Stats

Learn how to track and analyze the performance of your links and projects.