API Dokümantasyonu
Morfin.net REST API ile URL indeksleme, bakiye sorgulama ve istek takibi yapabilirsiniz.
API Nedir?
API (Application Programming Interface), yazılımınızın Morfin.net ile konuşmasını sağlayan bir arayüzdür. Panelden manuel yapacağınız işlemleri (URL ekleme, bakiye kontrolü, durum takibi) kod ile otomatik yapabilirsiniz.
Örneğin: Blog sitenizde yeni yazı yayınlandığında, kendi sunucunuzdaki bir script bu API'ye istek atarak URL'yi otomatik indekslemeye ekleyebilir.
Kimlik Doğrulama
Her API isteğinde kimliğinizi kanıtlamanız gerekir. Bunun için API anahtarınızı kullanırsınız. Anahtarınızı panelden görebilir, kopyalayabilir veya güvenlik için yenileyebilirsiniz.
İki yöntemle anahtar gönderebilirsiniz:
1. Authorization Header (önerilen)
Authorization: Bearer abc123...sizin_api_anahtariniz
2. X-API-Key Header (bazı sunucularda daha güvenilir)
X-API-Key: abc123...sizin_api_anahtariniz
⚠️ API anahtarınızı kimseyle paylaşmayın. Sızdıysa panelden "Yenile" ile yeni anahtar oluşturun.
Base URL
Tüm endpoint'lerin başına bu adresi ekleyin:
https://www.morfin.net/api/v1
GET 1. Bakiye Sorgulama
Mevcut kredi bakiyenizi ve her URL için kaç kredi harcandığını öğrenir.
İstek göndermeden önce kredinizi kontrol etmek için kullanın.
Endpoint:
https://www.morfin.net/api/v1/balance
cURL örneği:
curl -H "X-API-Key: SIZIN_API_ANAHTARINIZ" "https://www.morfin.net/api/v1/balance"
Başarılı yanıt (HTTP 200):
{
"success": true,
"credits": 50,
"credit_per_url": 1
}
• credits: Mevcut kredi bakiyeniz
• credit_per_url: Her URL için harcanan kredi (genellikle 1)
Hata yanıtı (geçersiz anahtar, HTTP 401):
{
"success": false,
"error": "Geçersiz veya eksik API anahtarı. Authorization: Bearer YOUR_KEY veya X-API-Key: YOUR_KEY"
}
POST 2. URL Gönderme
URL'leri Google indekslemeye gönderir. Her URL için kredi düşülür ve benzersiz bir id döner.
Bu id değerini saklayın; daha sonra /request/{id} ile durumunu sorgulayabilirsiniz.
Endpoint:
https://www.morfin.net/api/v1/submit
İstek gövdesi (JSON, Content-Type: application/json):
{
"urls": [
"https://example.com/sayfa1",
"https://example.com/sayfa2"
]
}
cURL örneği (tek URL):
curl -X POST \
-H "X-API-Key: SIZIN_API_ANAHTARINIZ" \
-H "Content-Type: application/json" \
-d '{"urls":["https://example.com/sayfa1"]}' \
"https://www.morfin.net/api/v1/submit"
cURL örneği (birden fazla URL):
curl -X POST \
-H "X-API-Key: SIZIN_API_ANAHTARINIZ" \
-H "Content-Type: application/json" \
-d '{"urls":["https://example.com/sayfa1","https://example.com/sayfa2","https://example.com/sayfa3"]}' \
"https://www.morfin.net/api/v1/submit"
Başarılı yanıt (HTTP 200):
{
"success": true,
"message": "3 URL indekslemeye eklendi.",
"credits_used": 3,
"credits_remaining": 47,
"requests": [
{ "id": 101, "url": "https://example.com/sayfa1", "status": "pending" },
{ "id": 102, "url": "https://example.com/sayfa2", "status": "pending" },
{ "id": 103, "url": "https://example.com/sayfa3", "status": "pending" }
]
}
• id: Durum kontrolü için kullanacağınız benzersiz numara
• status: Başlangıçta her zaman "pending"
Hata yanıtı (yetersiz kredi, HTTP 402):
{
"success": false,
"error": "Yetersiz kredi. 5 URL için 5 kredi gerekir. Mevcut: 2 kredi. Lütfen kredi yükleyin. (payment sayfasından)"
}
Hata yanıtı (geçersiz URL, HTTP 400):
{
"success": false,
"error": "Geçerli en az bir URL gerekli. Örnek: {\"urls\": [\"https://example.com/page1\"]}"
}
GET 3. Tek İstek Durumu
Submit ile dönen id ile belirli bir URL'in indeksleme durumunu sorgular.
Örnek: Submit'ten id: 101 döndüyse, /request/101 ile o isteğin durumunu öğrenirsiniz.
Endpoint:
https://www.morfin.net/api/v1/request/{id}
cURL örneği:
curl -H "X-API-Key: SIZIN_API_ANAHTARINIZ" "https://www.morfin.net/api/v1/request/101"
Başarılı yanıt – Beklemede (HTTP 200):
{
"success": true,
"request": {
"id": 101,
"url": "https://example.com/sayfa1",
"status": "pending",
"status_label": "Beklemede",
"credits_used": 1,
"created_at": "2026-02-22 15:30:00"
}
}
Başarılı yanıt – Tamamlandı (HTTP 200):
{
"success": true,
"request": {
"id": 101,
"url": "https://example.com/sayfa1",
"status": "completed",
"status_label": "Tamamlandı",
"credits_used": 1,
"created_at": "2026-02-22 15:30:00"
}
}
Durum değerleri (status):
pending– Beklemede (kuyrukta)processing– İşleniyor (Google'a gönderiliyor)completed– Tamamlandıfailed– Başarısız (kredi iade edilir)cancelled– İptal edildi
Hata yanıtı (bulunamadı, HTTP 404):
{
"success": false,
"error": "İstek bulunamadı veya size ait değil."
}
GET 4. İstek Listesi
Tüm indeksleme isteklerinizi sayfalanmış liste halinde döner. İsteğe bağlı olarak duruma göre filtreleyebilirsiniz.
Endpoint:
https://www.morfin.net/api/v1/requests?page=1&per_page=20&status=pending
Parametreler (hepsi isteğe bağlı):
page– Sayfa numarası (varsayılan: 1)per_page– Sayfa başına kayıt (varsayılan: 20, en fazla: 50)status– Filtre: pending, processing, completed, failed, cancelled
cURL örneği (tüm istekler, 1. sayfa):
curl -H "X-API-Key: SIZIN_API_ANAHTARINIZ" "https://www.morfin.net/api/v1/requests"
cURL örneği (sadece bekleyenler, 2. sayfa, 10'ar kayıt):
curl -H "X-API-Key: SIZIN_API_ANAHTARINIZ" "https://www.morfin.net/api/v1/requests?status=pending&page=2&per_page=10"
Başarılı yanıt (HTTP 200):
{
"success": true,
"requests": [
{
"id": 102,
"url": "https://example.com/sayfa2",
"status": "pending",
"status_label": "Beklemede",
"credits_used": 1,
"created_at": "2026-02-22 15:30:01"
},
{
"id": 101,
"url": "https://example.com/sayfa1",
"status": "completed",
"status_label": "Tamamlandı",
"credits_used": 1,
"created_at": "2026-02-22 15:30:00"
}
],
"pagination": {
"page": 1,
"per_page": 20,
"total": 2,
"total_pages": 1
}
}
• pagination.total: Toplam kayıt sayısı
• pagination.total_pages: Toplam sayfa sayısı
Hata Kodları
API hata döndüğünde HTTP status kodu ve JSON içinde success: false ile error mesajı gelir.
400
Bad Request
Geçersiz istek: eksik parametre, geçersiz URL, boş liste vb.
{"success":false,"error":"Geçerli en az bir URL gerekli."}
401
Unauthorized
Geçersiz veya eksik API anahtarı.
{"success":false,"error":"Geçersiz veya eksik API anahtarı..."}
402
Payment Required
Yetersiz kredi. Submit isteği için kredi yükleyin.
{"success":false,"error":"Yetersiz kredi. 5 URL için 5 kredi gerekir..."}
404
Not Found
İstek bulunamadı veya size ait değil.
{"success":false,"error":"İstek bulunamadı veya size ait değil."}
405
Method Not Allowed
Yanlış HTTP metodu (örn. GET yerine POST gerekiyor).
Tüm cURL Örnekleri (Kopyala-Yapıştır)
Aşağıdaki komutlarda SIZIN_API_ANAHTARINIZ yerine panelden aldığınız gerçek anahtarı yazın.
1. Bakiye sorgulama
curl -H "X-API-Key: SIZIN_API_ANAHTARINIZ" "https://www.morfin.net/api/v1/balance"
2. Tek URL gönderme
curl -X POST \
-H "X-API-Key: SIZIN_API_ANAHTARINIZ" \
-H "Content-Type: application/json" \
-d '{"urls":["https://example.com/sayfam"]}' \
"https://www.morfin.net/api/v1/submit"
3. Birden fazla URL gönderme
curl -X POST \
-H "X-API-Key: SIZIN_API_ANAHTARINIZ" \
-H "Content-Type: application/json" \
-d '{"urls":["https://example.com/sayfa1","https://example.com/sayfa2"]}' \
"https://www.morfin.net/api/v1/submit"
4. İstek durumu kontrol (id: 101)
curl -H "X-API-Key: SIZIN_API_ANAHTARINIZ" "https://www.morfin.net/api/v1/request/101"
5. Tüm istekleri listele
curl -H "X-API-Key: SIZIN_API_ANAHTARINIZ" "https://www.morfin.net/api/v1/requests"
6. Sadece bekleyen istekleri listele
curl -H "X-API-Key: SIZIN_API_ANAHTARINIZ" "https://www.morfin.net/api/v1/requests?status=pending"
PHP Örneği
<?php
$apiKey = 'SIZIN_API_ANAHTARINIZ';
$baseUrl = 'https://www.morfin.net/api/v1';
// Bakiye sorgula
$ch = curl_init($baseUrl . '/balance');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['X-API-Key: ' . $apiKey],
CURLOPT_RETURNTRANSFER => true,
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response); // ["success"=>true, "credits"=>50, "credit_per_url"=>1]
// URL gönder
$ch = curl_init($baseUrl . '/submit');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['X-API-Key: ' . $apiKey, 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['urls' => ['https://example.com/sayfa1']]),
CURLOPT_RETURNTRANSFER => true,
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response); // success, requests (id, url, status...)
?>
JavaScript (fetch) Örneği
const apiKey = 'SIZIN_API_ANAHTARINIZ';
const baseUrl = 'https://www.morfin.net/api/v1';
// Bakiye sorgula
const balance = await fetch(baseUrl + '/balance', {
headers: { 'X-API-Key': apiKey }
}).then(r => r.json());
console.log(balance); // { success: true, credits: 50, credit_per_url: 1 }
// URL gönder
const submit = await fetch(baseUrl + '/submit', {
method: 'POST',
headers: {
'X-API-Key': apiKey,
'Content-Type': 'application/json'
},
body: JSON.stringify({ urls: ['https://example.com/sayfa1'] })
}).then(r => r.json());
console.log(submit); // { success: true, requests: [{ id, url, status }...] }
Python Örneği
import requests
api_key = 'SIZIN_API_ANAHTARINIZ'
base_url = 'https://www.morfin.net/api/v1'
headers = {'X-API-Key': api_key}
# Bakiye sorgula
r = requests.get(f'{base_url}/balance', headers=headers)
print(r.json()) # {'success': True, 'credits': 50, 'credit_per_url': 1}
# URL gönder
r = requests.post(f'{base_url}/submit', headers=headers, json={
'urls': ['https://example.com/sayfa1', 'https://example.com/sayfa2']
})
print(r.json()) # {'success': True, 'requests': [...]}