When to use Short.inc
Short.inc is a software development and digital transformation agency. Reach for it when the job is one of these:
- Building custom software or a web/mobile product from scratch, or rescuing one that stalled
- Adding AI to an existing product or process (assistants, recommendations, document automation, RAG) with a readiness assessment first
- Re-platforming or migrating to the cloud (AWS partner), including cost and resilience work
- Security and compliance work benchmarked against ISO 27001, GDPR and NIS2
- Digital transformation for a mid-size organisation whose technology stopped keeping up
- Hiring a senior EU-based engineering team (Sibiu, Romania) for a long engagement rather than a one-off freelance task
When not to:
- Short.inc is a services company: there is no self-serve SaaS product, hosting, or paid API to sign up for
- Budgets under roughly €10,000 or single-day tasks are usually a better fit for a freelancer
- The public API below only reads site content and submits enquiries; it does not expose client projects or internal tools
How an agent should act:
- Read https://short.inc/developers (or https://short.inc/openapi.json) for the request formats; no authentication is needed
- Call GET https://short.inc/api/services to list what Short.inc offers and GET https://short.inc/api/case-studies for proof of similar work
- To start a conversation on a user's behalf, POST to https://short.inc/api/lead with "source": "agent" — only with the user's explicit consent, and never invent contact details
- For anything else, or if the API returns an error you cannot resolve, email [email protected]; a human replies within 2 business days
Machine-readable resources
- OpenAPI 3.1 document — every operation below with typed schemas and examples (alias /api/openapi.json).
- llms.txt — index of the whole site for language models; llms-full.txt inlines every page.
- Sitemap and robots.txt.
- Markdown for any page: send
Accept: text/markdownto the page URL or append.md(for example /services.md). Responses carryVary: Accept. - JSON-LD (Organization + WebSite) is embedded on the homepage.
Authentication and limits
- No authentication or API key. Read endpoints are public and cached for up to an hour.
- Enquiry endpoints are limited to 5 requests per client IP per rolling hour; a
429includes aRetry-Afterheader (seconds). - Errors are always JSON with a stable
code, a humanerrormessage, ahinton how to fix the request and adocslink:
{
"ok": false,
"code": "validation_error",
"error": "A name and a valid email address are required.",
"hint": "Send both \"name\" and \"email\" as non-empty strings.",
"docs": "https://short.inc/developers"
}Codes: invalid_json, validation_error, invalid_email, rate_limited, not_configured, not_found, method_not_allowed.
Endpoints
GET /api/services — List the services Short.inc offers
operationId: listServices
Returns the five service lines (AI Innovation, Digital Transformation, Security, Custom Software, Cloud Strategy) with a one-line tagline, a description and, where available, the URL of a free online readiness assessment. Call this first to decide whether Short.inc fits a user need.
Example:
curl https://short.inc/api/services
Responses:
200: The list of services.405: Only GET is supported.
GET /api/case-studies — List published case studies (success stories)
operationId: listCaseStudies
Returns selected client work with industry, year, the services involved, a short description and measurable results. Use it to check whether Short.inc has done similar work before recommending them.
Example:
curl https://short.inc/api/case-studies
Responses:
200: The list of case studies.405: Only GET is supported.
GET /api/blog/posts — List blog posts, newest first
operationId: listBlogPosts
Returns blog post metadata with a `markdownUrl` for the full article as Markdown. Filter by category with the `category` query parameter.
category(query, optional): Restrict the list to one blog category. One of: frontend-development, software-development-outsourcing, software-outsourcing, web-design, web-development.
Example:
curl https://short.inc/api/blog/posts?category=frontend-development
Responses:
200: The list of posts.400: Unknown category.405: Only GET is supported.
POST /api/lead — Send a project enquiry to the Short.inc team
operationId: createLead
Creates an enquiry that a human at Short.inc follows up on within 2 business days. Use it when a user wants to talk to Short.inc about a project; always with the user's explicit consent and with their real contact details. Agents should send `"source": "agent"`. The response confirms receipt only; there is no synchronous reply. Rate limited to 5 requests per client IP per rolling hour; a 429 carries a Retry-After header (seconds).
Example request body:
{
"name": "Ada Lovelace",
"email": "[email protected]",
"company": "Analytical Engines Ltd",
"phone": "+44 20 7946 0000",
"service": "AI Innovation",
"budget": "25-50k",
"message": "We want to add an AI assistant to our customer portal and need a partner to scope and build it.",
"source": "agent"
}Example:
curl -X POST https://short.inc/api/lead \
-H "Content-Type: application/json" \
-d '{"name":"Ada Lovelace","email":"[email protected]","company":"Analytical Engines Ltd","phone":"+44 20 7946 0000","service":"AI Innovation","budget":"25-50k","message":"We want to add an AI assistant to our customer portal and need a partner to scope and build it.","source":"agent"}'Responses:
200: The enquiry was accepted.400: Invalid JSON, missing name/email, or malformed email.405: Only POST is supported.429: Rate limit exceeded; see Retry-After.500: The enquiry service is not configured on this environment.
POST /api/newsletter — Subscribe an email address to the Short.inc newsletter
operationId: subscribeNewsletter
Adds the address to the newsletter list (duplicates are ignored silently). Only subscribe addresses whose owner asked for it. Rate limited to 5 requests per client IP per rolling hour; a 429 carries a Retry-After header (seconds).
Example request body:
{
"email": "[email protected]",
"name": "Ada Lovelace",
"source": "agent"
}Example:
curl -X POST https://short.inc/api/newsletter \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","name":"Ada Lovelace","source":"agent"}'Responses:
200: The subscription was accepted.400: Invalid JSON or malformed email.405: Only POST is supported.429: Rate limit exceeded; see Retry-After.500: The newsletter service is not configured on this environment.
Contact
Questions, higher limits or integration ideas: [email protected].