Create Blog
curl --request POST \
--url https://api.launchmystore.io/api/v1/blogs.json \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"title": "<string>",
"handle": "<string>",
"templateSuffix": "<string>"
}
'import requests
url = "https://api.launchmystore.io/api/v1/blogs.json"
payload = {
"name": "<string>",
"title": "<string>",
"handle": "<string>",
"templateSuffix": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
title: '<string>',
handle: '<string>',
templateSuffix: '<string>'
})
};
fetch('https://api.launchmystore.io/api/v1/blogs.json', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.launchmystore.io/api/v1/blogs.json",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'title' => '<string>',
'handle' => '<string>',
'templateSuffix' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.launchmystore.io/api/v1/blogs.json"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"title\": \"<string>\",\n \"handle\": \"<string>\",\n \"templateSuffix\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.launchmystore.io/api/v1/blogs.json")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"title\": \"<string>\",\n \"handle\": \"<string>\",\n \"templateSuffix\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.launchmystore.io/api/v1/blogs.json")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"title\": \"<string>\",\n \"handle\": \"<string>\",\n \"templateSuffix\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": 123,
"state": "<string>",
"data.blog": {}
}Blogs
Create Blog
Create a new blog
POST
/
api
/
v1
/
blogs.json
Create Blog
curl --request POST \
--url https://api.launchmystore.io/api/v1/blogs.json \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"title": "<string>",
"handle": "<string>",
"templateSuffix": "<string>"
}
'import requests
url = "https://api.launchmystore.io/api/v1/blogs.json"
payload = {
"name": "<string>",
"title": "<string>",
"handle": "<string>",
"templateSuffix": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
title: '<string>',
handle: '<string>',
templateSuffix: '<string>'
})
};
fetch('https://api.launchmystore.io/api/v1/blogs.json', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.launchmystore.io/api/v1/blogs.json",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'title' => '<string>',
'handle' => '<string>',
'templateSuffix' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.launchmystore.io/api/v1/blogs.json"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"title\": \"<string>\",\n \"handle\": \"<string>\",\n \"templateSuffix\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.launchmystore.io/api/v1/blogs.json")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"title\": \"<string>\",\n \"handle\": \"<string>\",\n \"templateSuffix\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.launchmystore.io/api/v1/blogs.json")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"title\": \"<string>\",\n \"handle\": \"<string>\",\n \"templateSuffix\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": 123,
"state": "<string>",
"data.blog": {}
}Create Blog
Creates a new blog in the store. Auth: app access token with thewrite_content scope.
Request
curl -X POST "https://api.launchmystore.io/api/v1/blogs.json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "company-news",
"title": "Company News"
}'
const response = await fetch('https://api.launchmystore.io/api/v1/blogs.json', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'company-news',
title: 'Company News'
})
});
blog object ({ "blog": { ... } }) — both are accepted.
Body Parameters
string
required
The blog’s internal name. Required.
string
required
The blog title. Required.
string
URL-safe handle.
string
Custom template suffix for theming (e.g.
news).Only the fields above are persisted. Any other field in the body — including
commentable, feedburner, feedburner_location, tags, and
articles_count — is silently ignored on this endpoint and will not appear in
the response. Comment moderation is not configurable through this API.Response
The response uses the standard platform envelope. The created blog row is returned underdata.blog.
integer
HTTP status code (
201 on success).string
"success" or "error".object
The created blog row:
blogsPageId, id, name, title, handle,
templateSuffix, seoTitle, seoDesc, seoImage, storeId, plus
createdAt / updatedAt timestamps.Example Response
{
"status": 201,
"state": "success",
"message": null,
"data": {
"blog": {
"blogsPageId": "5a0e8d2c-8c0e-4e26-9f70-3bd2bce29c11",
"id": "482910",
"name": "company-news",
"title": "Company News",
"handle": null,
"templateSuffix": null,
"seoTitle": null,
"seoDesc": null,
"seoImage": null,
"storeId": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"createdAt": "2026-03-20T10:00:00.000Z",
"updatedAt": "2026-03-20T10:00:00.000Z"
}
},
"count": null,
"pagination": null
}
Errors
A missingname or title returns the error envelope:
{
"status": 400,
"state": "error",
"message": "Missing required fields: name, title",
"data": null
}
| Code | Description |
|---|---|
400 | name and/or title missing or not a non-empty string. |
401 | Invalid or missing access token. |
403 | App lacks the write_content scope. |