MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

Authenticating requests

This API is not authenticated.

Authentication

Register

Example request:
curl --request POST \
    "https://infinia.botble.com/api/v1/register" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"e.g: John\",
    \"last_name\": \"e.g: Smith\",
    \"name\": \"architecto\",
    \"email\": \"[email protected]\",
    \"password\": \"|]|{+-\",
    \"phone\": \"architecto\",
    \"password_confirmation\": \"architecto\"
}"
const url = new URL(
    "https://infinia.botble.com/api/v1/register"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "first_name": "e.g: John",
    "last_name": "e.g: Smith",
    "name": "architecto",
    "email": "[email protected]",
    "password": "|]|{+-",
    "phone": "architecto",
    "password_confirmation": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": null,
    "message": "Registered successfully! We emailed you to verify your account!"
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "name": [
            "The name field is required."
        ],
        "email": [
            "The email field is required."
        ],
        "password": [
            "The password field is required."
        ]
    }
}
 

Request      

POST api/v1/register

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

first_name   string  optional  

This field is required when name is not present. Must not be greater than 120 characters. Must be at least 2 characters. Example: e.g: John

last_name   string  optional  

This field is required when name is not present. Must not be greater than 120 characters. Must be at least 2 characters. Example: e.g: Smith

name   string   

The name of the user. Example: architecto

email   string   

The email of the user. Example: [email protected]

password   string   

The password of user to create. Example: |]|{+-

phone   string   

The phone of the user. Example: architecto

password_confirmation   string   

The password confirmation. Example: architecto

Login

Example request:
curl --request POST \
    "https://infinia.botble.com/api/v1/login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\",
    \"password\": \"|]|{+-\"
}"
const url = new URL(
    "https://infinia.botble.com/api/v1/login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "[email protected]",
    "password": "|]|{+-"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "token": "1|aF5s7p3xxx1lVL8hkSrPN72m4wPVpTvTs..."
    },
    "message": null
}
 

Request      

POST api/v1/login

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

The email of the user. Example: [email protected]

password   string   

The password of user to create. Example: |]|{+-

Check email existing or not

Example request:
curl --request POST \
    "https://infinia.botble.com/api/v1/email/check" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\"
}"
const url = new URL(
    "https://infinia.botble.com/api/v1/email/check"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "[email protected]"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "exists": true
    },
    "message": null
}
 

Request      

POST api/v1/email/check

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

The email of the user. Example: [email protected]

Forgot password

Send a reset link to the given user.

Example request:
curl --request POST \
    "https://infinia.botble.com/api/v1/password/forgot" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\"
}"
const url = new URL(
    "https://infinia.botble.com/api/v1/password/forgot"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "[email protected]"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/password/forgot

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

The email of the user. Example: [email protected]

Resend email verification

Resend the email verification notification.

Example request:
curl --request POST \
    "https://infinia.botble.com/api/v1/resend-verify-account-email" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\"
}"
const url = new URL(
    "https://infinia.botble.com/api/v1/resend-verify-account-email"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "[email protected]"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/resend-verify-account-email

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

The email of the user. Example: [email protected]

Logout

requires authentication

Example request:
curl --request GET \
    --get "https://infinia.botble.com/api/v1/logout" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://infinia.botble.com/api/v1/logout"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/logout

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Blog

Example request:
curl --request GET \
    --get "https://infinia.botble.com/api/v1/search" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"q\": \"architecto\"
}"
const url = new URL(
    "https://infinia.botble.com/api/v1/search"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "q": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "No results found, please try with different keywords."
}
 

List posts

