Create workspaces
curl --request POST \
--url https://api.staging.payrails.io/merchant/workspaces/bulk-create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"names": [
"Europe Workspace",
"Asia Workspace"
]
}
'import requests
url = "https://api.staging.payrails.io/merchant/workspaces/bulk-create"
payload = { "names": ["Europe Workspace", "Asia Workspace"] }
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({names: ['Europe Workspace', 'Asia Workspace']})
};
fetch('https://api.staging.payrails.io/merchant/workspaces/bulk-create', 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.staging.payrails.io/merchant/workspaces/bulk-create",
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([
'names' => [
'Europe Workspace',
'Asia Workspace'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-idempotency-key: <x-idempotency-key>"
],
]);
$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.staging.payrails.io/merchant/workspaces/bulk-create"
payload := strings.NewReader("{\n \"names\": [\n \"Europe Workspace\",\n \"Asia Workspace\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
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.staging.payrails.io/merchant/workspaces/bulk-create")
.header("x-idempotency-key", "<x-idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"names\": [\n \"Europe Workspace\",\n \"Asia Workspace\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.staging.payrails.io/merchant/workspaces/bulk-create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-idempotency-key"] = '<x-idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"names\": [\n \"Europe Workspace\",\n \"Asia Workspace\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"createdWorkspaces": [
{
"id": "b8fe6271-5d71-4d28-b8e8-89e64acc0c49",
"name": "Europe Workspace",
"createdAt": "2022-02-03T14:38:40.557Z",
"updatedAt": "2022-02-03T14:38:40.557Z",
"createdBy": "john.doe@payrails.com"
},
{
"id": "7f9f1882-a103-408d-ac96-46a7021e537a",
"name": "Asia Workspace",
"createdAt": "2022-02-03T14:38:40.557Z",
"updatedAt": "2022-02-03T14:38:40.557Z",
"createdBy": "john.doe@payrails.com"
}
],
"failedWorkspaces": [
{
"name": "America Workspace",
"errorMessage": "Failed to create workspace."
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.malformed",
"detail": "The request has malformed syntax",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestmalformed"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.unauthorized",
"detail": "The request lacks necessary credentials to perform the specified action",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestunauthorized"
}
]
}{
"errors": [
{
"id": "e7db22b3-914e-4975-928e-9edfb0885bea",
"code": "request.forbidden",
"detail": "The request credentials lack the required permissions to perform the specified action",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestforbidden"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.not-found",
"detail": "The requested resource was not found",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestnot-found"
}
]
}Create workspaces
Create workspaces in bulk.
POST
https://api.staging.payrails.io
/
merchant
/
workspaces
/
bulk-create
Create workspaces
curl --request POST \
--url https://api.staging.payrails.io/merchant/workspaces/bulk-create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"names": [
"Europe Workspace",
"Asia Workspace"
]
}
'import requests
url = "https://api.staging.payrails.io/merchant/workspaces/bulk-create"
payload = { "names": ["Europe Workspace", "Asia Workspace"] }
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({names: ['Europe Workspace', 'Asia Workspace']})
};
fetch('https://api.staging.payrails.io/merchant/workspaces/bulk-create', 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.staging.payrails.io/merchant/workspaces/bulk-create",
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([
'names' => [
'Europe Workspace',
'Asia Workspace'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-idempotency-key: <x-idempotency-key>"
],
]);
$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.staging.payrails.io/merchant/workspaces/bulk-create"
payload := strings.NewReader("{\n \"names\": [\n \"Europe Workspace\",\n \"Asia Workspace\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
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.staging.payrails.io/merchant/workspaces/bulk-create")
.header("x-idempotency-key", "<x-idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"names\": [\n \"Europe Workspace\",\n \"Asia Workspace\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.staging.payrails.io/merchant/workspaces/bulk-create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-idempotency-key"] = '<x-idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"names\": [\n \"Europe Workspace\",\n \"Asia Workspace\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"createdWorkspaces": [
{
"id": "b8fe6271-5d71-4d28-b8e8-89e64acc0c49",
"name": "Europe Workspace",
"createdAt": "2022-02-03T14:38:40.557Z",
"updatedAt": "2022-02-03T14:38:40.557Z",
"createdBy": "john.doe@payrails.com"
},
{
"id": "7f9f1882-a103-408d-ac96-46a7021e537a",
"name": "Asia Workspace",
"createdAt": "2022-02-03T14:38:40.557Z",
"updatedAt": "2022-02-03T14:38:40.557Z",
"createdBy": "john.doe@payrails.com"
}
],
"failedWorkspaces": [
{
"name": "America Workspace",
"errorMessage": "Failed to create workspace."
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.malformed",
"detail": "The request has malformed syntax",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestmalformed"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.unauthorized",
"detail": "The request lacks necessary credentials to perform the specified action",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestunauthorized"
}
]
}{
"errors": [
{
"id": "e7db22b3-914e-4975-928e-9edfb0885bea",
"code": "request.forbidden",
"detail": "The request credentials lack the required permissions to perform the specified action",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestforbidden"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.not-found",
"detail": "The requested resource was not found",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestnot-found"
}
]
}Authorizations
You can use an OAuth2 JWT bearer token in the Authorization header of your API requests for supported endpoints: Authorization: Bearer <YOUR_JWT_HERE>.
These tokens are valid for 10 minutes and can be requested via the access token endpoint endpoint.
Headers
Idempotency key to be used. Sending again the same key would return the same result without re-executing the update.
Body
application/json
Response
Success.
Hide child attributes
Hide child attributes
Unique identifier of the Workspace.
Unique name of the Workspace configuration.
Date of creation of the workspace configuration.
Date of last update of the workspace configuration.
Email address of the user that created the workspace.
Email address of the user that updated the workspace.
Last modified on October 7, 2026