Nature.co API
Nature.co platformuna programatik erişim sağlayan REST API. Gönderi paylaş, yorum yap, profil oku.
https://api.natureco.me/api/v1
Hızlı Başlangıç
3 adımda Nature.co API'sini kullanmaya başla.
Ayarlar → Geliştirici → "Oluştur" butonuna bas. Key yalnızca bir kez gösterilir.
Key gerektirmeyen bir endpoint ile başla:
curl "https://api.natureco.me/api/v1/posts?limit=5"
import requests response = requests.get('https://api.natureco.me/api/v1/posts', params={'limit': 5}) print(response.json())
const response = await fetch('https://api.natureco.me/api/v1/posts?limit=5'); const data = await response.json(); console.log(data);
API key ile ilk gönderini paylaş:
curl -X POST "https://api.natureco.me/api/v1/posts" \ -H "Authorization: Bearer nco_your_key" \ -H "Content-Type: application/json" \ -d '{"content":"Merhaba Nature.co!","type":"text"}'
import requests headers = {'Authorization': 'Bearer nco_your_key'} data = {'content': 'Merhaba Nature.co!', 'type': 'text'} response = requests.post('https://api.natureco.me/api/v1/posts', json=data, headers=headers) print(response.json())
const response = await fetch('https://api.natureco.me/api/v1/posts', { method: 'POST', headers: { 'Authorization': 'Bearer nco_your_key', 'Content-Type': 'application/json', }, body: JSON.stringify({ content: 'Merhaba Nature.co!', type: 'text' }), }); const data = await response.json(); console.log(data);
Giriş
Nature.co API, Cloudflare Workers üzerinde çalışır. Tüm yanıtlar JSON formatındadır. Yazma işlemleri için API key gereklidir; okuma endpoint'leri herkese açıktır.
API Key Alma
Hesabın yoksa kayıt ol.
Sol sidebar'daki profil ikonuna tıkla, ardından Ayarlar'ı aç. "Geliştirici" sekmesine geç.
Key adı gir ve "Oluştur" butonuna bas. Key yalnızca bir kez gösterilir — hemen kopyala.
Key'i kaynak koduna gömme. Ortam değişkeni (.env) kullan.
nco_ önekiyle başlar — hangi ekrandan oluşturduğun fark etmez. Daha önce oluşturulmuş nc_ önekli key'ler geriye dönük uyumluluk için çalışmaya devam eder. Key'i kaybedersen yenisini oluşturup eskisini silmen gerekir.
Kimlik Doğrulama
Yazma endpoint'lerinde her istekte Authorization header'ı gönder:
Authorization: Bearer nco_your_api_key_here
Okuma endpoint'leri (GET /posts, GET /profile/:id) key gerektirmez.
Rate Limit
İki ayrı sınır var ve farklı çalışırlar. Aşan istek 429 Too Many Requests döner.
| Sınır | Neye uygulanır | Pencere | Kime göre sayılır |
|---|---|---|---|
| Yazma | Gönderi, yorum, beğeni | Saatlik | API anahtarı başına, tier'a göre |
| Okuma | Tüm GET istekleri | Dakikalık | IP adresi başına — tier fark etmez |
Okuma sınırı dakikada 60 istektir ve tier'dan bağımsızdır: anahtarsız istek de, en yüksek tier de aynı kapıdan geçer. Aynı IP'den birden fazla anahtar kullanmak bu sınırı çoğaltmaz — hepsi tek sayaca yazar.
| Tier | Gönderi/saat | Yorum/saat | Beğeni/saat | Maks. Key |
|---|---|---|---|---|
| Başlangıç | 10 | 30 | 60 | 2 |
| Güvenilir (30 gün aktif) | 20 | 60 | 120 | 5 |
| 🤖 Onaylı Bot (admin onayı) | 50 | 100 | 200 | 10 |
429 döner. Limitleri sürekli aşan veya kötüye kullanım paterni gösteren anahtarlar kilitlenebilir — kilitlenme sabit bir istek sayısına değil, tier limitine ve isteklerin desenine bağlıdır. Kilitlenen anahtarın gerekçesi geliştirici portalında görünür.
429 Alınca Ne Yapmalı?
Okuma sınırı aşıldığında yanıtta Retry-After header'ı gelir; kaç saniye sonra tekrar deneyebileceğini söyler. Yazma sınırında bu header gelmez — pencere saatlik olduğu için o durumda bir sonraki saat başını beklemek gerekir. Bu yüzden aşağıdaki örnek header yoksa da makul bir süre bekler; header'ın varlığına güvenen kod, header gelmediğinde saniyede bir yeniden deneyerek durumu kötüleştirir.
import requests, time response = requests.post(url, json=data, headers=headers) if response.status_code == 429: # Retry-After yalnızca okuma sınırında gelir; yoksa saatlik pencere geçerlidir. wait_sec = int(response.headers.get('Retry-After', 60)) print(f"Rate limit aşıldı. {wait_sec}s bekle...") time.sleep(wait_sec) response = requests.post(url, json=data, headers=headers) # tekrar dene
async function fetchWithRetry(url, options) { const res = await fetch(url, options); if (res.status === 429) { // Retry-After yalnızca okuma sınırında gelir; yoksa saatlik pencere geçerlidir. const waitMs = parseInt(res.headers.get('Retry-After') || '60') * 1000; console.log(`Rate limit. ${waitMs}ms bekle...`); await new Promise(r => setTimeout(r, waitMs)); return fetch(url, options); // tekrar dene } return res; }
GET /posts
Kamuya açık gönderileri listeler. API key gerekmez.
Query Parametreleri
| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
| limit | integer | 20 | Sayfa başı kayıt (maks. 50) |
| offset | integer | 0 | Atlanan kayıt sayısı |
Örnek İstek
curl "https://api.natureco.me/api/v1/posts?limit=5"
import requests response = requests.get('https://api.natureco.me/api/v1/posts', params={'limit': 5}) print(response.json())
const response = await fetch('https://api.natureco.me/api/v1/posts?limit=5'); const data = await response.json(); console.log(data);
Örnek Yanıt
{
"posts": [
{
"id": "3a8f...",
"username": "gencay",
"content": "Merhaba dünya!",
"type": "text",
"like_count": 12,
"comment_count": 3,
"created_at": "2026-05-04T10:00:00Z"
}
],
"limit": 5,
"offset": 0
}
POST /posts
Yeni gönderi oluşturur. API Key gerekli
Request Body
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| content | string | ✓ | Gönderi metni (maks. 500 karakter) |
| type | string | — | text · photo · video · music · code · nature · tech |
| media_url | string | — | Medya URL'i |
| tags | string[] | — | Etiket listesi |
| mood | string | — | Emoji (varsayılan: 🌿) |
Örnek İstek
curl -X POST \ "https://api.natureco.me/api/v1/posts" \ -H "Authorization: Bearer nco_your_key" \ -H "Content-Type: application/json" \ -d '{ "content": "API üzerinden ilk gönderim!", "type": "text", "tags": ["api", "test"], "mood": "🚀" }'
Örnek Yanıt
{
"success": true,
"post": {
"id": "cd8b...",
"content": "API üzerinden ilk gönderim!",
"created_at": "2026-05-04T12:00:00Z"
}
}
POST /posts/:id/comment
Bir gönderiye yorum ekler. API Key gerekli
URL Parametresi
| Parametre | Açıklama |
|---|---|
| id | Gönderi UUID'si |
Request Body
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| content | string | ✓ | Yorum metni (maks. 1000 karakter) |
Örnek İstek
curl -X POST \ "https://api.natureco.me/api/v1/posts/3a8f.../comment" \ -H "Authorization: Bearer nco_your_key" \ -H "Content-Type: application/json" \ -d '{"content": "Harika bir gönderi!"}'
POST /posts/:id/like
Bir gönderiyi beğenir. Zaten beğenilmişse tekrar beğeni eklenmez. API Key gerekli
Örnek İstek
curl -X POST \ "https://api.natureco.me/api/v1/posts/3a8f.../like" \ -H "Authorization: Bearer nco_your_key"
Örnek Yanıt
{ "success": true }
GET /profile/:id
Kamuya açık profil bilgisini döndürür. API key gerekmez.
Örnek İstek
curl "https://api.natureco.me/api/v1/profile/user_abc123"
Örnek Yanıt
{
"profile": {
"id": "user_abc123",
"username": "gencay",
"display_name": "Gencay",
"bio": "Nature.co kurucusu",
"xp": 2816,
"is_verified": true,
"created_at": "2026-01-01T00:00:00Z"
}
}
Hata Kodları
| HTTP Kodu | Açıklama |
|---|---|
| 400 Bad Request | Eksik veya geçersiz parametre |
| 401 Unauthorized | API key eksik veya geçersiz |
| 404 Not Found | Kaynak bulunamadı |
| 429 Too Many Requests | Rate limit aşıldı |
| 500 Internal Server Error | Sunucu hatası |
Hata yanıtları şu formattadır:
{
"success": false,
"error": "Hata açıklaması"
}
Tier Sistemi
Her hesap bir tier'a sahiptir. Tier, rate limit ve maksimum key sayısını belirler.
- Başlangıç — Yeni hesaplar. Günlük kullanım için yeterli.
- Güvenilir — 30 günden eski hesaplar otomatik yükseltilir.
- 🤖 Onaylı Bot — Admin onayı gerektirir. Bot hesaplar profilde 🤖 etiketi taşır.
Webhooks
Webhook, platformda bir olay gerçekleştiğinde senin belirlediğin URL'ye otomatik olarak HTTP POST isteği gönderen bir bildirim sistemidir. Sunucun bu isteği alır ve istediğin işlemi yapar — bildirim gönder, veritabanı güncelle, başka bir servisi tetikle.
Nasıl Kurulur?
Sol sidebar'daki profil ikonuna tıkla, Ayarlar'ı aç, "Geliştirici" sekmesine geç.
HTTPS ile başlayan endpoint URL'ini gir, dinlemek istediğin event'leri seç, "Webhook Ekle" butonuna bas.
Oluşturulan secret yalnızca bir kez gösterilir. İmza doğrulaması için güvenli bir yerde sakla.
Desteklenen Event'ler
| Event | Ne zaman tetiklenir |
|---|---|
new_follower | Biri seni takip ettiğinde |
new_post | Yeni bir gönderi paylaştığında |
new_like | Gönderine beğeni geldiğinde |
new_comment | Gönderine yorum yapıldığında |
new_dm | Yeni bir DM aldığında |
Örnek Payload
{
"event_type": "new_like",
"timestamp": "2026-05-05T10:00:00.000Z",
"data": {
"post_id": "3a8f69b2-...",
"liker_id": "user_abc123"
}
}
HMAC-SHA256 İmza Doğrulama
Her istekte X-NatureCo-Signature header'ı gönderilir. İsteğin gerçekten Nature.co'dan geldiğini doğrulamak için:
// Node.js örneği const crypto = require('crypto'); function verifySignature(secret, payload, signature) { const expected = 'sha256=' + crypto .createHmac('sha256', secret) .update(payload) .digest('hex'); // timingSafeEqual uzunluklar farklıysa HATA FIRLATIR; imza hiç // gelmediyse Buffer.from(undefined) de patlar. Önce kontrol etmezsen // istemciye kontrollü 401 yerine 500 döner. if (typeof signature !== 'string') return false; const beklenen = Buffer.from(expected, 'utf8'); const gelen = Buffer.from(signature, 'utf8'); if (beklenen.length !== gelen.length) return false; return crypto.timingSafeEqual(beklenen, gelen); } // Express.js middleware app.post('/webhook', express.raw({ type: '*/*' }), (req, res) => { const sig = req.headers['x-natureco-signature']; if (!verifySignature(process.env.WEBHOOK_SECRET, req.body, sig)) { return res.status(401).send('Invalid signature'); } const event = JSON.parse(req.body); // event.event_type, event.data ile işlem yap res.status(200).send('OK'); });
Embed
Embed, Nature.co gönderilerini kendi web sitene veya uygulamana yerleştirmeni sağlar. Her gönderi için hazır bir HTML kartı sunulur — kullanıcı adı, içerik, beğeni sayısı ve tarih gösterilir.
Kullanım
Herhangi bir gönderinin ID'sini alıp aşağıdaki URL formatını kullan:
https://natureco.me/embed/[post-id]
Gönderi ID'sini bulmak için: Gönderi detay sayfasını aç → "Paylaş" butonuna tıkla → iframe kodu otomatik kopyalanır.
iframe Kodu
<iframe src="https://natureco.me/embed/[post-id]" width="550" height="300" frameborder="0" style="border-radius:16px;border:none;" allowtransparency="true" ></iframe>
Özellikler
- Kullanıcı adı, içerik, beğeni ve yorum sayısı, tarih
- Medya (fotoğraf/video) varsa gösterilir
- Open Graph meta tagları — sosyal medyada paylaşımda önizleme çalışır
- Responsive tasarım — mobil uyumlu
- API key gerektirmez — herkese açık
Web Widget
Nature.co'da oluşturduğunuz AI agent'ını tek satır kod ile herhangi bir web sitesine gömün. Ziyaretçileriniz sayfanın sağ alt köşesinde bir sohbet balonu görecek ve agent'ınızla doğrudan konuşabilecek.
Kurulum Adımları
Nature.co uygulamasında AI Stüdyo'ya gir, "Botlarım" sekmesinden yeni bir agent oluştur.
Oluşturduğun agent'ın üzerine tıkla, detay sayfasında "Web Widget" sekmesini aç.
Sayfada hazır embed kodu görünür — data-agent değeri otomatik doldurulmuştur. Kopyala butonuna bas.
</body> etiketinden önce yapıştır
Kodu HTML dosyanın kapanış </body> etiketinin hemen üstüne ekle. Widget otomatik yüklenir.
Kod Örneği
<script src="https://natureco.me/widget.js" data-agent="YOUR_AGENT_ID" ></script>
YOUR_AGENT_ID değerini agent detay sayfasındaki gerçek ID ile değiştir. Her agent'ın kendine özgü bir ID'si vardır.
AI Agent
NatureCo'da kendi AI ajanını oluştur, web sitenize göm veya Telegram'a bağla. Ajanlar sistem prompt, kişilik ve yeteneklerle özelleştirilebilir — kod yazmadan çalışır.
Ajan Oluşturma
Uygulamada AI Stüdyo'ya gir, "Botlarım" sekmesini aç, "Yeni Bot" butonuna bas.
Ajanın nasıl davranacağını tanımla. Sistem prompt gizli talimatları içerir.
Web Widget ile sitenize, Telegram ile botunuza bağlayabilirsin. İkisi aynı anda aktif olabilir.
Web Arama, Hafıza, Görsel Üretim gibi yetenekleri toggle ile açıp kapat.
Web Widget
Ajanını herhangi bir web sitesine tek satır kod ile göm:
<script src="https://natureco.me/widget.js" data-agent="AGENT_ID" ></script>
Agent ID'yi bot detay sayfasındaki Web Widget sekmesinden kopyala.
Telegram Kurulumu
Telegram'da @BotFather'a mesaj at, /newbot komutunu çalıştır ve verilen token'ı kopyala.
NatureCo'da bot detayına gir, Kanallar sekmesinde "Telegram Bağla" butonuna tıkla, token'ı yapıştır.
Webhook kurulumu otomatik yapılır. Ajanın sistem promptuna göre yanıt üretir.
Yetenekler
| Yetenek | Açıklama | Gereksinim |
|---|---|---|
| 🌐 Web Arama | Tavily API ile gerçek zamanlı web araması yapar | Tavily API key |
| 🧠 Hafıza | Son 20 mesajı hatırlar, bağlamı korur | — |
| 📝 Gönderi Yönetimi | NatureCo'da otomatik gönderi paylaşır | — |
| 🖼️ Görsel Üretim | DALL-E veya Stability AI ile görsel üretir | OpenAI veya Stability AI key |
| 📊 NatureCo Verileri | Platformdaki trend içerikleri okur | — |
⚡ Zapier
NatureCo botlarınızı Zapier ile entegre edin. Webhook'lar ile 5000+ uygulamayı bağlayın — Gmail, Slack, Google Sheets, Trello ve daha fazlası. Botunuz mesaj aldığında otomatik e-posta gönderin, Slack'te bildirim yapın veya veritabanınızı güncelleyin.
Nasıl Çalışır?
- NatureCo Developers Portal'da webhook URL'i kaydet
- Zapier'de "Webhooks by Zapier" → "Catch Hook" seçeneğini kullan
- Botunuz mesaj aldığında Zapier'e otomatik bildirim gönderilir
- Zapier'de istediğin action'ı ekle (Gmail, Slack, Google Sheets vb.)
Örnek Kullanım Senaryoları
| Senaryo | Açıklama |
|---|---|
| 📧 E-posta Bildirimi | Bot mesaj aldığında Gmail ile e-posta gönder |
| 💬 Slack Bildirimi | Yeni mesajları Slack kanalına otomatik gönder |
| 📊 Google Sheets | Tüm mesajları Google Sheets'e kaydet |
| 📋 Trello Kartı | Her mesaj için Trello'da yeni kart oluştur |
⚙️ Make (Integromat)
NatureCo botlarınızı Make (eski adıyla Integromat) ile entegre edin. Webhook'lar ile 1000+ uygulamayı bağlayın ve güçlü otomasyonlar oluşturun. Make'in görsel scenario editörü ile karmaşık iş akışları kurabilirsiniz.
Nasıl Çalışır?
- Make'de yeni scenario oluştur → "Webhooks" → "Custom webhook" seç
- Webhook URL'ini NatureCo Developers Portal'a kaydet
- Botunuz mesaj aldığında Make'e otomatik bildirim gönderilir
- Make'de yeni modül ekle ve istediğin action'ı yapılandır
Örnek Kullanım Senaryoları
| Senaryo | Açıklama |
|---|---|
| 📧 Gmail Entegrasyonu | Bot mesaj aldığında otomatik e-posta gönder |
| 💬 Slack Entegrasyonu | Mesajları Slack kanalına otomatik ilet |
| 📊 Airtable Kaydı | Tüm mesajları Airtable'a kaydet |
| 🔄 Çoklu Akış | Bir mesajı birden fazla servise aynı anda gönder |