Wiadomości
Centrum wiadomości z kupującymi.
- GET
/messaging/threads— Wątki wiadomości - GET
/messaging/threads/{threadId}— Wątek - PUT
/messaging/threads/{threadId}/read— Oznaczenie wątku jako przeczytany - GET
/messaging/threads/{threadId}/messages— Wiadomości wątku - POST
/messaging/threads/{threadId}/messages— Odpowiedź w wątku - POST
/messaging/messages— Nowa rozmowa w sprawie zamówienia - GET
/messaging/messages/{messageId}— Wiadomość - POST
/messaging/message-attachments— Załącznik wiadomości (nieobsługiwany)
Wątki wiadomości
GET /messaging/threads
Allegro + rozszerzeniaallegro:api:messaging:readlimit: read
Rozmowy z kupującymi (pytania o oferty, zamówienia, zwroty), najnowsza pierwsza. Reklamacje i dyskusje są w /sale/issues/{id}/chat.
Zgodność: zgodna z Allegro REST API, z rozszerzeniami allee (pola allee.*, alleeId) — GET /messaging/threads.
Uprawnienie: zakres allegro:api:messaging:read.
Grupa limitu: read.
Parametry zapytania
offset integerIle pozycji pominąć.
limit integerIle pozycji zwrócić (1–20, domyślnie 20).
Odpowiedzi
200 Wątki. · MessageThreadList
threads array<MessageThread> zawszePola obiektu
id string zawszeread boolean zawszeCzy sprzedawca przeczytał.
lastMessageDateTime string · date-time · null zawszeinterlocutor object zawszeKupujący (login allee, bez e-maila).
Pola obiektu
login string · null zawszeavatarUrl string · null zawszeallee object zawszePola obiektu
kind string zawszeQUESTION, ORDER, RETURNsubject string · null zawszeunreadCount integer zawszeorder IdRef · null zawszePola obiektu
id string zawszeoffer IdRef · null zawszePola obiektu
id string zawszecreatedAt string · date-time zawszeoffset integer zawszelimit integer zawszeBłędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 400 | VALIDATION_ERROR | Zła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce. |
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
| 503 | NOT_DEPLOYED | Funkcja jeszcze nie uruchomiona (np. sandbox, wsady). |
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/messaging/threads?limit=20&offset=0" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.public.v1+json" \
-w '\nHTTP %{http_code}\n'<?php
// allee API: GET /messaging/threads (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$ch = curl_init($base . '/messaging/threads?limit=20&offset=0');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.public.v1+json',
],
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: GET /messaging/threads (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.public.v1+json",
}
r = requests.request("GET", BASE + "/messaging/threads?limit=20&offset=0", headers=headers, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: GET /messaging/threads (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const res = await fetch(`${BASE}/messaging/threads?limit=20&offset=0`, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.public.v1+json",
},
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: GET /messaging/threads (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("GET"), baseUrl + "/messaging/threads?limit=20&offset=0");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.public.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: GET /messaging/threads (Java 11+, java.net.http; uruchom: java Main.java)
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 base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/messaging/threads?limit=20&offset=0"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.public.v1+json")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: GET /messaging/threads (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
req, err := http.NewRequest("GET", base+"/messaging/threads?limit=20&offset=0", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.public.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.public.v1+json{
"threads": [
{
"id": "900000001",
"read": false,
"lastMessageDateTime": "2026-11-10T11:10:05.479Z",
"interlocutor": {
"login": "kupujacy_demo_4816f227",
"avatarUrl": null
},
"allee": {
"kind": "QUESTION",
"subject": "Pytanie o ofertę",
"unreadCount": 1,
"order": null,
"offer": {
"id": "900000000000021"
},
"createdAt": "2026-11-10T11:10:05.478Z"
}
}
],
"offset": 0,
"limit": 20
}Wątek
GET /messaging/threads/{threadId}
Allegro + rozszerzeniaallegro:api:messaging:readlimit: read
Jeden wątek. Cudzy i nieistniejący → ta sama odpowiedź 404.
Zgodność: zgodna z Allegro REST API, z rozszerzeniami allee (pola allee.*, alleeId) — GET /messaging/threads/{threadId}.
Uprawnienie: zakres allegro:api:messaging:read.
Grupa limitu: read.
Parametry ścieżki
threadId string wymaganyIdentyfikator wątku.
Odpowiedzi
200 Wątek. · MessageThread
id string zawszeread boolean zawszeCzy sprzedawca przeczytał.
lastMessageDateTime string · date-time · null zawszeinterlocutor object zawszeKupujący (login allee, bez e-maila).
Pola obiektu
login string · null zawszeavatarUrl string · null zawszeallee object zawszePola obiektu
kind string zawszeQUESTION, ORDER, RETURNsubject string · null zawszeunreadCount integer zawszeorder IdRef · null zawszePola obiektu
id string zawszeoffer IdRef · null zawszePola obiektu
id string zawszecreatedAt string · date-time zawszeBłędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 404 | NOT_FOUND | Nie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama). |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/messaging/threads/900000001" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.public.v1+json" \
-w '\nHTTP %{http_code}\n'<?php
// allee API: GET /messaging/threads/900000001 (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$ch = curl_init($base . '/messaging/threads/900000001');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.public.v1+json',
],
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: GET /messaging/threads/900000001 (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.public.v1+json",
}
r = requests.request("GET", BASE + "/messaging/threads/900000001", headers=headers, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: GET /messaging/threads/900000001 (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const res = await fetch(`${BASE}/messaging/threads/900000001`, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.public.v1+json",
},
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: GET /messaging/threads/900000001 (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("GET"), baseUrl + "/messaging/threads/900000001");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.public.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: GET /messaging/threads/900000001 (Java 11+, java.net.http; uruchom: java Main.java)
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 base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/messaging/threads/900000001"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.public.v1+json")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: GET /messaging/threads/900000001 (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
req, err := http.NewRequest("GET", base+"/messaging/threads/900000001", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.public.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.public.v1+json{
"id": "900000001",
"read": false,
"lastMessageDateTime": "2026-11-10T11:10:05.479Z",
"interlocutor": {
"login": "kupujacy_demo_4816f227",
"avatarUrl": null
},
"allee": {
"kind": "QUESTION",
"subject": "Pytanie o ofertę",
"unreadCount": 1,
"order": null,
"offer": {
"id": "900000000000021"
},
"createdAt": "2026-11-10T11:10:05.478Z"
}
}Oznaczenie wątku jako przeczytany
PUT /messaging/threads/{threadId}/read
zgodna z Allegroallegro:api:messaging:writelimit: write
Tylko {"read": true}.
Zgodność: zgodna z Allegro REST API (ten sam kształt) — PUT /messaging/threads/{threadId}/read.
Uprawnienie: zakres allegro:api:messaging:write.
Grupa limitu: write.
Parametry ścieżki
threadId string wymaganyIdentyfikator wątku.
Treść żądania application/vnd.allegro.public.v1+json
read boolean wymaganetrueOdpowiedzi
200 Wątek. · MessageThread
id string zawszeread boolean zawszeCzy sprzedawca przeczytał.
lastMessageDateTime string · date-time · null zawszeinterlocutor object zawszeKupujący (login allee, bez e-maila).
Pola obiektu
login string · null zawszeavatarUrl string · null zawszeallee object zawszePola obiektu
kind string zawszeQUESTION, ORDER, RETURNsubject string · null zawszeunreadCount integer zawszeorder IdRef · null zawszePola obiektu
id string zawszeoffer IdRef · null zawszePola obiektu
id string zawszecreatedAt string · date-time zawszeBłędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 404 | NOT_FOUND | Nie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama). |
| 413 | PAYLOAD_TOO_LARGE | Treść żądania za duża (JSON 5 MB, faktura PDF 3 MB). |
| 415 | UNSUPPORTED_MEDIA_TYPE | Zły Content-Type treści. |
| 422 | JsonMappingException | Treść nie jest poprawnym JSON albo ma zły kształt (np. images jako obiekty). |
| 422 | UnknownJSONProperty | Pole nieznane w tym miejscu (path wskazuje które). |
| 422 | VALIDATION_ERROR | Zła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce. |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
curl -sS -X PUT "${ALLEE_API_URL:-https://api.allee.pl}/messaging/threads/900000001/read" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.public.v1+json" \
-H "Content-Type: application/vnd.allegro.public.v1+json" \
--data-binary @- \
-w '\nHTTP %{http_code}\n' <<'JSON'
{
"read": true
}
JSON<?php
// allee API: PUT /messaging/threads/900000001/read (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$body = [
'read' => true,
];
$ch = curl_init($base . '/messaging/threads/900000001/read');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.public.v1+json',
'Content-Type: application/vnd.allegro.public.v1+json',
],
CURLOPT_POSTFIELDS => json_encode($body, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: PUT /messaging/threads/900000001/read (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.public.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
}
body = {
"read": True,
}
r = requests.request("PUT", BASE + "/messaging/threads/900000001/read", headers=headers, json=body, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: PUT /messaging/threads/900000001/read (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const body = {
"read": true
};
const res = await fetch(`${BASE}/messaging/threads/900000001/read`, {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.public.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
},
body: JSON.stringify(body),
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: PUT /messaging/threads/900000001/read (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("PUT"), baseUrl + "/messaging/threads/900000001/read");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.public.v1+json");
var json = """
{
"read": true
}
""";
req.Content = new StringContent(json, Encoding.UTF8);
req.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.allegro.public.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: PUT /messaging/threads/900000001/read (Java 11+, java.net.http; uruchom: java Main.java)
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 base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
String body = """
{
"read": true
}
""";
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/messaging/threads/900000001/read"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.public.v1+json")
.header("Content-Type", "application/vnd.allegro.public.v1+json")
.method("PUT", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: PUT /messaging/threads/900000001/read (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
body := `{
"read": true
}`
req, err := http.NewRequest("PUT", base+"/messaging/threads/900000001/read", strings.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.public.v1+json")
req.Header.Set("Content-Type", "application/vnd.allegro.public.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.public.v1+json{
"id": "900000001",
"read": true,
"lastMessageDateTime": "2026-11-10T11:10:05.492Z",
"interlocutor": {
"login": "kupujacy_demo_4816f227",
"avatarUrl": null
},
"allee": {
"kind": "QUESTION",
"subject": "Pytanie o ofertę",
"unreadCount": 0,
"order": null,
"offer": {
"id": "900000000000021"
},
"createdAt": "2026-11-10T11:10:05.478Z"
}
}Wiadomości wątku
GET /messaging/threads/{threadId}/messages
Allegro + rozszerzeniaallegro:api:messaging:readlimit: read
Najnowsza pierwsza.
Zgodność: zgodna z Allegro REST API, z rozszerzeniami allee (pola allee.*, alleeId) — GET /messaging/threads/{threadId}/messages.
Uprawnienie: zakres allegro:api:messaging:read.
Grupa limitu: read.
Parametry ścieżki
threadId string wymaganyIdentyfikator wątku.
Parametry zapytania
offset integerIle pozycji pominąć.
limit integerIle pozycji zwrócić (1–20, domyślnie 20).
before string · date-timeWysłane przed.
after string · date-timeWysłane po.
Odpowiedzi
200 Wiadomości. · MessageList
messages array<Message> zawszePola obiektu
id string zawszestatus string zawszeDELIVEREDtype string zawszeASK_QUESTION, MESSAGE_CENTERcreatedAt string · date-time zawszethread IdRef zawszeOdwołanie po identyfikatorze.
Pola obiektu
id string zawszeauthor object zawszePola obiektu
login string zawszeisInterlocutor boolean zawszetrue = napisał kupujący.
text string zawszesubject string · null zawszerelatesTo object zawszePola obiektu
offer IdRef · null zawszePola obiektu
id string zawszeorder IdRef · null zawszePola obiektu
id string zawszehasAdditionalAttachments boolean zawszeattachments array<object> zawszeZawsze puste (allee bez załączników).
allee object zawszePola obiektu
sender string zawszeBUYER, SELLER, SYSTEMreported boolean zawszeZgłoszona do moderacji.
offset integer zawszelimit integer zawszeBłędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 400 | VALIDATION_ERROR | Zła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce. |
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 404 | NOT_FOUND | Nie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama). |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/messaging/threads/900000001/messages?limit=20" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.public.v1+json" \
-w '\nHTTP %{http_code}\n'<?php
// allee API: GET /messaging/threads/900000001/messages (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$ch = curl_init($base . '/messaging/threads/900000001/messages?limit=20');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.public.v1+json',
],
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: GET /messaging/threads/900000001/messages (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.public.v1+json",
}
r = requests.request("GET", BASE + "/messaging/threads/900000001/messages?limit=20", headers=headers, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: GET /messaging/threads/900000001/messages (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const res = await fetch(`${BASE}/messaging/threads/900000001/messages?limit=20`, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.public.v1+json",
},
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: GET /messaging/threads/900000001/messages (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("GET"), baseUrl + "/messaging/threads/900000001/messages?limit=20");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.public.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: GET /messaging/threads/900000001/messages (Java 11+, java.net.http; uruchom: java Main.java)
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 base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/messaging/threads/900000001/messages?limit=20"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.public.v1+json")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: GET /messaging/threads/900000001/messages (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
req, err := http.NewRequest("GET", base+"/messaging/threads/900000001/messages?limit=20", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.public.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.public.v1+json{
"messages": [
{
"id": "900000001",
"status": "DELIVERED",
"type": "ASK_QUESTION",
"createdAt": "2026-11-10T11:10:05.479Z",
"thread": {
"id": "900000001"
},
"author": {
"login": "kupujacy_demo_4816f227",
"isInterlocutor": true
},
"text": "Czy płyta ma polski lektor?",
"subject": null,
"relatesTo": {
"offer": {
"id": "900000000000021"
},
"order": null
},
"hasAdditionalAttachments": false,
"attachments": [],
"allee": {
"sender": "BUYER",
"reported": false
}
}
],
"offset": 0,
"limit": 20
}Odpowiedź w wątku
POST /messaging/threads/{threadId}/messages
zgodna z Allegroallegro:api:messaging:writelimit: write
Wysłanie odpowiedzi oznacza wątek jako przeczytany.
Treść: bez linków zewnętrznych (422 EXTERNAL_LINK), filtr jak w panelu, najwyżej 20 wiadomości na godzinę wspólnie z panelem (429 MESSAGE_LIMIT). Bez załączników.
Zgodność: zgodna z Allegro REST API (ten sam kształt) — POST /messaging/threads/{threadId}/messages.
Uprawnienie: zakres allegro:api:messaging:write.
Grupa limitu: write.
Parametry ścieżki
threadId string wymaganyIdentyfikator wątku.
Nagłówki
Idempotency-Key stringOchrona przed podwójnym wykonaniem (jak Stripe/Amazon): powtórzony POST z tym samym kluczem i tą samą treścią w ciągu 24 h zwraca zapisaną odpowiedź z nagłówkiem Idempotent-Replayed: true i niczego nie wykonuje drugi raz. Inna treść → 422 IDEMPOTENCY_KEY_REUSED; żądanie jeszcze trwa → 409 IDEMPOTENCY_KEY_IN_USE. 1–100 znaków ASCII (np. UUID).
Treść żądania application/vnd.allegro.public.v1+json
text string wymaganeTreść (bez linków zewnętrznych; limit 20 wiadomości na godzinę).
attachments array<object>Tylko pusta lista.
Odpowiedzi
201 Wysłano. · Message
id string zawszestatus string zawszeDELIVEREDtype string zawszeASK_QUESTION, MESSAGE_CENTERcreatedAt string · date-time zawszethread IdRef zawszeOdwołanie po identyfikatorze.
Pola obiektu
id string zawszeauthor object zawszePola obiektu
login string zawszeisInterlocutor boolean zawszetrue = napisał kupujący.
text string zawszesubject string · null zawszerelatesTo object zawszePola obiektu
offer IdRef · null zawszePola obiektu
id string zawszeorder IdRef · null zawszePola obiektu
id string zawszehasAdditionalAttachments boolean zawszeattachments array<object> zawszeZawsze puste (allee bez załączników).
allee object zawszePola obiektu
sender string zawszeBUYER, SELLER, SYSTEMreported boolean zawszeZgłoszona do moderacji.
Błędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 404 | NOT_FOUND | Nie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama). |
| 413 | PAYLOAD_TOO_LARGE | Treść żądania za duża (JSON 5 MB, faktura PDF 3 MB). |
| 415 | UNSUPPORTED_MEDIA_TYPE | Zły Content-Type treści. |
| 422 | ATTACHMENTS_NOT_SUPPORTED | allee nie przyjmuje załączników w wiadomościach. |
| 422 | CARD_DATA | Treść wygląda na dane karty płatniczej. |
| 422 | EXTERNAL_LINK | Treść zawiera link spoza allee.pl. |
| 422 | JsonMappingException | Treść nie jest poprawnym JSON albo ma zły kształt (np. images jako obiekty). |
| 422 | PROFANITY | Wulgaryzmy. |
| 422 | SENSITIVE_REQUEST | Prośba o dane wrażliwe (hasła, dane logowania). |
| 422 | TEXT_EMPTY | Pusta treść. |
| 422 | TEXT_INVALID | Treść niedozwolona przez filtr. |
| 422 | TEXT_TOO_LONG | Treść za długa. |
| 422 | VALIDATION_ERROR | Zła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce. |
| 429 | BUSY | Ta sama operacja trwa równolegle. |
| 429 | MESSAGE_LIMIT | 20 wiadomości na godzinę (wspólnie z panelem). |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
curl -sS -X POST "${ALLEE_API_URL:-https://api.allee.pl}/messaging/threads/900000001/messages" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.public.v1+json" \
-H "Content-Type: application/vnd.allegro.public.v1+json" \
--data-binary @- \
-w '\nHTTP %{http_code}\n' <<'JSON'
{
"text": "Dzień dobry, tak — wydanie ma polskiego lektora i napisy."
}
JSON<?php
// allee API: POST /messaging/threads/900000001/messages (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$body = [
'text' => 'Dzień dobry, tak — wydanie ma polskiego lektora i napisy.',
];
$ch = curl_init($base . '/messaging/threads/900000001/messages');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.public.v1+json',
'Content-Type: application/vnd.allegro.public.v1+json',
],
CURLOPT_POSTFIELDS => json_encode($body, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: POST /messaging/threads/900000001/messages (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.public.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
}
body = {
"text": "Dzień dobry, tak — wydanie ma polskiego lektora i napisy.",
}
r = requests.request("POST", BASE + "/messaging/threads/900000001/messages", headers=headers, json=body, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: POST /messaging/threads/900000001/messages (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const body = {
"text": "Dzień dobry, tak — wydanie ma polskiego lektora i napisy."
};
const res = await fetch(`${BASE}/messaging/threads/900000001/messages`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.public.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
},
body: JSON.stringify(body),
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: POST /messaging/threads/900000001/messages (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("POST"), baseUrl + "/messaging/threads/900000001/messages");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.public.v1+json");
var json = """
{
"text": "Dzień dobry, tak — wydanie ma polskiego lektora i napisy."
}
""";
req.Content = new StringContent(json, Encoding.UTF8);
req.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.allegro.public.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: POST /messaging/threads/900000001/messages (Java 11+, java.net.http; uruchom: java Main.java)
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 base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
String body = """
{
"text": "Dzień dobry, tak — wydanie ma polskiego lektora i napisy."
}
""";
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/messaging/threads/900000001/messages"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.public.v1+json")
.header("Content-Type", "application/vnd.allegro.public.v1+json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: POST /messaging/threads/900000001/messages (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
body := `{
"text": "Dzień dobry, tak — wydanie ma polskiego lektora i napisy."
}`
req, err := http.NewRequest("POST", base+"/messaging/threads/900000001/messages", strings.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.public.v1+json")
req.Header.Set("Content-Type", "application/vnd.allegro.public.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.public.v1+json{
"id": "900000002",
"status": "DELIVERED",
"type": "ASK_QUESTION",
"createdAt": "2026-11-10T11:10:05.492Z",
"thread": {
"id": "900000001"
},
"author": {
"login": "sklep_przykladowy_0e60e9",
"isInterlocutor": false
},
"text": "Dzień dobry, tak — wydanie ma polskiego lektora i napisy.",
"subject": null,
"relatesTo": {
"offer": {
"id": "900000000000021"
},
"order": null
},
"hasAdditionalAttachments": false,
"attachments": [],
"allee": {
"sender": "SELLER",
"reported": false
}
}Nowa rozmowa w sprawie zamówienia
POST /messaging/messages
Allegro + rozszerzeniaallegro:api:messaging:writelimit: write
Na allee.pl sprzedawca zaczyna rozmowę tylko w sprawie zamówienia allee.pl (order.id). Najwyżej 5 nowych rozmów na dobę (429 THREAD_LIMIT).
Treść: bez linków zewnętrznych (422 EXTERNAL_LINK), filtr jak w panelu, najwyżej 20 wiadomości na godzinę wspólnie z panelem (429 MESSAGE_LIMIT). Bez załączników.
Zgodność: zgodna z Allegro REST API, z rozszerzeniami allee (pola allee.*, alleeId) — POST /messaging/messages.
Uprawnienie: zakres allegro:api:messaging:write.
Grupa limitu: write.
Nagłówki
Idempotency-Key stringOchrona przed podwójnym wykonaniem (jak Stripe/Amazon): powtórzony POST z tym samym kluczem i tą samą treścią w ciągu 24 h zwraca zapisaną odpowiedź z nagłówkiem Idempotent-Replayed: true i niczego nie wykonuje drugi raz. Inna treść → 422 IDEMPOTENCY_KEY_REUSED; żądanie jeszcze trwa → 409 IDEMPOTENCY_KEY_IN_USE. 1–100 znaków ASCII (np. UUID).
Treść żądania application/vnd.allegro.public.v1+json
text string wymaganeorder IdRef wymaganeZamówienie allee.pl (checkoutForm.id) — nową rozmowę sprzedawca zaczyna tylko w sprawie zamówienia.
Pola obiektu
id string wymaganerecipient objectPola obiektu
login string wymaganeLogin kupującego (sprawdzany).
attachments array<object>Odpowiedzi
201 Wysłano. · Message
id string zawszestatus string zawszeDELIVEREDtype string zawszeASK_QUESTION, MESSAGE_CENTERcreatedAt string · date-time zawszethread IdRef zawszeOdwołanie po identyfikatorze.
Pola obiektu
id string zawszeauthor object zawszePola obiektu
login string zawszeisInterlocutor boolean zawszetrue = napisał kupujący.
text string zawszesubject string · null zawszerelatesTo object zawszePola obiektu
offer IdRef · null zawszePola obiektu
id string zawszeorder IdRef · null zawszePola obiektu
id string zawszehasAdditionalAttachments boolean zawszeattachments array<object> zawszeZawsze puste (allee bez załączników).
allee object zawszePola obiektu
sender string zawszeBUYER, SELLER, SYSTEMreported boolean zawszeZgłoszona do moderacji.
Błędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 404 | NOT_FOUND | Nie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama). |
| 413 | PAYLOAD_TOO_LARGE | Treść żądania za duża (JSON 5 MB, faktura PDF 3 MB). |
| 415 | UNSUPPORTED_MEDIA_TYPE | Zły Content-Type treści. |
| 422 | CARD_DATA | Treść wygląda na dane karty płatniczej. |
| 422 | CHANNEL_MESSAGING | Zamówienie z innego kanału sprzedaży. |
| 422 | EXTERNAL_LINK | Treść zawiera link spoza allee.pl. |
| 422 | JsonMappingException | Treść nie jest poprawnym JSON albo ma zły kształt (np. images jako obiekty). |
| 422 | ORDER_REQUIRED | Nową rozmowę sprzedawca zaczyna tylko w sprawie zamówienia. |
| 422 | PROFANITY | Wulgaryzmy. |
| 422 | RECIPIENT_MISMATCH | recipient.login nie jest kupującym zamówienia. |
| 422 | SENSITIVE_REQUEST | Prośba o dane wrażliwe (hasła, dane logowania). |
| 422 | TEXT_EMPTY | Pusta treść. |
| 422 | TEXT_INVALID | Treść niedozwolona przez filtr. |
| 422 | TEXT_TOO_LONG | Treść za długa. |
| 422 | VALIDATION_ERROR | Zła wartość parametru zapytania (400) albo pola treści (422); path wskazuje miejsce. |
| 429 | BUSY | Ta sama operacja trwa równolegle. |
| 429 | MESSAGE_LIMIT | 20 wiadomości na godzinę (wspólnie z panelem). |
| 429 | THREAD_LIMIT | 5 nowych rozmów na dobę. |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
curl -sS -X POST "${ALLEE_API_URL:-https://api.allee.pl}/messaging/messages" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.public.v1+json" \
-H "Content-Type: application/vnd.allegro.public.v1+json" \
--data-binary @- \
-w '\nHTTP %{http_code}\n' <<'JSON'
{
"recipient": {
"login": "kupujacy_demo_4816f227"
},
"text": "Dziękujemy za zamówienie — wyślemy je dziś.",
"order": {
"id": "432810d0-4d26-4f39-ba5f-b89def4d4f92"
}
}
JSON<?php
// allee API: POST /messaging/messages (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$body = [
'recipient' => [
'login' => 'kupujacy_demo_4816f227',
],
'text' => 'Dziękujemy za zamówienie — wyślemy je dziś.',
'order' => [
'id' => '432810d0-4d26-4f39-ba5f-b89def4d4f92',
],
];
$ch = curl_init($base . '/messaging/messages');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.public.v1+json',
'Content-Type: application/vnd.allegro.public.v1+json',
],
CURLOPT_POSTFIELDS => json_encode($body, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: POST /messaging/messages (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.public.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
}
body = {
"recipient": {
"login": "kupujacy_demo_4816f227",
},
"text": "Dziękujemy za zamówienie — wyślemy je dziś.",
"order": {
"id": "432810d0-4d26-4f39-ba5f-b89def4d4f92",
},
}
r = requests.request("POST", BASE + "/messaging/messages", headers=headers, json=body, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: POST /messaging/messages (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const body = {
"recipient": {
"login": "kupujacy_demo_4816f227"
},
"text": "Dziękujemy za zamówienie — wyślemy je dziś.",
"order": {
"id": "432810d0-4d26-4f39-ba5f-b89def4d4f92"
}
};
const res = await fetch(`${BASE}/messaging/messages`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.public.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
},
body: JSON.stringify(body),
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: POST /messaging/messages (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("POST"), baseUrl + "/messaging/messages");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.public.v1+json");
var json = """
{
"recipient": {
"login": "kupujacy_demo_4816f227"
},
"text": "Dziękujemy za zamówienie — wyślemy je dziś.",
"order": {
"id": "432810d0-4d26-4f39-ba5f-b89def4d4f92"
}
}
""";
req.Content = new StringContent(json, Encoding.UTF8);
req.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.allegro.public.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: POST /messaging/messages (Java 11+, java.net.http; uruchom: java Main.java)
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 base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
String body = """
{
"recipient": {
"login": "kupujacy_demo_4816f227"
},
"text": "Dziękujemy za zamówienie — wyślemy je dziś.",
"order": {
"id": "432810d0-4d26-4f39-ba5f-b89def4d4f92"
}
}
""";
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/messaging/messages"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.public.v1+json")
.header("Content-Type", "application/vnd.allegro.public.v1+json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: POST /messaging/messages (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
body := `{
"recipient": {
"login": "kupujacy_demo_4816f227"
},
"text": "Dziękujemy za zamówienie — wyślemy je dziś.",
"order": {
"id": "432810d0-4d26-4f39-ba5f-b89def4d4f92"
}
}`
req, err := http.NewRequest("POST", base+"/messaging/messages", strings.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.public.v1+json")
req.Header.Set("Content-Type", "application/vnd.allegro.public.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.public.v1+json{
"id": "900000003",
"status": "DELIVERED",
"type": "MESSAGE_CENTER",
"createdAt": "2026-11-10T11:10:05.504Z",
"thread": {
"id": "900000002"
},
"author": {
"login": "sklep_przykladowy_0e60e9",
"isInterlocutor": false
},
"text": "Dziękujemy za zamówienie — wyślemy je dziś.",
"subject": null,
"relatesTo": {
"offer": null,
"order": {
"id": "432810d0-4d26-4f39-ba5f-b89def4d4f92"
}
},
"hasAdditionalAttachments": false,
"attachments": [],
"allee": {
"sender": "SELLER",
"reported": false
}
}Wiadomość
GET /messaging/messages/{messageId}
zgodna z Allegroallegro:api:messaging:readlimit: read
Jedna wiadomość (np. po powiadomieniu MESSAGE_RECEIVED).
Zgodność: zgodna z Allegro REST API (ten sam kształt) — GET /messaging/messages/{messageId}.
Uprawnienie: zakres allegro:api:messaging:read.
Grupa limitu: read.
Parametry ścieżki
messageId string wymaganyIdentyfikator wiadomości.
Odpowiedzi
200 Wiadomość. · Message
id string zawszestatus string zawszeDELIVEREDtype string zawszeASK_QUESTION, MESSAGE_CENTERcreatedAt string · date-time zawszethread IdRef zawszeOdwołanie po identyfikatorze.
Pola obiektu
id string zawszeauthor object zawszePola obiektu
login string zawszeisInterlocutor boolean zawszetrue = napisał kupujący.
text string zawszesubject string · null zawszerelatesTo object zawszePola obiektu
offer IdRef · null zawszePola obiektu
id string zawszeorder IdRef · null zawszePola obiektu
id string zawszehasAdditionalAttachments boolean zawszeattachments array<object> zawszeZawsze puste (allee bez załączników).
allee object zawszePola obiektu
sender string zawszeBUYER, SELLER, SYSTEMreported boolean zawszeZgłoszona do moderacji.
Błędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 404 | NOT_FOUND | Nie ma takiego zasobu (albo należy do innego sprzedawcy — dla wątków, zwrotów i spraw odpowiedź jest ta sama). |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
curl -sS -X GET "${ALLEE_API_URL:-https://api.allee.pl}/messaging/messages/900000002" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.public.v1+json" \
-w '\nHTTP %{http_code}\n'<?php
// allee API: GET /messaging/messages/900000002 (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$ch = curl_init($base . '/messaging/messages/900000002');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.public.v1+json',
],
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: GET /messaging/messages/900000002 (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.public.v1+json",
}
r = requests.request("GET", BASE + "/messaging/messages/900000002", headers=headers, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: GET /messaging/messages/900000002 (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const res = await fetch(`${BASE}/messaging/messages/900000002`, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.public.v1+json",
},
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: GET /messaging/messages/900000002 (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("GET"), baseUrl + "/messaging/messages/900000002");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.public.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: GET /messaging/messages/900000002 (Java 11+, java.net.http; uruchom: java Main.java)
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 base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/messaging/messages/900000002"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.public.v1+json")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: GET /messaging/messages/900000002 (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
req, err := http.NewRequest("GET", base+"/messaging/messages/900000002", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.public.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.public.v1+json{
"id": "900000002",
"status": "DELIVERED",
"type": "ASK_QUESTION",
"createdAt": "2026-11-10T11:10:05.492Z",
"thread": {
"id": "900000001"
},
"author": {
"login": "sklep_przykladowy_0e60e9",
"isInterlocutor": false
},
"text": "Dzień dobry, tak — wydanie ma polskiego lektora i napisy.",
"subject": null,
"relatesTo": {
"offer": {
"id": "900000000000021"
},
"order": null
},
"hasAdditionalAttachments": false,
"attachments": [],
"allee": {
"sender": "SELLER",
"reported": false
}
}Załącznik wiadomości (nieobsługiwany)
POST /messaging/message-attachments
zgodna z Allegroallegro:api:messaging:writelimit: write
allee nie przyjmuje załączników w wiadomościach — zawsze 422 ATTACHMENTS_NOT_SUPPORTED. Trasa istnieje, by klient Allegro dostał czytelny błąd zamiast 404.
Zgodność: zgodna z Allegro REST API (ten sam kształt) — POST /messaging/message-attachments.
Uprawnienie: zakres allegro:api:messaging:write.
Grupa limitu: write.
Nagłówki
Idempotency-Key stringOchrona przed podwójnym wykonaniem (jak Stripe/Amazon): powtórzony POST z tym samym kluczem i tą samą treścią w ciągu 24 h zwraca zapisaną odpowiedź z nagłówkiem Idempotent-Replayed: true i niczego nie wykonuje drugi raz. Inna treść → 422 IDEMPOTENCY_KEY_REUSED; żądanie jeszcze trwa → 409 IDEMPOTENCY_KEY_IN_USE. 1–100 znaków ASCII (np. UUID).
Treść żądania application/vnd.allegro.public.v1+json
Typ: object
Odpowiedzi
Błędy
| HTTP | Kod | Znaczenie |
|---|---|---|
| 401 | invalid_token | Brak, zły, wygasły albo odwołany token lub klucz (format OAuth, nagłówek WWW-Authenticate). |
| 403 | ACCOUNT_INACTIVE | Konto sprzedawcy jest nieaktywne. |
| 403 | AccessDenied | Brak zakresu albo zasób innego sprzedawcy. |
| 403 | KEY_QUARANTINED | Kwarantanna: działa tylko odczyt (wykryto nietypowe użycie). |
| 403 | KEY_SUSPENDED | Klucz albo dostęp aplikacji wstrzymany (przez sprzedawcę albo ochronę). |
| 413 | PAYLOAD_TOO_LARGE | Treść żądania za duża (JSON 5 MB, faktura PDF 3 MB). |
| 415 | UNSUPPORTED_MEDIA_TYPE | Zły Content-Type treści. |
| 422 | ATTACHMENTS_NOT_SUPPORTED | allee nie przyjmuje załączników w wiadomościach. |
| 422 | JsonMappingException | Treść nie jest poprawnym JSON albo ma zły kształt (np. images jako obiekty). |
| 429 | TOO_MANY_REQUESTS | Przekroczony limit (minutowy, grupy operacji albo IP). |
| 500 | INTERNAL_ERROR | Błąd serwera allee. |
curl -sS -X POST "${ALLEE_API_URL:-https://api.allee.pl}/messaging/message-attachments" \
-H "Authorization: Bearer $ALLEE_API_KEY" \
-H "Accept: application/vnd.allegro.public.v1+json" \
-H "Content-Type: application/vnd.allegro.public.v1+json" \
--data-binary @- \
-w '\nHTTP %{http_code}\n' <<'JSON'
{
"filename": "zdjecie.jpg",
"size": 102400
}
JSON<?php
// allee API: POST /messaging/message-attachments (PHP 8, rozszerzenie curl)
$base = getenv('ALLEE_API_URL') ?: 'https://api.allee.pl';
$body = [
'filename' => 'zdjecie.jpg',
'size' => 102400,
];
$ch = curl_init($base . '/messaging/message-attachments');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('ALLEE_API_KEY'),
'Accept: application/vnd.allegro.public.v1+json',
'Content-Type: application/vnd.allegro.public.v1+json',
],
CURLOPT_POSTFIELDS => json_encode($body, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
CURLOPT_RETURNTRANSFER => true,
]);
$odp = curl_exec($ch);
echo 'HTTP ', curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $odp, "\n";# allee API: POST /messaging/message-attachments (Python 3, biblioteka requests)
import os
import requests
BASE = os.environ.get("ALLEE_API_URL", "https://api.allee.pl")
headers = {
"Authorization": "Bearer " + os.environ["ALLEE_API_KEY"],
"Accept": "application/vnd.allegro.public.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
}
body = {
"filename": "zdjecie.jpg",
"size": 102400,
}
r = requests.request("POST", BASE + "/messaging/message-attachments", headers=headers, json=body, timeout=60, allow_redirects=False)
print("HTTP", r.status_code)
print(r.text)// allee API: POST /messaging/message-attachments (Node.js 18+, wbudowany fetch; plik .mjs)
const BASE = process.env.ALLEE_API_URL ?? "https://api.allee.pl";
const body = {
"filename": "zdjecie.jpg",
"size": 102400
};
const res = await fetch(`${BASE}/messaging/message-attachments`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ALLEE_API_KEY}`,
"Accept": "application/vnd.allegro.public.v1+json",
"Content-Type": "application/vnd.allegro.public.v1+json",
},
body: JSON.stringify(body),
redirect: "manual",
});
console.log("HTTP", res.status);
console.log(await res.text());// allee API: POST /messaging/message-attachments (C#, .NET 8+, HttpClient)
using System.Net.Http.Headers;
using System.Text;
var baseUrl = Environment.GetEnvironmentVariable("ALLEE_API_URL") ?? "https://api.allee.pl";
using var http = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false });
using var req = new HttpRequestMessage(new HttpMethod("POST"), baseUrl + "/messaging/message-attachments");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ALLEE_API_KEY"));
req.Headers.Accept.ParseAdd("application/vnd.allegro.public.v1+json");
var json = """
{
"filename": "zdjecie.jpg",
"size": 102400
}
""";
req.Content = new StringContent(json, Encoding.UTF8);
req.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.allegro.public.v1+json");
using var res = await http.SendAsync(req);
Console.WriteLine($"HTTP {(int)res.StatusCode}");
Console.WriteLine(await res.Content.ReadAsStringAsync());// allee API: POST /messaging/message-attachments (Java 11+, java.net.http; uruchom: java Main.java)
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 base = System.getenv().getOrDefault("ALLEE_API_URL", "https://api.allee.pl");
String body = """
{
"filename": "zdjecie.jpg",
"size": 102400
}
""";
HttpRequest req = HttpRequest.newBuilder(URI.create(base + "/messaging/message-attachments"))
.header("Authorization", "Bearer " + System.getenv("ALLEE_API_KEY"))
.header("Accept", "application/vnd.allegro.public.v1+json")
.header("Content-Type", "application/vnd.allegro.public.v1+json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpClient http = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> res = http.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println("HTTP " + res.statusCode());
System.out.println(res.body());
}
}// allee API: POST /messaging/message-attachments (Go 1.20+, net/http; uruchom: go run main.go)
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
base := os.Getenv("ALLEE_API_URL")
if base == "" {
base = "https://api.allee.pl"
}
body := `{
"filename": "zdjecie.jpg",
"size": 102400
}`
req, err := http.NewRequest("POST", base+"/messaging/message-attachments", strings.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("ALLEE_API_KEY"))
req.Header.Set("Accept", "application/vnd.allegro.public.v1+json")
req.Header.Set("Content-Type", "application/vnd.allegro.public.v1+json")
klient := &http.Client{CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
res, err := klient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
dane, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println("HTTP", res.StatusCode)
fmt.Println(string(dane))
}application/vnd.allegro.public.v1+json{
"errors": [
{
"code": "ATTACHMENTS_NOT_SUPPORTED",
"message": "allee nie przyjmuje załączników w wiadomościach — wyślij sam tekst.",
"details": null,
"path": null,
"userMessage": "Załączniki w wiadomościach nie są dostępne na allee.pl."
}
]
}