Save channel time slots
PUT /v1/channels/:network/slots scope write
Replaces all weekly time slots of a channel and reorganizes what is in its queue (channel picks the account).
Headers
Authorization: Bearer praeko_… and X-Praeko-Contract: en. Always send both.Legacy Portuguese alias (still answered, marked as deprecated): /v1/canais/:rede/vagas.
Parameters
| Name | In | Description |
|---|---|---|
network |
path | Network: youtube, instagram or tiktok. |
channel |
query | Account id when the network has several (from GET /v1/channels). Without it, the default channel. |
Request body
JSON. Required fields must be sent; the others can be left out.
| Field | Type | Description |
|---|---|---|
timezone (optional) |
string | IANA time zone of the channel. Without it, the current one is kept. Up to 64 characters. |
slots required |
(string | object)[] | The weekly time slots (they replace ALL current ones; at most 100). Each one is a string "fri 17:30" or an object { "day": "fri", "time": "17:30" }. Days: sun, mon, tue, wed, thu, fri, sat (or weekday from 0 to 6). Time: HH:MM from 00:00 to 23:59. Duplicates are merged. Up to 100 items. |
{
"timezone": "America/Sao_Paulo",
"slots": [
"mon 12:00",
"fri 17:30",
{
"day": "sun",
"time": "22:00"
}
]
}Example
curl -X PUT "https://praeko.app/v1/channels/youtube/slots" \
-H "Authorization: Bearer $PRAEKO_KEY" \
-H "X-Praeko-Contract: en" \
-H "Content-Type: application/json" \
-d '{
"timezone": "America/Sao_Paulo",
"slots": [
"mon 12:00",
"fri 17:30",
{
"day": "sun",
"time": "22:00"
}
]
}'const res = await fetch("https://praeko.app/v1/channels/youtube/slots", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.PRAEKO_KEY}`,
"X-Praeko-Contract": "en",
"Content-Type": "application/json",
},
body: JSON.stringify({
"timezone": "America/Sao_Paulo",
"slots": [
"mon 12:00",
"fri 17:30",
{
"day": "sun",
"time": "22:00"
}
]
}),
});
console.log(res.status, await res.json());import { Praeko } from "@praeko/sdk";
const praeko = new Praeko({ url: "https://praeko.app", key: process.env.PRAEKO_KEY });
const resultado = await praeko.channels.setSlots("youtube", ["mon 12:00","fri 17:30",{"day":"sun","time":"22:00"}], { timezone: "America/Sao_Paulo" });
console.log(resultado);import os
import requests
resp = requests.put(
"https://praeko.app/v1/channels/youtube/slots",
headers={
"Authorization": f"Bearer {os.environ['PRAEKO_KEY']}",
"X-Praeko-Contract": "en",
},
json={
"timezone": "America/Sao_Paulo",
"slots": [
"mon 12:00",
"fri 17:30",
{
"day": "sun",
"time": "22:00",
},
],
},
)
print(resp.status_code, resp.json())<?php
$corpo = <<<'JSON'
{
"timezone": "America/Sao_Paulo",
"slots": [
"mon 12:00",
"fri 17:30",
{
"day": "sun",
"time": "22:00"
}
]
}
JSON;
$ch = curl_init('https://praeko.app/v1/channels/youtube/slots');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("PRAEKO_KEY"),
'X-Praeko-Contract: en',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => $corpo,
]);
$resposta = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), " ", $resposta, PHP_EOL;
curl_close($ch);package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"timezone": "America/Sao_Paulo",
"slots": [
"mon 12:00",
"fri 17:30",
{
"day": "sun",
"time": "22:00"
}
]
}`)
req, err := http.NewRequest("PUT", "https://praeko.app/v1/channels/youtube/slots", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("PRAEKO_KEY"))
req.Header.Set("X-Praeko-Contract", "en")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(resp.Status, string(out))
}require "net/http"
require "uri"
uri = URI("https://praeko.app/v1/channels/youtube/slots")
request = Net::HTTP::Put.new(uri)
request["Authorization"] = "Bearer #{ENV['PRAEKO_KEY']}"
request["X-Praeko-Contract"] = "en"
request["Content-Type"] = "application/json"
request.body = <<~'JSON'
{
"timezone": "America/Sao_Paulo",
"slots": [
"mon 12:00",
"fri 17:30",
{
"day": "sun",
"time": "22:00"
}
]
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
puts response.code, response.bodyusing System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Put, "https://praeko.app/v1/channels/youtube/slots");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("PRAEKO_KEY"));
request.Headers.Add("X-Praeko-Contract", "en");
request.Content = new StringContent("""
{
"timezone": "America/Sao_Paulo",
"slots": [
"mon 12:00",
"fri 17:30",
{
"day": "sun",
"time": "22:00"
}
]
}
""", Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String body = """
{
"timezone": "America/Sao_Paulo",
"slots": [
"mon 12:00",
"fri 17:30",
{
"day": "sun",
"time": "22:00"
}
]
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://praeko.app/v1/channels/youtube/slots"))
.header("Authorization", "Bearer " + System.getenv("PRAEKO_KEY"))
.header("X-Praeko-Contract", "en")
.header("Content-Type", "application/json")
.method("PUT", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
}
}http PUT "https://praeko.app/v1/channels/youtube/slots" \
"Authorization: Bearer $PRAEKO_KEY" \
"X-Praeko-Contract: en" \
"Content-Type: application/json" \
--raw='{
"timezone": "America/Sao_Paulo",
"slots": [
"mon 12:00",
"fri 17:30",
{
"day": "sun",
"time": "22:00"
}
]
}'Official SDK for NodeInstall it with
npm install @praeko/sdk (see SDK and CLI).No official SDKExample with the language's standard library (or HTTP client). Only the JavaScript SDK exists.
No official SDKExample with the language's standard library (or HTTP client). Only the JavaScript SDK exists.
No official SDKExample with the language's standard library (or HTTP client). Only the JavaScript SDK exists.
No official SDKExample with the language's standard library (or HTTP client). Only the JavaScript SDK exists.
No official SDKExample with the language's standard library (or HTTP client). Only the JavaScript SDK exists.
No official SDKExample with the language's standard library (or HTTP client). Only the JavaScript SDK exists.
Response
| Success status | When |
|---|---|
200 |
Success. |
{
"network": "youtube",
"timezone": "America/Sao_Paulo",
"slots": [
{
"weekday": 0,
"day": "sun",
"time": "22:00",
"active": true
},
{
"weekday": 1,
"day": "mon",
"time": "12:00",
"active": true
},
{
"weekday": 5,
"day": "fri",
"time": "17:30",
"active": true
}
],
"rescheduled": []
}Errors
| Status | code | When |
|---|---|---|
| 400 | empty_body |
The request body is empty. |
| 400 | invalid_json |
The request body is not a JSON object. |
| 413 | body_too_large |
The request body is larger than 1 MB. |
| 422 | invalid_field |
Invalid time or day, more than 100 time slots, or unknown time zone. |
| 404 | channel_not_found |
The network is not connected. |
| 404 | unknown_network |
Unknown network. |
Errors on any route
| Status | code | When |
|---|---|---|
| 401 | unauthorized |
The Authorization: Bearer … header is missing. |
| 401 | invalid_api_key |
The key does not exist. |
| 401 | revoked_api_key |
The key has been revoked. |
| 401 | expired_api_key |
The key has expired. |
| 403 | forbidden |
The key's scope is not enough for this route (see the scope badge). |
| 429 | rate_limited |
The per-minute request limit was exceeded. |
The body of every error is { "error": { "code", "message", "details"? } }. See all error codes.
Try it
Try it
Sign in to try itThe live test uses your key and your account. It stays off when you are not signed in.
Question or mistake on this page? contato@praeko.appView .md