Example request:
curl --request GET \
    --get "https://infinia.botble.com/api/v1/posts" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://infinia.botble.com/api/v1/posts"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": 1,
            "name": "Top Trends in Digital Marketing and How They Impact Your Business",
            "slug": "top-trends-in-digital-marketing-and-how-they-impact-your-business",
            "description": "The digital marketing landscape is ever-evolving, driven by technological advancements, changes in consumer behavior, and the ongoing quest for businesses to stay ahead of the competition. Staying informed about the latest trends is crucial for any business looking to enhance its marketing strategies and achieve growth",
            "image": "https://infinia.botble.com/storage/posts/17.jpg",
            "categories": [
                {
                    "id": 2,
                    "name": "Open Source Contributions",
                    "slug": "open-source-contributions",
                    "url": "https://infinia.botble.com/open-source-contributions",
                    "description": "Et earum autem et. Et cum doloribus voluptatem. Ab nobis molestiae dolore cumque vel. Saepe eum aut minima. Quos magnam recusandae esse molestias."
                },
                {
                    "id": 4,
                    "name": "Technology Reviews",
                    "slug": "technology-reviews",
                    "url": "https://infinia.botble.com/technology-reviews",
                    "description": "Et quia odio sunt ipsa accusamus eum ipsum. Voluptatem occaecati qui porro sint. Dolore omnis ut ducimus consequatur nisi velit. Vel velit laborum explicabo error qui dolorum assumenda."
                }
            ],
            "tags": [
                {
                    "id": 3,
                    "name": "Open Source",
                    "slug": "open-source",
                    "description": null
                },
                {
                    "id": 4,
                    "name": "Web Design",
                    "slug": "web-design",
                    "description": null
                },
                {
                    "id": 6,
                    "name": "Full Stack Development",
                    "slug": "full-stack-development",
                    "description": null
                }
            ],
            "created_at": "2024-04-26T22:03:41.000000Z",
            "updated_at": "2025-03-14T02:56:21.000000Z"
        },
        {
            "id": 2,
            "name": "My Journey in Open Source: 3 Years of Contributions",
            "slug": "my-journey-in-open-source-3-years-of-contributions",
            "description": "A personal reflection on my experiences contributing to open source projects over the past three years, sharing lessons learned and advice for aspiring contributors.",
            "image": "https://infinia.botble.com/storage/posts/5.jpg",
            "categories": [
                {
                    "id": 3,
                    "name": "Tutorials",
                    "slug": "tutorials",
                    "url": "https://infinia.botble.com/tutorials",
                    "description": "Non labore qui eos tenetur quia temporibus. Occaecati quo ullam eligendi optio beatae ex. Sit recusandae et aliquid nam sapiente fugiat architecto. Consequuntur quia consequuntur qui quae."
                },
                {
                    "id": 8,
                    "name": "Design Portfolio",
                    "slug": "design-portfolio",
                    "url": "https://infinia.botble.com/design-portfolio",
                    "description": "Suscipit hic sint nihil. Ea dicta quidem nulla nam dolore sequi. Molestiae voluptas nesciunt alias ipsum rerum aut nesciunt voluptatem."
                }
            ],
            "tags": [
                {
                    "id": 1,
                    "name": "Botble CMS",
                    "slug": "botble-cms",
                    "description": null
                },
                {
                    "id": 3,
                    "name": "Open Source",
                    "slug": "open-source",
                    "description": null
                },
                {
                    "id": 5,
                    "name": "API Development",
                    "slug": "api-development",
                    "description": null
                }
            ],
            "created_at": "2024-05-01T10:52:16.000000Z",
            "updated_at": "2025-03-14T02:56:21.000000Z"
        },
        {
            "id": 3,
            "name": "5 Essential Tools for Web Developers in 2024",
            "slug": "5-essential-tools-for-web-developers-in-2024",
            "description": "Discover the top 5 tools that are essential for web developers in 2024, from frameworks and libraries to productivity boosters.",
            "image": "https://infinia.botble.com/storage/posts/6.jpg",
            "categories": [
                {
                    "id": 3,
                    "name": "Tutorials",
                    "slug": "tutorials",
                    "url": "https://infinia.botble.com/tutorials",
                    "description": "Non labore qui eos tenetur quia temporibus. Occaecati quo ullam eligendi optio beatae ex. Sit recusandae et aliquid nam sapiente fugiat architecto. Consequuntur quia consequuntur qui quae."
                },
                {
                    "id": 4,
                    "name": "Technology Reviews",
                    "slug": "technology-reviews",
                    "url": "https://infinia.botble.com/technology-reviews",
                    "description": "Et quia odio sunt ipsa accusamus eum ipsum. Voluptatem occaecati qui porro sint. Dolore omnis ut ducimus consequatur nisi velit. Vel velit laborum explicabo error qui dolorum assumenda."
                }
            ],
            "tags": [
                {
                    "id": 2,
                    "name": "JavaScript",
                    "slug": "javascript",
                    "description": null
                },
                {
                    "id": 3,
                    "name": "Open Source",
                    "slug": "open-source",
                    "description": null
                },
                {
                    "id": 8,
                    "name": "GitHub Projects",
                    "slug": "github-projects",
                    "description": null
                }
            ],
            "created_at": "2025-02-03T06:38:23.000000Z",
            "updated_at": "2025-03-14T02:56:21.000000Z"
        },
        {
            "id": 4,
            "name": "How I Built My Personal Portfolio Using Botble CMS",
            "slug": "how-i-built-my-personal-portfolio-using-botble-cms",
            "description": "A detailed walkthrough on how I built my portfolio website using Botble CMS, customizing it with the Zelio template for an impressive online presence.",
            "image": "https://infinia.botble.com/storage/posts/20.jpg",
            "categories": [
                {
                    "id": 1,
                    "name": "Web Development",
                    "slug": "web-development",
                    "url": "https://infinia.botble.com/web-development",
                    "description": "Et tempore consequuntur sint pariatur porro distinctio ratione. Beatae voluptates mollitia veritatis omnis dolorum laboriosam. Sit aut voluptates tempore aliquid similique et modi eius."
                },
                {
                    "id": 8,
                    "name": "Design Portfolio",
                    "slug": "design-portfolio",
                    "url": "https://infinia.botble.com/design-portfolio",
                    "description": "Suscipit hic sint nihil. Ea dicta quidem nulla nam dolore sequi. Molestiae voluptas nesciunt alias ipsum rerum aut nesciunt voluptatem."
                }
            ],
            "tags": [
                {
                    "id": 3,
                    "name": "Open Source",
                    "slug": "open-source",
                    "description": null
                },
                {
                    "id": 5,
                    "name": "API Development",
                    "slug": "api-development",
                    "description": null
                },
                {
                    "id": 6,
                    "name": "Full Stack Development",
                    "slug": "full-stack-development",
                    "description": null
                }
            ],
            "created_at": "2024-06-03T18:12:42.000000Z",
            "updated_at": "2025-03-14T02:56:21.000000Z"
        },
        {
            "id": 5,
            "name": "Creating Responsive UIs with Tailwind CSS",
            "slug": "creating-responsive-uis-with-tailwind-css",
            "description": "Learn how to create responsive user interfaces quickly and efficiently using the utility-first CSS framework, Tailwind CSS.",
            "image": "https://infinia.botble.com/storage/posts/9.jpg",
            "categories": [
                {
                    "id": 1,
                    "name": "Web Development",
                    "slug": "web-development",
                    "url": "https://infinia.botble.com/web-development",
                    "description": "Et tempore consequuntur sint pariatur porro distinctio ratione. Beatae voluptates mollitia veritatis omnis dolorum laboriosam. Sit aut voluptates tempore aliquid similique et modi eius."
                },
                {
                    "id": 6,
                    "name": "Career Journey",
                    "slug": "career-journey",
                    "url": "https://infinia.botble.com/career-journey",
                    "description": "Commodi quis voluptatibus laboriosam. Voluptatem in reprehenderit voluptas. Odit nam amet sed deleniti et. Voluptate et at autem fugiat maxime quis nesciunt quia."
                }
            ],
            "tags": [
                {
                    "id": 4,
                    "name": "Web Design",
                    "slug": "web-design",
                    "description": null
                },
                {
                    "id": 8,
                    "name": "GitHub Projects",
                    "slug": "github-projects",
                    "description": null
                }
            ],
            "created_at": "2024-12-24T08:24:37.000000Z",
            "updated_at": "2025-03-14T02:56:21.000000Z"
        },
        {
            "id": 6,
            "name": "Why I Love Contributing to Open Source Projects",
            "slug": "why-i-love-contributing-to-open-source-projects",
            "description": "A deep dive into why open source matters to me, how it helped me grow as a developer, and why every developer should contribute to open source.",
            "image": "https://infinia.botble.com/storage/posts/5.jpg",
            "categories": [
                {
                    "id": 2,
                    "name": "Open Source Contributions",
                    "slug": "open-source-contributions",
                    "url": "https://infinia.botble.com/open-source-contributions",
                    "description": "Et earum autem et. Et cum doloribus voluptatem. Ab nobis molestiae dolore cumque vel. Saepe eum aut minima. Quos magnam recusandae esse molestias."
                },
                {
                    "id": 9,
                    "name": "Collaborations",
                    "slug": "collaborations",
                    "url": "https://infinia.botble.com/collaborations",
                    "description": "Voluptates quis reiciendis tempore. Repudiandae libero id sit ut reiciendis deleniti. Tenetur neque suscipit distinctio distinctio facilis harum assumenda."
                }
            ],
            "tags": [
                {
                    "id": 1,
                    "name": "Botble CMS",
                    "slug": "botble-cms",
                    "description": null
                },
                {
                    "id": 3,
                    "name": "Open Source",
                    "slug": "open-source",
                    "description": null
                },
                {
                    "id": 6,
                    "name": "Full Stack Development",
                    "slug": "full-stack-development",
                    "description": null
                }
            ],
            "created_at": "2024-12-22T14:48:47.000000Z",
            "updated_at": "2025-03-14T02:56:21.000000Z"
        },
        {
            "id": 7,
            "name": "A Deep Dive into Laravel for Beginners",
            "slug": "a-deep-dive-into-laravel-for-beginners",
            "description": "A comprehensive guide for beginners who want to learn Laravel, covering everything from installation to building a simple application.",
            "image": "https://infinia.botble.com/storage/posts/16.jpg",
            "categories": [
                {
                    "id": 2,
                    "name": "Open Source Contributions",
                    "slug": "open-source-contributions",
                    "url": "https://infinia.botble.com/open-source-contributions",
                    "description": "Et earum autem et. Et cum doloribus voluptatem. Ab nobis molestiae dolore cumque vel. Saepe eum aut minima. Quos magnam recusandae esse molestias."
                },
                {
                    "id": 4,
                    "name": "Technology Reviews",
                    "slug": "technology-reviews",
                    "url": "https://infinia.botble.com/technology-reviews",
                    "description": "Et quia odio sunt ipsa accusamus eum ipsum. Voluptatem occaecati qui porro sint. Dolore omnis ut ducimus consequatur nisi velit. Vel velit laborum explicabo error qui dolorum assumenda."
                }
            ],
            "tags": [
                {
                    "id": 2,
                    "name": "JavaScript",
                    "slug": "javascript",
                    "description": null
                },
                {
                    "id": 5,
                    "name": "API Development",
                    "slug": "api-development",
                    "description": null
                },
                {
                    "id": 6,
                    "name": "Full Stack Development",
                    "slug": "full-stack-development",
                    "description": null
                }
            ],
            "created_at": "2024-12-29T00:59:24.000000Z",
            "updated_at": "2025-03-14T02:56:21.000000Z"
        },
        {
            "id": 8,
            "name": "Exploring the Benefits of MySQL for Large-Scale Projects",
            "slug": "exploring-the-benefits-of-mysql-for-large-scale-projects",
            "description": "An exploration of why MySQL is a great choice for large-scale projects, highlighting features, scalability, and performance tips.",
            "image": "https://infinia.botble.com/storage/posts/8.jpg",
            "categories": [
                {
                    "id": 1,
                    "name": "Web Development",
                    "slug": "web-development",
                    "url": "https://infinia.botble.com/web-development",
                    "description": "Et tempore consequuntur sint pariatur porro distinctio ratione. Beatae voluptates mollitia veritatis omnis dolorum laboriosam. Sit aut voluptates tempore aliquid similique et modi eius."
                },
                {
                    "id": 5,
                    "name": "Personal Blog",
                    "slug": "personal-blog",
                    "url": "https://infinia.botble.com/personal-blog",
                    "description": "Voluptate amet unde non aliquid eaque. Accusamus rerum ut veritatis minima. Voluptas incidunt accusantium et eos. Sapiente et aut cupiditate ut nulla itaque."
                }
            ],
            "tags": [
                {
                    "id": 2,
                    "name": "JavaScript",
                    "slug": "javascript",
                    "description": null
                },
                {
                    "id": 3,
                    "name": "Open Source",
                    "slug": "open-source",
                    "description": null
                },
                {
                    "id": 5,
                    "name": "API Development",
                    "slug": "api-development",
                    "description": null
                }
            ],
            "created_at": "2024-12-06T16:33:04.000000Z",
            "updated_at": "2025-03-14T02:56:21.000000Z"
        },
        {
            "id": 9,
            "name": "How to Integrate APIs in Node.js for Your Next Project",
            "slug": "how-to-integrate-apis-in-nodejs-for-your-next-project",
            "description": "Learn how to seamlessly integrate third-party APIs in your Node.js applications for powerful data access and functionality.",
            "image": "https://infinia.botble.com/storage/posts/10.jpg",
            "categories": [
                {
                    "id": 1,
                    "name": "Web Development",
                    "slug": "web-development",
                    "url": "https://infinia.botble.com/web-development",
                    "description": "Et tempore consequuntur sint pariatur porro distinctio ratione. Beatae voluptates mollitia veritatis omnis dolorum laboriosam. Sit aut voluptates tempore aliquid similique et modi eius."
                },
                {
                    "id": 2,
                    "name": "Open Source Contributions",
                    "slug": "open-source-contributions",
                    "url": "https://infinia.botble.com/open-source-contributions",
                    "description": "Et earum autem et. Et cum doloribus voluptatem. Ab nobis molestiae dolore cumque vel. Saepe eum aut minima. Quos magnam recusandae esse molestias."
                }
            ],
            "tags": [
                {
                    "id": 3,
                    "name": "Open Source",
                    "slug": "open-source",
                    "description": null
                },
                {
                    "id": 5,
                    "name": "API Development",
                    "slug": "api-development",
                    "description": null
                },
                {
                    "id": 8,
                    "name": "GitHub Projects",
                    "slug": "github-projects",
                    "description": null
                }
            ],
            "created_at": "2024-07-16T22:20:38.000000Z",
            "updated_at": "2025-03-14T02:56:21.000000Z"
        },
        {
            "id": 10,
            "name": "Best Practices for Designing User-Friendly Websites",
            "slug": "best-practices-for-designing-user-friendly-websites",
            "description": "Discover the best practices for designing websites that are not only aesthetically pleasing but also user-friendly and accessible.",
            "image": "https://infinia.botble.com/storage/posts/9.jpg",
            "categories": [
                {
                    "id": 5,
                    "name": "Personal Blog",
                    "slug": "personal-blog",
                    "url": "https://infinia.botble.com/personal-blog",
                    "description": "Voluptate amet unde non aliquid eaque. Accusamus rerum ut veritatis minima. Voluptas incidunt accusantium et eos. Sapiente et aut cupiditate ut nulla itaque."
                },
                {
                    "id": 9,
                    "name": "Collaborations",
                    "slug": "collaborations",
                    "url": "https://infinia.botble.com/collaborations",
                    "description": "Voluptates quis reiciendis tempore. Repudiandae libero id sit ut reiciendis deleniti. Tenetur neque suscipit distinctio distinctio facilis harum assumenda."
                }
            ],
            "tags": [
                {
                    "id": 4,
                    "name": "Web Design",
                    "slug": "web-design",
                    "description": null
                },
                {
                    "id": 8,
                    "name": "GitHub Projects",
                    "slug": "github-projects",
                    "description": null
                }
            ],
            "created_at": "2024-05-04T14:58:36.000000Z",
            "updated_at": "2025-03-14T02:56:21.000000Z"
        }
    ],
    "links": {
        "first": "https://infinia.botble.com/api/v1/posts?page=1",
        "last": "https://infinia.botble.com/api/v1/posts?page=2",
        "prev": null,
        "next": "https://infinia.botble.com/api/v1/posts?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 2,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "https://infinia.botble.com/api/v1/posts?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": "https://infinia.botble.com/api/v1/posts?page=2",
                "label": "2",
                "active": false
            },
            {
                "url": "https://infinia.botble.com/api/v1/posts?page=2",
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "https://infinia.botble.com/api/v1/posts",
        "per_page": 10,
        "to": 10,
        "total": 15
    },
    "error": false,
    "message": null
}
 

