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"
}
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 number for pagination
Number of items per page (max 100)
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"
}
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"
}
Unique identifier for the project
Updated name for the project
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"
}
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:
Social Media
Email Marketing
Paid Advertising
{
"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
Create Project
Start by creating a new project with a descriptive name and clear description.
Associate Links
When creating links, associate them with the appropriate project using the project_id field.
Monitor Performance
Use the Stats API to track performance across all links within a project.
Analyze Results
Review project performance and optimize based on analytics data.
Archive or Update
Update project details or archive completed projects as needed.
Integration with Links
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
Always associate links with appropriate projects
Use projects to track campaign performance
Group related links for easier management
Maintain project-link relationships consistently
Project Analytics
While projects themselves don’t store analytics data, you can analyze project performance by:
Filtering Links by Project : Use the Links API to retrieve all links associated with a project
Aggregating Statistics : Combine stats from all project links to get project-level insights
Cross-Project Comparison : Compare performance metrics across different projects
JavaScript Example
Python Example
// 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.