Nature.co API

Nature.co platformuna programatik erişim sağlayan REST API. Gönderi paylaş, yorum yap, profil oku.

ℹ️ Base URL: https://api.natureco.me/api/v1

Hızlı Başlangıç

3 adımda Nature.co API'sini kullanmaya başla.

API Key al

Ayarlar → Geliştirici → "Oluştur" butonuna bas. Key yalnızca bir kez gösterilir.

İlk isteği at

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);
Gönderi oluştur

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

Nature.co'ya giriş yap

Hesabın yoksa kayıt ol.

Ayarlar → Geliştirici

Sol sidebar'daki profil ikonuna tıkla, ardından Ayarlar'ı aç. "Geliştirici" sekmesine geç.

Key oluştur

Key adı gir ve "Oluştur" butonuna bas. Key yalnızca bir kez gösterilir — hemen kopyala.

Key'i güvende tut

Key'i kaynak koduna gömme. Ortam değişkeni (.env) kullan.

⚠️ Yeni oluşturulan tüm key'ler 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ırNeye uygulanırPencereKime göre sayılır
YazmaGönderi, yorum, beğeniSaatlikAPI anahtarı başına, tier'a göre
OkumaTüm GET istekleriDakikalıkIP 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.

TierGönderi/saatYorum/saatBeğeni/saatMaks. Key
Başlangıç1030602
Güvenilir (30 gün aktif)20601205
🤖 Onaylı Bot (admin onayı)5010020010
⚠️ Yukarıdaki yazma limitleri tier'a göre uygulanır; tabloda kendi tier'ının değerlerini görürsün. Tier'ı yalnızca yönetici yükseltir; kendi anahtarının tier'ını değiştiremezsin. Limiti aşan istekler 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

ParametreTipVarsayılanAçıklama
limitinteger20Sayfa başı kayıt (maks. 50)
offsetinteger0Atlanan 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

AlanTipZorunluAçıklama
contentstringGönderi metni (maks. 500 karakter)
typestringtext · photo · video · music · code · nature · tech
media_urlstringMedya URL'i
tagsstring[]Etiket listesi
moodstringEmoji (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

ParametreAçıklama
idGönderi UUID'si

Request Body

AlanTipZorunluAçıklama
contentstringYorum 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 KoduAçıklama
400 Bad RequestEksik veya geçersiz parametre
401 UnauthorizedAPI key eksik veya geçersiz
404 Not FoundKaynak bulunamadı
429 Too Many RequestsRate limit aşıldı
500 Internal Server ErrorSunucu 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.

💡 Onaylı Bot tier'ı için [email protected] adresine yaz.

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?

Ayarlar → Geliştirici sekmesine git

Sol sidebar'daki profil ikonuna tıkla, Ayarlar'ı aç, "Geliştirici" sekmesine geç.

Webhook URL ekle

HTTPS ile başlayan endpoint URL'ini gir, dinlemek istediğin event'leri seç, "Webhook Ekle" butonuna bas.

Secret'ı kaydet

Oluşturulan secret yalnızca bir kez gösterilir. İmza doğrulaması için güvenli bir yerde sakla.

Desteklenen Event'ler

EventNe zaman tetiklenir
new_followerBiri seni takip ettiğinde
new_postYeni bir gönderi paylaştığında
new_likeGönderine beğeni geldiğinde
new_commentGönderine yorum yapıldığında
new_dmYeni 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');
});
⚠️ 3 ardışık başarısız istekten sonra webhook otomatik devre dışı bırakılır ve sana bildirim gönderilir.

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

ℹ️ Embed sayfaları 5 dakika önbelleğe alınır. Gönderi silinirse embed 404 döndürür.

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ı

AI Stüdyo → Botlarım'dan agent oluştur

Nature.co uygulamasında AI Stüdyo'ya gir, "Botlarım" sekmesinden yeni bir agent oluştur.

Agent detayına gir → Web Widget sekmesi

Oluşturduğun agent'ın üzerine tıkla, detay sayfasında "Web Widget" sekmesini aç.

Embed kodunu kopyala

Sayfada hazır embed kodu görünür — data-agent değeri otomatik doldurulmuştur. Kopyala butonuna bas.

Sitenin </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.
ℹ️ Widget, agent'ın sistem prompt'unu ve kişiliğini kullanır. Ayarları agent detay sayfasından istediğin zaman güncelleyebilirsin — deploy gerekmez.

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

AI Stüdyo → Botlarım → Yeni Bot

Uygulamada AI Stüdyo'ya gir, "Botlarım" sekmesini aç, "Yeni Bot" butonuna bas.

İsim, kişilik ve sistem prompt yaz

Ajanın nasıl davranacağını tanımla. Sistem prompt gizli talimatları içerir.

Kanal seç: Web Widget veya Telegram

Web Widget ile sitenize, Telegram ile botunuza bağlayabilirsin. İkisi aynı anda aktif olabilir.

Yetenekleri aktif et

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

@BotFather'a git → /newbot → token al

Telegram'da @BotFather'a mesaj at, /newbot komutunu çalıştır ve verilen token'ı kopyala.

Bot detay sayfası → Telegram Bağla → token yapıştır

NatureCo'da bot detayına gir, Kanallar sekmesinde "Telegram Bağla" butonuna tıkla, token'ı yapıştır.

Artık Telegram'da mesajlara otomatik cevap verir

Webhook kurulumu otomatik yapılır. Ajanın sistem promptuna göre yanıt üretir.

Yetenekler

YetenekAçıklamaGereksinim
🌐 Web AramaTavily API ile gerçek zamanlı web araması yaparTavily API key
🧠 HafızaSon 20 mesajı hatırlar, bağlamı korur
📝 Gönderi YönetimiNatureCo'da otomatik gönderi paylaşır
🖼️ Görsel ÜretimDALL-E veya Stability AI ile görsel üretirOpenAI veya Stability AI key
📊 NatureCo VerileriPlatformdaki trend içerikleri okur
💡 API key'leri Ayarlar → AI Anahtarları sayfasından ekleyebilirsin. Key'ler şifreli saklanır.

⚡ 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?

Örnek Kullanım Senaryoları

SenaryoAçıklama
📧 E-posta BildirimiBot mesaj aldığında Gmail ile e-posta gönder
💬 Slack BildirimiYeni mesajları Slack kanalına otomatik gönder
📊 Google SheetsTüm mesajları Google Sheets'e kaydet
📋 Trello KartıHer mesaj için Trello'da yeni kart oluştur
ℹ️ Detaylı kurulum kılavuzu için → Zapier Entegrasyonu Dokümantasyonu

⚙️ 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?

Örnek Kullanım Senaryoları

SenaryoAçıklama
📧 Gmail EntegrasyonuBot mesaj aldığında otomatik e-posta gönder
💬 Slack EntegrasyonuMesajları Slack kanalına otomatik ilet
📊 Airtable KaydıTüm mesajları Airtable'a kaydet
🔄 Çoklu AkışBir mesajı birden fazla servise aynı anda gönder
ℹ️ Detaylı kurulum kılavuzu için → Make Entegrasyonu Dokümantasyonu
Nature.co API v1 · Ana Sayfa · Gizlilik