Request      

GET api/v1/posts

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

List categories

Example request:
curl --request GET \
    --get "https://infinia.botble.com/api/v1/categories" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://infinia.botble.com/api/v1/categories"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": 1,
            "name": "Web Development",
            "slug": "web-development",
            "description": "Et tempore consequuntur sint pariatur porro distinctio ratione. Beatae voluptates mollitia veritatis omnis dolorum laboriosam. Sit aut voluptates tempore aliquid similique et modi eius.",
            "children": [],
            "parent": {
                "id": null,
                "name": null,
                "slug": "",
                "url": "https://infinia.botble.com",
                "description": null
            }
        },
        {
            "id": 2,
            "name": "Open Source Contributions",
            "slug": "open-source-contributions",
            "description": "Et earum autem et. Et cum doloribus voluptatem. Ab nobis molestiae dolore cumque vel. Saepe eum aut minima. Quos magnam recusandae esse molestias.",
            "children": [],
            "parent": {
                "id": null,
                "name": null,
                "slug": "",
                "url": "https://infinia.botble.com",
                "description": null
            }
        },
        {
            "id": 3,
            "name": "Tutorials",
            "slug": "tutorials",
            "description": "Non labore qui eos tenetur quia temporibus. Occaecati quo ullam eligendi optio beatae ex. Sit recusandae et aliquid nam sapiente fugiat architecto. Consequuntur quia consequuntur qui quae.",
            "children": [],
            "parent": {
                "id": null,
                "name": null,
                "slug": "",
                "url": "https://infinia.botble.com",
                "description": null
            }
        },
        {
            "id": 4,
            "name": "Technology Reviews",
            "slug": "technology-reviews",
            "description": "Et quia odio sunt ipsa accusamus eum ipsum. Voluptatem occaecati qui porro sint. Dolore omnis ut ducimus consequatur nisi velit. Vel velit laborum explicabo error qui dolorum assumenda.",
            "children": [],
            "parent": {
                "id": null,
                "name": null,
                "slug": "",
                "url": "https://infinia.botble.com",
                "description": null
            }
        },
        {
            "id": 5,
            "name": "Personal Blog",
            "slug": "personal-blog",
            "description": "Voluptate amet unde non aliquid eaque. Accusamus rerum ut veritatis minima. Voluptas incidunt accusantium et eos. Sapiente et aut cupiditate ut nulla itaque.",
            "children": [],
            "parent": {
                "id": null,
                "name": null,
                "slug": "",
                "url": "https://infinia.botble.com",
                "description": null
            }
        },
        {
            "id": 6,
            "name": "Career Journey",
            "slug": "career-journey",
            "description": "Commodi quis voluptatibus laboriosam. Voluptatem in reprehenderit voluptas. Odit nam amet sed deleniti et. Voluptate et at autem fugiat maxime quis nesciunt quia.",
            "children": [],
            "parent": {
                "id": null,
                "name": null,
                "slug": "",
                "url": "https://infinia.botble.com",
                "description": null
            }
        },
        {
            "id": 7,
            "name": "Coding Challenges",
            "slug": "coding-challenges",
            "description": "Expedita aut ut ut quae saepe. Nesciunt fuga ut iusto omnis reprehenderit excepturi placeat. Eveniet molestias explicabo iure qui harum sint sapiente. Et vero et distinctio eligendi sunt.",
            "children": [],
            "parent": {
                "id": null,
                "name": null,
                "slug": "",
                "url": "https://infinia.botble.com",
                "description": null
            }
        },
        {
            "id": 8,
            "name": "Design Portfolio",
            "slug": "design-portfolio",
            "description": "Suscipit hic sint nihil. Ea dicta quidem nulla nam dolore sequi. Molestiae voluptas nesciunt alias ipsum rerum aut nesciunt voluptatem.",
            "children": [],
            "parent": {
                "id": null,
                "name": null,
                "slug": "",
                "url": "https://infinia.botble.com",
                "description": null
            }
        },
        {
            "id": 9,
            "name": "Collaborations",
            "slug": "collaborations",
            "description": "Voluptates quis reiciendis tempore. Repudiandae libero id sit ut reiciendis deleniti. Tenetur neque suscipit distinctio distinctio facilis harum assumenda.",
            "children": [],
            "parent": {
                "id": null,
                "name": null,
                "slug": "",
                "url": "https://infinia.botble.com",
                "description": null
            }
        }
    ],
    "links": {
        "first": "https://infinia.botble.com/api/v1/categories?page=1",
        "last": "https://infinia.botble.com/api/v1/categories?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "https://infinia.botble.com/api/v1/categories?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "https://infinia.botble.com/api/v1/categories",
        "per_page": 10,
        "to": 9,
        "total": 9
    },
    "error": false,
    "message": null
}
 

