Notion AI v roce 2026: Jak využít autonomní agenty pro týmovou produktivitu
Notion Custom Agents běží 24/7 a zvládají Q&A, triaging i reporting. Kompletní průvodce aktuálními funkcemi, cenami a praktickým nastavením pro české týmy.
Fakturoid API v3 prakticky: OAuth2, faktury, párování plateb, webhooky, příklady v PHP a Make/n8n. Včetně alternativ a kdy zvolit jiný nástroj.
Fakturoid je druhý největší SaaS fakturační software v České republice s více než 30 000 aktivními uživateli. API v3, vydané v dubnu 2024, přináší moderní OAuth 2.0 autentizaci, vylepšené webhooky a nové možnosti automatizace. V tomto průvodci vám ukážeme, jak Fakturoid API v3 integrovat do vašeho systému — od základního nastavení až po pokročilé scénáře.
Ruční fakturace je časově náročná a náchylná k chybám. S Fakturoid API můžete:
Přechod z API v2 na v3 přináší hlavně bezpečnější autentizaci přes OAuth 2.0 (místo API klíče) a stabilnější webhook systém.
| Parametr | Hodnota |
|---|---|
| Base URL | https://app.fakturoid.cz/api/v3 |
| Autentizace | OAuth 2.0 (Authorization Code flow) |
| Rate limit | 3 000 požadavků/měsíc |
| Protokol | HTTPS only |
| Formát | JSON |
| Dokumentace | fakturoid.cz/api/v3 |
OAuth 2.0 je základem pro práci s Fakturoid API v3. Zde je kompletní postup od registrace aplikace až po získání přístupového tokenu.
https://vase-domena.cz/callback)Přesměrujte uživatele na autorizační endpoint:
https://app.fakturoid.cz/api/v3/oauth/authorize
?client_id={CLIENT_ID}
&redirect_uri={REDIRECT_URI}
&response_type=code
&scope=read write
Po souhlasu uživatele Fakturoid přesměruje zpět na vaši redirect_uri s parametrem code.
curl -X POST https://app.fakturoid.cz/api/v3/oauth/token \
-H "Content-Type: application/json" \
-d '{
"grant_type": "authorization_code",
"code": "AUTORIZACNI_KOD",
"client_id": "VAS_CLIENT_ID",
"client_secret": "VAS_CLIENT_SECRET",
"redirect_uri": "https://vase-domena.cz/callback"
}'
Odpověď obsahuje access_token a refresh_token. Access token vyprší typicky za hodinu.
Token je třeba pravidelně obnovovat. Implementujte automatický refresh:
curl -X POST https://app.fakturoid.cz/api/v3/oauth/token \
-H "Content-Type: application/json" \
-d '{
"grant_type": "refresh_token",
"refresh_token": "VAS_REFRESH_TOKEN",
"client_id": "VAS_CLIENT_ID",
"client_secret": "VAS_CLIENT_SECRET"
}'
Důležité: Vždy uložte nový refresh token z odpovědi — starý už nebude fungovat.
Základní operace s fakturami:
GET /api/v3/{slug}/invoices.json # Seznam faktur
POST /api/v3/{slug}/invoices.json # Vytvoření faktury
GET /api/v3/{slug}/invoices/{id}.json # Detail faktury
PATCH /api/v3/{slug}/invoices/{id}.json # Úprava faktury
DELETE /api/v3/{slug}/invoices/{id}.json # Smazání faktury
Příklad vytvoření faktury:
{
"subject_id": 123,
"due_date": "2026-02-15",
"currency": "CZK",
"payment_method": "bank",
"lines": [
{
"name": "Webový vývoj - leden 2026",
"quantity": 40,
"unit_name": "hod",
"unit_price": 1500,
"vat_rate": 21
},
{
"name": "Hosting a správa serveru",
"quantity": 1,
"unit_price": 2000,
"vat_rate": 21
}
]
}
GET /api/v3/{slug}/subjects.json # Seznam kontaktů
POST /api/v3/{slug}/subjects.json # Nový kontakt
GET /api/v3/{slug}/subjects/{id}.json # Detail kontaktu
PATCH /api/v3/{slug}/subjects/{id}.json # Úprava kontaktu
GET /api/v3/{slug}/invoices/{id}/events.json # Události faktury
Události zahrnují: vytvoření, odeslání, zaplacení, upomínka a další.
<?php
function createInvoice(string $token, string $slug, array $data): array
{
$ch = curl_init("https://app.fakturoid.cz/api/v3/{$slug}/invoices.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer {$token}",
"Content-Type: application/json",
"User-Agent: MojeApp ([email protected])"
],
CURLOPT_POSTFIELDS => json_encode($data)
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 201) {
throw new RuntimeException("Chyba při vytváření faktury: HTTP {$httpCode}");
}
return json_decode($response, true);
}
// Použití
$invoiceData = [
'subject_id' => 456,
'due_date' => '2026-03-01',
'lines' => [
[
'name' => 'Konzultace - březen 2026',
'quantity' => 8,
'unit_name' => 'hod',
'unit_price' => 2000,
'vat_rate' => 21
]
]
];
$invoice = createInvoice($accessToken, 'muj-ucet', $invoiceData);
echo "Faktura #{$invoice['number']} vytvořena.\n";
<?php
function refreshAccessToken(string $refreshToken, string $clientId, string $clientSecret): array
{
$ch = curl_init('https://app.fakturoid.cz/api/v3/oauth/token');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'grant_type' => 'refresh_token',
'refresh_token' => $refreshToken,
'client_id' => $clientId,
'client_secret' => $clientSecret
])
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
// Uložení nových tokenů do souboru
file_put_contents('tokens.json', json_encode($response));
return $response;
}
import requests
from datetime import datetime
class FakturoidClient:
BASE_URL = "https://app.fakturoid.cz/api/v3"
def __init__(self, slug: str, access_token: str):
self.slug = slug
self.session = requests.Session()
self.session.headers.update({
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json",
"User-Agent": "MojeApp ([email protected])"
})
def list_invoices(self, page: int = 1) -> list:
\"\"\"Načte seznam faktur s paginací.\"\"\"
resp = self.session.get(
f"{self.BASE_URL}/{self.slug}/invoices.json",
params={"page": page}
)
resp.raise_for_status()
return resp.json()
def create_invoice(self, subject_id: int, lines: list,
due_date: str = None, currency: str = "CZK") -> dict:
\"\"\"Vytvoří novou fakturu.\"\"\"
if due_date is None:
due_date = datetime.now().strftime("%Y-%m-%d")
data = {
"subject_id": subject_id,
"due_date": due_date,
"currency": currency,
"lines": lines
}
resp = self.session.post(
f"{self.BASE_URL}/{self.slug}/invoices.json",
json=data
)
resp.raise_for_status()
return resp.json()
def get_invoice(self, invoice_id: int) -> dict:
\"\"\"Načte detail faktury.\"\"\"
resp = self.session.get(
f"{self.BASE_URL}/{self.slug}/invoices/{invoice_id}.json"
)
resp.raise_for_status()
return resp.json()
# Použití
client = FakturoidClient("muj-ucet", "VAS_ACCESS_TOKEN")
invoices = client.list_invoices()
new_invoice = client.create_invoice(
subject_id=789,
lines=[{
"name": "SEO audit webu",
"quantity": 1,
"unit_price": 15000,
"vat_rate": 21
}],
due_date="2026-04-15"
)
print(f"Vytvořena faktura: {new_invoice['number']}")
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/webhooks/fakturoid', methods=['POST'])
def handle_webhook():
payload = request.json
event = payload.get('event')
if event == 'invoice.paid':
invoice_id = payload['invoice_id']
# Zpracování zaplacené faktury
process_paid_invoice(invoice_id)
elif event == 'invoice.overdue':
invoice_id = payload['invoice_id']
# Odeslání upomínky
send_reminder(invoice_id)
return jsonify({'status': 'ok'}), 200
Webhooky vám umožní reagovat na události v Fakturoidu okamžitě, bez nutnosti pravidelného dotazování (pollingu).
curl -X POST https://app.fakturoid.cz/api/v3/webhooks \
-H "Authorization: Bearer VAS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://vase-domena.cz/webhooks/fakturoid",
"events": ["invoice.created", "invoice.paid", "invoice.overdue"]
}'
| Událost | Kdy se spustí |
|---|---|
invoice.created |
Nová faktura vytvořena |
invoice.sent |
Faktura odeslána klientovi |
invoice.paid |
Faktura zaplacena |
invoice.overdue |
Faktura po splatnosti |
invoice.deleted |
Faktura smazána |
<?php
// webhook-handler.php
$payload = json_decode(file_get_contents('php://input'), true);
switch ($payload['event']) {
case 'invoice.paid':
$invoiceId = $payload['invoice_id'];
// Označit objednávku jako zaplacenou v e-shopu
markOrderAsPaid($invoiceId);
// Poslat potvrzení zákazníkovi
sendPaymentConfirmation($invoiceId);
break;
case 'invoice.overdue':
$invoiceId = $payload['invoice_id'];
// Odeslat upomínku
sendPaymentReminder($invoiceId);
// Notifikovat obchodní oddělení přes Slack
notifySlack("Faktura #{$invoiceId} je po splatnosti!");
break;
}
http_response_code(200);
echo json_encode(['status' => 'ok']);
Vždy ověřujte, že webhook skutečně pochází z Fakturoidu:
Příčina: Expirovaný nebo neplatný access token.
Řešení:
Authorization: Bearer {token}Příčina: Chybné nebo chybějící povinné parametry.
Řešení:
subject_id odkazuje na existující kontaktYYYY-MM-DD)name a unit_pricePříčina: Překročen měsíční rate limit 3 000 požadavků.
Řešení:
X-RateLimit-RemainingPříčina: Firewall blokuje příchozí spojení nebo neplatný SSL certifikát.
Řešení:
Příčina: Použití starého refresh tokenu.
Řešení:
Vytvořte scénář, který automaticky vystavuje faktury:
https://app.fakturoid.cz/api/v3/{slug}/invoices.jsonAuthorization: Bearer {token}Tip: Použijte Make.com Data Store pro uložení tokenu a automatický refresh.
n8n nabízí plnou kontrolu nad workflow:
// n8n HTTP Request node konfigurace
{
"method": "POST",
"url": "https://app.fakturoid.cz/api/v3/{{$node.Config.slug}}/invoices.json",
"authentication": "genericCredentialType",
"genericAuthType": "oAuth2Api",
"options": {
"timeout": 10000
}
}
Výhody n8n oproti Make.com:
read pokud nepotřebujete zapisovatAPI je součástí vašeho Fakturoid tarifu bez příplatku. V ceně je 3 000 API požadavků měsíčně. Pro vyšší objemy kontaktujte podporu Fakturoidu.
Ano, API je dostupné i na bezplatném tarifu, ale s omezeným počtem faktur (5 měsíčně). Pro seriózní automatizaci doporučujeme placený tarif.
Hlavní změna je přechod z API klíče na OAuth 2.0. Endpointy a datové struktury zůstávají z velké části kompatibilní. Doporučujeme:
Fakturoid nabízí testovací účty. Vytvořte si nový účet s označením "test" a použijte ho pro vývoj a testování. Všechny operace na testovacím účtu jsou oddělené od produkce.
Sledujte response header X-RateLimit-Remaining. Nastavte si alert, když hodnota klesne pod 500 požadavků. Implementujte caching a snižte frekvenci pollingu.
Fakturoid API v3 je robustní nástroj pro automatizaci fakturace v českém prostředí. Klíčem k úspěšné integraci je správná implementace OAuth 2.0, respektování rate limitů a využití webhooků pro real-time notifikace.
Doporučený postup pro začátek:
Díky správné integraci s Fakturoid API ušetříte hodiny práce měsíčně a minimalizujete riziko chyb v účetnictví.
Navštivte zacinamsai.cz — průvodce světem AI pro úplné začátečníky.
Přejít na Začínáme s AI →
Notion Custom Agents běží 24/7 a zvládají Q&A, triaging i reporting. Kompletní průvodce aktuálními funkcemi, cenami a praktickým nastavením pro české týmy.
Praktický návod jak jsem postavil AI zákaznickou podporu pro demo e-shop během dvou hodin. Kompletní workflow s Claude Sonnet 4.6, N8N a real-time testováním. Aktualizováno květen 2026.
Andrej Karpathy přestal psát kód ručně a dnes orchestruje desítky AI agentů paralelně. Aktualizovaný návod na multi-agent workflow podle nejnovějších nástrojů květen 2026.
Meta proměnila AI agenty ve firemní standard a začala je počítat do hodnocení výkonu. Jak si postavit podobný systém s nástroji, které máš k dispozici už dnes.
Nauč se postavit autonomního AI agenta v Make, který kvalifikuje leady, píše personalizované e-maily a handoffuje hotové zákazníky obchodníkovi. Bez kódu, za pár hodin, za méně než 25 dolarů měsíčně.
Představ si, že řídíš celý byznys přímo z terminálu. S novou Zapier MCP integrací pro Claude Code můžeš pracovat s 9000+ aplikacemi bez opuštění příkazové řádky. Ušetři hodiny práce týdně.
Potřebujete pomoct s AI automatizací?
Domluvte si nezávaznou konzultaci →Týdenní AI tipy přímo do mailu
Žádný spam. Odhlášení jedním klikem.