Custom Resource Documentation
Dynamic custom resource collections engine (/custom/:collection) allowing developers to create arbitrary collections on the fly (products, orders, notes, leads) with 1-click domain templates.
curl -X
GET 'http://playground-api-xi.vercel.app/custom' \
-H 'Content-Type: application/json' \
-b "pg_identity=your_cookie_uuid"
fetch('http://playground-api-xi.vercel.app/custom', {
method: 'GET' ,
credentials: 'include'
})
.then(res=>
res.json())
.then(data => console.log(data));
import axios from 'axios';
axios.get('http://playground-api-xi.vercel.app/custom', {
withCredentials: true
}).then(response =>
console.log(response.data));
import requests
response = requests.get('http://playground-api-xi.vercel.app/custom')
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "http://playground-api-xi.vercel.app/custom"
req,
err := http.NewRequest("GET", url, nil)
if err != nil
{
panic(err)
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp,
err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ :=
io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import Foundation
let url = URL(string: "http://playground-api-xi.vercel.app/custom")!
var request = URLRequest(url:
url)
request.httpMethod = "GET"
request.setValue("application/json", forHTTPHeaderField:
"Content-Type")
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data =
data, error == nil else { return }
let responseString = String(data: data, encoding: .utf8)
print(responseString
?? "")
}
task.resume()
import okhttp3.OkHttpClient
import okhttp3.Request
val client = OkHttpClient()
val request =
Request.Builder()
.url("http://playground-api-xi.vercel.app/custom")
.get()
.addHeader("Content-Type",
"application/json")
.build()
client.newCall(request).execute().use { response ->
println(response.body?.string())
}
use reqwest::Error;
#[tokio::main]
async fn main() -> Result<(), Error> {
let client =
reqwest::Client::new();
let response = client
.get("http://playground-api-xi.vercel.app/custom")
.header("Content-Type", "application/json")
.send()
.await?
.text()
.await?;
println!("{}", response);
Ok(())
}
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('GET', 'http://playground-api-xi.vercel.app/custom', [
'headers' => [
'Content-Type' => 'application/json'
]
]);
echo $response->getBody();
Response Schema Example
{
"totalCollections": 2,
"collections": [
{
"name": "products",
"endpoint": "/custom/products",
"count": 3,
"lastUpdated": "2026-08-02T23:30:00.000Z"
},
{
"name": "orders",
"endpoint": "/custom/orders",
"count": 2,
"lastUpdated": "2026-08-02T23:30:00.000Z"
}
]
}
โก Try it out โ Test endpoint live Test now
| Name | Type | Required | Location | Description |
|---|---|---|---|---|
template |
String (Query) |
Optional |
curl -X POST 'http://playground-api-xi.vercel.app/custom/seed' \
-H 'Content-Type: application/json'
\
-b "pg_identity=your_cookie_uuid" \
-d '{
"template": "ecommerce"
}'
fetch('http://playground-api-xi.vercel.app/custom/seed', {
method: 'POST',
headers: {
'Content-Type': 'application/json' },
credentials: 'include',
body: JSON.stringify({ "template": "ecommerce" })
})
.then(res => res.json())
.then(data => console.log(data));
import axios from 'axios';
axios.post('http://playground-api-xi.vercel.app/custom/seed', { "template": "ecommerce" }, {
withCredentials: true
}).then(response => console.log(response.data));
import requests
payload = { "template": "ecommerce" }
response =
requests.post('http://playground-api-xi.vercel.app/custom/seed', json=payload)
print(response.json())
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
url :=
"http://playground-api-xi.vercel.app/custom/seed"
payload := []byte(`{ "template": "ecommerce" }`)
req, err := http.NewRequest("POST",
url, bytes.NewBuffer(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type",
"application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil
{
panic(err)
}
defer resp.Body.Close()
body, _ :=
io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import Foundation
let url = URL(string: "http://playground-api-xi.vercel.app/custom/seed")!
var request = URLRequest(url:
url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField:
"Content-Type")
let jsonString = """
{ "template": "ecommerce" }
"""
request.httpBody = jsonString.data(using:
.utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data,
error == nil else { return }
let responseString = String(data: data, encoding: .utf8)
print(responseString ??
"")
}
task.resume()
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import
okhttp3.RequestBody.Companion.toRequestBody
val client = OkHttpClient()
val mediaType = "application/json;
charset=utf-8".toMediaType()
val body = """{ "template": "ecommerce" }""".toRequestBody(mediaType)
val request =
Request.Builder()
.url("http://playground-api-xi.vercel.app/custom/seed")
.post(body)
.addHeader("Content-Type",
"application/json")
.build()
client.newCall(request).execute().use { response ->
println(response.body?.string())
}
use reqwest::Error;
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), Error> {
let client
= reqwest::Client::new();
let payload = json!({ "template": "ecommerce" });
let response = client
.post("http://playground-api-xi.vercel.app/custom/seed")
.header("Content-Type", "application/json")
.json(&payload)
.send()
.await?
.text()
.await?;
println!("{}", response);
Ok(())
}
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('POST', 'http://playground-api-xi.vercel.app/custom/seed', [
'headers' => [
'Content-Type' => 'application/json'
],
'json' => json_decode('{ "template": "ecommerce" }', true)
]);
echo $response->getBody();
Request Payload Example
{
"template": "ecommerce"
}
Response Schema Example
{
"message": "Seeded 5 records across custom collections: products, orders.",
"template": "ecommerce",
"collections": [
"products",
"orders"
],
"totalSeeded": 5
}
โก Try it out โ Test endpoint live Test now
| Name | Type | Required | Location | Description |
|---|---|---|---|---|
collection |
String (Path) |
Optional | ||
page |
Integer (Query) |
Optional | ||
limit |
Integer (Query) |
Optional | ||
q |
String (Query) |
Optional | ||
_sort |
String (Query) |
Optional |
curl -X
GET 'http://playground-api-xi.vercel.app/custom/:collection' \
-H 'Content-Type: application/json' \
-b "pg_identity=your_cookie_uuid"
fetch('http://playground-api-xi.vercel.app/custom/:collection', {
method: 'GET' ,
credentials: 'include'
})
.then(res=>
res.json())
.then(data => console.log(data));
import axios from 'axios';
axios.get('http://playground-api-xi.vercel.app/custom/:collection', {
withCredentials: true
}).then(response =>
console.log(response.data));
import requests
response = requests.get('http://playground-api-xi.vercel.app/custom/:collection')
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "http://playground-api-xi.vercel.app/custom/:collection"
req,
err := http.NewRequest("GET", url, nil)
if err != nil
{
panic(err)
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp,
err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ :=
io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import Foundation
let url = URL(string: "http://playground-api-xi.vercel.app/custom/:collection")!
var request = URLRequest(url:
url)
request.httpMethod = "GET"
request.setValue("application/json", forHTTPHeaderField:
"Content-Type")
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data =
data, error == nil else { return }
let responseString = String(data: data, encoding: .utf8)
print(responseString
?? "")
}
task.resume()
import okhttp3.OkHttpClient
import okhttp3.Request
val client = OkHttpClient()
val request =
Request.Builder()
.url("http://playground-api-xi.vercel.app/custom/:collection")
.get()
.addHeader("Content-Type",
"application/json")
.build()
client.newCall(request).execute().use { response ->
println(response.body?.string())
}
use reqwest::Error;
#[tokio::main]
async fn main() -> Result<(), Error> {
let client =
reqwest::Client::new();
let response = client
.get("http://playground-api-xi.vercel.app/custom/:collection")
.header("Content-Type", "application/json")
.send()
.await?
.text()
.await?;
println!("{}", response);
Ok(())
}
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('GET', 'http://playground-api-xi.vercel.app/custom/:collection', [
'headers' => [
'Content-Type' => 'application/json'
]
]);
echo $response->getBody();
Response Schema Example
{
"data": [
{
"id": "local-a1b2c3d4",
"name": "MacBook Pro M3",
"price": 2499,
"category": "Laptops",
"createdAt": "2026-08-02T23:30:00.000Z",
"_sandbox": "created"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 1,
"totalPages": 1,
"hasNextPage": false,
"hasPrevPage": false
}
}
โก Try it out โ Test endpoint live Test now
| Name | Type | Required | Location | Description |
|---|---|---|---|---|
collection |
String (Path) |
Optional |
curl -X POST 'http://playground-api-xi.vercel.app/custom/:collection' \
-H 'Content-Type: application/json'
\
-b "pg_identity=your_cookie_uuid" \
-d '{
"name": "Custom Product Item",
"price": 99.99,
"inStock": true
}'
fetch('http://playground-api-xi.vercel.app/custom/:collection', {
method: 'POST',
headers: {
'Content-Type': 'application/json' },
credentials: 'include',
body: JSON.stringify({ "name": "Custom Product Item", "price": 99.99, "inStock": true })
})
.then(res => res.json())
.then(data => console.log(data));
import axios from 'axios';
axios.post('http://playground-api-xi.vercel.app/custom/:collection', { "name": "Custom Product Item", "price": 99.99, "inStock": true }, {
withCredentials: true
}).then(response => console.log(response.data));
import requests
payload = { "name": "Custom Product Item", "price": 99.99, "inStock": true }
response =
requests.post('http://playground-api-xi.vercel.app/custom/:collection', json=payload)
print(response.json())
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
url :=
"http://playground-api-xi.vercel.app/custom/:collection"
payload := []byte(`{ "name": "Custom Product Item", "price": 99.99, "inStock": true }`)
req, err := http.NewRequest("POST",
url, bytes.NewBuffer(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type",
"application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil
{
panic(err)
}
defer resp.Body.Close()
body, _ :=
io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import Foundation
let url = URL(string: "http://playground-api-xi.vercel.app/custom/:collection")!
var request = URLRequest(url:
url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField:
"Content-Type")
let jsonString = """
{ "name": "Custom Product Item", "price": 99.99, "inStock": true }
"""
request.httpBody = jsonString.data(using:
.utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data,
error == nil else { return }
let responseString = String(data: data, encoding: .utf8)
print(responseString ??
"")
}
task.resume()
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import
okhttp3.RequestBody.Companion.toRequestBody
val client = OkHttpClient()
val mediaType = "application/json;
charset=utf-8".toMediaType()
val body = """{ "name": "Custom Product Item", "price": 99.99, "inStock": true }""".toRequestBody(mediaType)
val request =
Request.Builder()
.url("http://playground-api-xi.vercel.app/custom/:collection")
.post(body)
.addHeader("Content-Type",
"application/json")
.build()
client.newCall(request).execute().use { response ->
println(response.body?.string())
}
use reqwest::Error;
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), Error> {
let client
= reqwest::Client::new();
let payload = json!({ "name": "Custom Product Item", "price": 99.99, "inStock": true });
let response = client
.post("http://playground-api-xi.vercel.app/custom/:collection")
.header("Content-Type", "application/json")
.json(&payload)
.send()
.await?
.text()
.await?;
println!("{}", response);
Ok(())
}
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('POST', 'http://playground-api-xi.vercel.app/custom/:collection', [
'headers' => [
'Content-Type' => 'application/json'
],
'json' => json_decode('{ "name": "Custom Product Item", "price": 99.99, "inStock": true }', true)
]);
echo $response->getBody();
Request Payload Example
{
"name": "Custom Product Item",
"price": 99.99,
"inStock": true
}
Response Schema Example
{
"id": "local-f9e8d7c6-5432-10ab",
"name": "Custom Product Item",
"price": 99.99,
"inStock": true,
"createdAt": "2026-08-02T23:30:00.000Z",
"updatedAt": "2026-08-02T23:30:00.000Z",
"_sandbox": "created"
}
โก Try it out โ Test endpoint live Test now
| Name | Type | Required | Location | Description |
|---|---|---|---|---|
collection |
String (Path) |
Optional | ||
id |
String (Path) |
Optional |
curl -X DELETE 'http://playground-api-xi.vercel.app/custom/:collection/:id' \
-H 'Content-Type: application/json' \
-b "pg_identity=your_cookie_uuid"
fetch('http://playground-api-xi.vercel.app/custom/:collection/:id', {
method: 'DELETE' ,
credentials: 'include'
})
.then(res=>
res.json())
.then(data => console.log(data));
import axios from 'axios';
axios.delete('http://playground-api-xi.vercel.app/custom/:collection/:id', {
withCredentials: true
}).then(response =>
console.log(response.data));
import requests
response = requests.delete('http://playground-api-xi.vercel.app/custom/:collection/:id')
print(response.status_code)
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "http://playground-api-xi.vercel.app/custom/:collection/:id"
req,
err := http.NewRequest("DELETE", url, nil)
if err != nil
{
panic(err)
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp,
err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ :=
io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import Foundation
let url = URL(string: "http://playground-api-xi.vercel.app/custom/:collection/:id")!
var request = URLRequest(url:
url)
request.httpMethod = "DELETE"
request.setValue("application/json", forHTTPHeaderField:
"Content-Type")
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data =
data, error == nil else { return }
let responseString = String(data: data, encoding: .utf8)
print(responseString
?? "")
}
task.resume()
import okhttp3.OkHttpClient
import okhttp3.Request
val client = OkHttpClient()
val request =
Request.Builder()
.url("http://playground-api-xi.vercel.app/custom/:collection/:id")
.delete()
.addHeader("Content-Type",
"application/json")
.build()
client.newCall(request).execute().use { response ->
println(response.body?.string())
}
use reqwest::Error;
#[tokio::main]
async fn main() -> Result<(), Error> {
let client =
reqwest::Client::new();
let response = client
.delete("http://playground-api-xi.vercel.app/custom/:collection/:id")
.header("Content-Type", "application/json")
.send()
.await?
.text()
.await?;
println!("{}", response);
Ok(())
}
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('DELETE', 'http://playground-api-xi.vercel.app/custom/:collection/:id', [
'headers' => [
'Content-Type' => 'application/json'
]
]);
echo $response->getBody();
Response Schema Example
{
"message": "Record 'local-f9e8d7c6' removed from custom collection 'products'"
}