Request      

GET api/v1/categories

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

List tags

Example request:
curl --request GET \
    --get "https://infinia.botble.com/api/v1/tags" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://infinia.botble.com/api/v1/tags"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": 1,
            "name": "Botble CMS",
            "slug": "botble-cms",
            "description": null
        },
        {
            "id": 2,
            "name": "JavaScript",
            "slug": "javascript",
            "description": null
        },
        {
            "id": 3,
            "name": "Open Source",
            "slug": "open-source",
            "description": null
        },
        {
            "id": 4,
            "name": "Web Design",
            "slug": "web-design",
            "description": null
        },
        {
            "id": 5,
            "name": "API Development",
            "slug": "api-development",
            "description": null
        },
        {
            "id": 6,
            "name": "Full Stack Development",
            "slug": "full-stack-development",
            "description": null
        },
        {
            "id": 7,
            "name": "Vietnam Developer",
            "slug": "vietnam-developer",
            "description": null
        },
        {
            "id": 8,
            "name": "GitHub Projects",
            "slug": "github-projects",
            "description": null
        }
    ],
    "links": {
        "first": "https://infinia.botble.com/api/v1/tags?page=1",
        "last": "https://infinia.botble.com/api/v1/tags?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "https://infinia.botble.com/api/v1/tags?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "https://infinia.botble.com/api/v1/tags",
        "per_page": 10,
        "to": 8,
        "total": 8
    },
    "error": false,
    "message": null
}
 

