Neeblo | Innovative IT Solutions & Digital Transformation Services developer portal
The public endpoints of www.neeblo.com for agents and developers: send forms, read the sitemap, the feed and llms.txt. The machine-readable description is /openapi.json (OpenAPI 3.1).
Authentication
None. The endpoints below are public and need no API key. Abuse is limited by rate limits per client IP. There is no sandbox: a submission is a real submission, so send test data only to a website you own.
Quickstart
Read the machine-readable spec, then send a contact message:
curl -sS https://www.neeblo.com/openapi.json
curl -sS -X POST https://www.neeblo.com/submit-contacts \
-H 'Content-Type: application/json' -H 'Accept: application/json' \
-d '{"form_name":"Ada","form_email":"ada@example.com","form_message":"Hello"}'
Every page also answers Accept: text/markdown with Markdown:
curl -sS -H 'Accept: text/markdown' https://www.neeblo.com/
Endpoints
| Endpoint | operationId | Description |
|---|---|---|
POST /submit-contacts | submitContact | Stores a contact form message for the website owner. Every field whose name starts with `form_` is kept as the message detail. One submission per client IP is accepted at a time; more get 429. |
POST /submit-leads | submitLead | Stores the answers to a lead form of the website. The lead is named with `form_lead_id` or `form_lead_uuid`; the answers go in `leads_submit_detail` keyed by field. Use multipart/form-data to attach files. |
POST /submit-comments | submitComment | Stores a comment on an article. It is unpublished until the website owner approves it. `form_name` and `form_text` are required; the article is named with `form_article_id` or `form_article_uuid`. |
GET /sitemap.xml | getSitemap | The sitemap of the website in the sitemaps.org XML format. |
GET /rss.xml | getRssFeed | The latest articles of the website as an RSS feed. |
GET /llms.txt | getLlmsTxt | What the website offers and when an agent should use it, in the llms.txt format. |
GET /llms-full.txt | getLlmsFullTxt | The full text version of llms.txt with the content of the website. |
GET /robots.txt | getRobotsTxt | Crawl rules of the website. |
GET /openapi.json | getOpenApi | The OpenAPI 3.1 description of the public endpoints of this website. |
Errors
The HTTP status is always meaningful. With Accept: application/json (or on an /api/ path) the body is JSON, with Accept: text/markdown it is Markdown:
{"error": {"status": 429, "code": "rate_limited", "message": "Too many requests.", "resolution": "Wait for the number of seconds in the Retry-After header, then retry."}}
Rate limits
Each API response carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset and RateLimit-Policy; a 429 also carries Retry-After (seconds). Slow down when RateLimit-Remaining reaches 0.