Request      

GET api/v1/tags

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Filters posts

Example request:
curl --request GET \
    --get "https://infinia.botble.com/api/v1/posts/filters?page=16&per_page=16&search=architecto&after=architecto&author=architecto&author_exclude=architecto&before=architecto&exclude=architecto&include=architecto&order=architecto&order_by=architecto&categories=architecto&categories_exclude=architecto&tags=architecto&tags_exclude=architecto&featured=architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://infinia.botble.com/api/v1/posts/filters"
);

const params = {
    "page": "16",
    "per_page": "16",
    "search": "architecto",
    "after": "architecto",
    "author": "architecto",
    "author_exclude": "architecto",
    "before": "architecto",
    "exclude": "architecto",
    "include": "architecto",
    "order": "architecto",
    "order_by": "architecto",
    "categories": "architecto",
    "categories_exclude": "architecto",
    "tags": "architecto",
    "tags_exclude": "architecto",
    "featured": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [],
    "links": {
        "first": "https://infinia.botble.com/api/v1/posts/filters?page=1",
        "last": "https://infinia.botble.com/api/v1/posts/filters?page=1",
        "prev": "https://infinia.botble.com/api/v1/posts/filters?page=15",
        "next": null
    },
    "meta": {
        "current_page": 16,
        "from": null,
        "last_page": 1,
        "links": [
            {
                "url": "https://infinia.botble.com/api/v1/posts/filters?page=15",
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "https://infinia.botble.com/api/v1/posts/filters?page=1",
                "label": "1",
                "active": false
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "https://infinia.botble.com/api/v1/posts/filters",
        "per_page": 16,
        "to": null,
        "total": 0
    },
    "error": false,
    "message": null
}
 

Request      

GET api/v1/posts/filters

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

page   integer  optional  

Current page of the collection. Default: 1 Example: 16

per_page   integer  optional  

Maximum number of items to be returned in result set.Default: 10 Example: 16

search   string  optional  

Limit results to those matching a string. Example: architecto

after   string  optional  

Limit response to posts published after a given ISO8601 compliant date. Example: architecto

author   string  optional  

Limit result set to posts assigned to specific authors. Example: architecto

author_exclude   string  optional  

Ensure result set excludes posts assigned to specific authors. Example: architecto

before   string  optional  

Limit response to posts published before a given ISO8601 compliant date. Example: architecto

exclude   string  optional  

Ensure result set excludes specific IDs. Example: architecto

include   string  optional  

Limit result set to specific IDs. Example: architecto

order   string  optional  

Order sort attribute ascending or descending. Default: desc .One of: asc, desc Example: architecto

order_by   string  optional  

Sort collection by object attribute. Default: updated_at. One of: author, created_at, updated_at, id, slug, title Example: architecto

categories   string  optional  

Limit result set to all items that have the specified term assigned in the categories taxonomy. Example: architecto

categories_exclude   string  optional  

Limit result set to all items except those that have the specified term assigned in the categories taxonomy. Example: architecto

tags   string  optional  

Limit result set to all items that have the specified term assigned in the tags taxonomy. Example: architecto

tags_exclude   string  optional  

Limit result set to all items except those that have the specified term assigned in the tags taxonomy. Example: architecto

featured   string  optional  

Limit result set to items that are sticky. Example: architecto

Get post by slug

Example request:
curl --request GET \
    --get "https://infinia.botble.com/api/v1/posts/architecto?slug=architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://infinia.botble.com/api/v1/posts/architecto"
);

const params = {
    "slug": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Not found"
}
 

Request      

GET api/v1/posts/{slug}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

slug   string   

The slug of the post. Example: architecto

Query Parameters

slug   string  optional  

Find by slug of post. Example: architecto

Filters categories

Example request:
curl --request GET \
    --get "https://infinia.botble.com/api/v1/categories/filters" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://infinia.botble.com/api/v1/categories/filters"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": 1,
            "name": "Web Development",
            "slug": "web-development",
            "url": "https://infinia.botble.com/web-development",
            "description": "Et tempore consequuntur sint pariatur porro distinctio ratione. Beatae voluptates mollitia veritatis omnis dolorum laboriosam. Sit aut voluptates tempore aliquid similique et modi eius."
        },
        {
            "id": 3,
            "name": "Tutorials",
            "slug": "tutorials",
            "url": "https://infinia.botble.com/tutorials",
            "description": "Non labore qui eos tenetur quia temporibus. Occaecati quo ullam eligendi optio beatae ex. Sit recusandae et aliquid nam sapiente fugiat architecto. Consequuntur quia consequuntur qui quae."
        },
        {
            "id": 4,
            "name": "Technology Reviews",
            "slug": "technology-reviews",
            "url": "https://infinia.botble.com/technology-reviews",
            "description": "Et quia odio sunt ipsa accusamus eum ipsum. Voluptatem occaecati qui porro sint. Dolore omnis ut ducimus consequatur nisi velit. Vel velit laborum explicabo error qui dolorum assumenda."
        },
        {
            "id": 5,
            "name": "Personal Blog",
            "slug": "personal-blog",
            "url": "https://infinia.botble.com/personal-blog",
            "description": "Voluptate amet unde non aliquid eaque. Accusamus rerum ut veritatis minima. Voluptas incidunt accusantium et eos. Sapiente et aut cupiditate ut nulla itaque."
        },
        {
            "id": 2,
            "name": "Open Source Contributions",
            "slug": "open-source-contributions",
            "url": "https://infinia.botble.com/open-source-contributions",
            "description": "Et earum autem et. Et cum doloribus voluptatem. Ab nobis molestiae dolore cumque vel. Saepe eum aut minima. Quos magnam recusandae esse molestias."
        },
        {
            "id": 8,
            "name": "Design Portfolio",
            "slug": "design-portfolio",
            "url": "https://infinia.botble.com/design-portfolio",
            "description": "Suscipit hic sint nihil. Ea dicta quidem nulla nam dolore sequi. Molestiae voluptas nesciunt alias ipsum rerum aut nesciunt voluptatem."
        },
        {
            "id": 9,
            "name": "Collaborations",
            "slug": "collaborations",
            "url": "https://infinia.botble.com/collaborations",
            "description": "Voluptates quis reiciendis tempore. Repudiandae libero id sit ut reiciendis deleniti. Tenetur neque suscipit distinctio distinctio facilis harum assumenda."
        },
        {
            "id": 7,
            "name": "Coding Challenges",
            "slug": "coding-challenges",
            "url": "https://infinia.botble.com/coding-challenges",
            "description": "Expedita aut ut ut quae saepe. Nesciunt fuga ut iusto omnis reprehenderit excepturi placeat. Eveniet molestias explicabo iure qui harum sint sapiente. Et vero et distinctio eligendi sunt."
        },
        {
            "id": 6,
            "name": "Career Journey",
            "slug": "career-journey",
            "url": "https://infinia.botble.com/career-journey",
            "description": "Commodi quis voluptatibus laboriosam. Voluptatem in reprehenderit voluptas. Odit nam amet sed deleniti et. Voluptate et at autem fugiat maxime quis nesciunt quia."
        }
    ],
    "links": {
        "first": "https://infinia.botble.com/api/v1/categories/filters?page=1",
        "last": "https://infinia.botble.com/api/v1/categories/filters?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "https://infinia.botble.com/api/v1/categories/filters?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "https://infinia.botble.com/api/v1/categories/filters",
        "per_page": 10,
        "to": 9,
        "total": 9
    },
    "error": false,
    "message": null
}
 

Request      

GET api/v1/categories/filters

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Get category by slug

Example request:
curl --request GET \
    --get "https://infinia.botble.com/api/v1/categories/architecto?slug=architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://infinia.botble.com/api/v1/categories/architecto"
);

const params = {
    "slug": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Not found"
}
 

Request      

GET api/v1/categories/{slug}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

slug   string   

The slug of the category. Example: architecto

Query Parameters

slug   string  optional  

Find by slug of category. Example: architecto

Profile

Get the user profile information.

requires authentication

Example request:
curl --request GET \
    --get "https://infinia.botble.com/api/v1/me" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://infinia.botble.com/api/v1/me"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/me

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Update profile

requires authentication

Example request:
curl --request PUT \
    "https://infinia.botble.com/api/v1/me" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"bngz\",
    \"last_name\": \"miyv\",
    \"name\": \"architecto\",
    \"phone\": \"architecto\",
    \"dob\": \"architecto\",
    \"gender\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"email\": \"[email protected]\"
}"
const url = new URL(
    "https://infinia.botble.com/api/v1/me"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "first_name": "bngz",
    "last_name": "miyv",
    "name": "architecto",
    "phone": "architecto",
    "dob": "architecto",
    "gender": "architecto",
    "description": "Eius et animi quos velit et.",
    "email": "[email protected]"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/me

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

first_name   string  optional  

This field is required when name is not present. Must not be greater than 120 characters. Must be at least 2 characters. Example: bngz

last_name   string  optional  

This field is required when name is not present. Must not be greater than 120 characters. Must be at least 2 characters. Example: miyv

name   string   

Name. Example: architecto

phone   string   

Phone. Example: architecto

dob   date  optional  

nullable Date of birth (format: Y-m-d). Example: architecto

gender   string  optional  

Gender (male, female, other). Example: architecto

description   string  optional  

Description Example: Eius et animi quos velit et.

email   string  optional  

Email. Example: [email protected]

Update Avatar

requires authentication

Example request:
curl --request POST \
    "https://infinia.botble.com/api/v1/update/avatar" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "avatar=@/tmp/phphvu9h0vim0kbdqAVSr9" 
const url = new URL(
    "https://infinia.botble.com/api/v1/update/avatar"
);

const headers = {
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('avatar', document.querySelector('input[name="avatar"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request      

POST api/v1/update/avatar

Headers

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Body Parameters

avatar   file   

Avatar file. Example: /tmp/phphvu9h0vim0kbdqAVSr9

Update password

requires authentication

Example request:
curl --request PUT \
    "https://infinia.botble.com/api/v1/update/password" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"|]|{+-\",
    \"old_password\": \"architecto\"
}"
const url = new URL(
    "https://infinia.botble.com/api/v1/update/password"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "password": "|]|{+-",
    "old_password": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/update/password

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

password   string   

The new password of user. Example: |]|{+-

old_password   string   

The current password of user. Example: architecto