This prompt is designed for performance engineers and SREs who are handed a set of Service Level Agreement (SLA) documents, availability targets, and latency commitments, and need to translate them into a concrete load model. The core job-to-be-done is bridging the gap between business-level reliability promises and the technical parameters required to build a performance test harness. Instead of guessing at throughput targets or request distributions, you provide the raw specification text, and the prompt produces a structured workload profile with per-endpoint throughput targets, percentile latency budgets, and a request mix distribution.
Prompt
API Load Profile Design Prompt from SLA Requirements

When to Use This Prompt
Translate SLA documents into a concrete, executable workload profile before writing a single test script.
The ideal user has access to formal SLA documentation but does not yet have production traffic traces to replay. This prompt works from specification documents, not from observed data. If you already have access to production traffic logs, API gateway metrics, or distributed tracing data that can be replayed or modeled directly, this is the wrong tool—use a traffic replay or trace-driven modeling approach instead. The prompt is most valuable during the design phase of a new service, when onboarding a third-party dependency with contractual SLAs, or when a business stakeholder provides updated reliability commitments that must be reflected in performance test plans before the next release cycle.
To use this effectively, gather all relevant SLA artifacts: endpoint-level latency percentiles (p50, p95, p99), availability targets (e.g., 99.9% uptime), throughput commitments (requests per second per endpoint), and any error budget definitions. The prompt will identify gaps in your SLA coverage—such as missing endpoints, undefined error rate budgets, or unrealistic concurrency assumptions—and flag them before they become production incidents. After generating the workload profile, validate the output against your system's actual topology and capacity constraints, and use it as the input to your load testing tool's scenario configuration.
Use Case Fit
Where this prompt works and where it does not. Use these cards to decide if the API Load Profile Design Prompt fits your current performance engineering task.
Good Fit: SLA-Driven Workload Modeling
Use when: you have explicit latency, throughput, and availability targets per endpoint from a service-level agreement or SLO document. Guardrail: the prompt requires concrete numbers—avoid using it with vague requirements like 'the API should be fast.'
Bad Fit: Exploratory Performance Discovery
Avoid when: you are doing initial system profiling without known SLA targets, or trying to discover unknown bottlenecks through open-ended load testing. Guardrail: use the Bottleneck Hypothesis Generation Prompt instead for architecture-driven exploration before SLA targets exist.
Required Inputs: SLA Document and API Inventory
What to watch: the prompt needs endpoint-level latency percentiles, throughput targets, and error budgets. Missing any of these produces an incomplete load profile. Guardrail: pre-process your SLA document to extract per-endpoint p50, p95, p99 latency targets and requests-per-second minimums before feeding to the prompt.
Operational Risk: Unrealistic Concurrency Assumptions
What to watch: the prompt may assume uniform request distribution or ignore connection pool limits, leading to load profiles that oversubscribe downstream dependencies. Guardrail: always validate the output against your actual connection pool sizes, thread limits, and service mesh capacity before executing the generated profile.
Operational Risk: Missing Dependency Saturation
What to watch: the prompt focuses on API endpoint targets but may not model how those endpoints saturate databases, caches, or message queues. Guardrail: cross-reference the generated load profile with the Workload Distribution Modeling Prompt to ensure internal service-to-service call volumes are realistic.
Variant: Multi-Region SLA Translation
What to watch: if your SLA varies by region or includes cross-region replication latency targets, the base prompt may produce a single-region profile. Guardrail: run the prompt once per region with region-specific SLA extracts, then validate consistency across profiles using the Multi-Region Write Conflict Resolution Load Scenario Prompt.
Copy-Ready Prompt Template
A copy-ready prompt that translates SLA requirements into a concrete API load profile with request mix, throughput targets, and latency budgets.
The prompt below is designed to be pasted directly into your AI workspace. It takes your service-level agreements, endpoint list, and throughput targets as structured inputs and produces a workload model that a performance engineer can immediately use to configure a load testing tool. Replace every square-bracket placeholder with your actual data before running the prompt. The template enforces a strict output schema so the result can be parsed by downstream automation, not just read by a human.
textYou are a performance engineering assistant. Your task is to translate SLA requirements into a concrete API load profile. ## INPUT [SLA_DOCUMENT] ## ENDPOINT LIST [ENDPOINT_LIST] ## THROUGHPUT TARGETS [THROUGHPUT_TARGETS] ## CONSTRAINTS - Assume a [TEST_DURATION] test window. - Target environment: [ENVIRONMENT_TYPE]. - Maximum acceptable error rate: [MAX_ERROR_RATE]%. - User ramp-up period: [RAMP_UP_MINUTES] minutes. ## OUTPUT_SCHEMA Return a single JSON object with the following structure: { "load_profile_name": "string", "total_target_rps": number, "request_mix": [ { "endpoint": "string", "method": "GET|POST|PUT|DELETE|PATCH", "weight_percent": number, "target_rps": number, "p95_latency_budget_ms": number, "p99_latency_budget_ms": number, "request_payload_bytes": number, "response_payload_bytes": number, "depends_on": ["string"] } ], "ramp_profile": { "start_rps": number, "end_rps": number, "ramp_duration_seconds": number, "steps": [ { "duration_seconds": number, "target_rps": number } ] }, "validation_checks": [ { "check": "string", "status": "pass|fail|warning", "detail": "string" } ], "coverage_gaps": ["string"], "assumptions": ["string"] } ## INSTRUCTIONS 1. Parse the SLA document to extract explicit latency, availability, and throughput commitments per endpoint or endpoint class. 2. Map each endpoint from the endpoint list to its SLA commitments. If an endpoint has no explicit SLA, flag it as a coverage gap. 3. Calculate the request weight distribution so that the sum of all weights equals 100% and the total target RPS matches the throughput target. 4. Assign latency budgets (p95 and p99) per endpoint based on SLA terms. If the SLA only specifies an average, derive conservative percentile budgets and note the assumption. 5. Identify dependencies between endpoints (e.g., a POST that must follow a GET to obtain a resource ID) and list them in the `depends_on` field. 6. Design a ramp profile that starts at 10% of target RPS and reaches 100% over the ramp-up period, with at least 3 steps. 7. Run validation checks: confirm weight percentages sum to 100%, confirm latency budgets do not exceed SLA limits, confirm all listed endpoints appear in the request mix, and flag any endpoint with zero RPS allocation. 8. List any coverage gaps where the SLA is silent on an endpoint or metric. 9. List all assumptions made during the design (e.g., uniform distribution within an endpoint class, no caching effects, steady-state traffic). Return only the JSON object. Do not include any text outside the JSON.
After pasting the template, replace [SLA_DOCUMENT] with the full text of your SLA or SLO document. Replace [ENDPOINT_LIST] with a structured list of your API endpoints, including HTTP methods and typical payload sizes. Replace [THROUGHPUT_TARGETS] with your target requests-per-second or transactions-per-second figures. The remaining placeholders ([TEST_DURATION], [ENVIRONMENT_TYPE], [MAX_ERROR_RATE], [RAMP_UP_MINUTES]) are scalar values that tune the output to your test environment. If your SLA document is long, consider splitting it into sections and running the prompt once per service tier to keep the context window manageable.
Before wiring this into an automated pipeline, run the prompt manually against a known SLA and endpoint list. Inspect the validation_checks array in the output—any fail or warning status indicates a problem that needs human review. Pay special attention to coverage_gaps: endpoints without SLA commitments are untestable against a latency budget and may hide production risk. If the output will feed directly into a load generator like k6, Locust, or JMeter, add a post-processing step that converts the JSON into the tool-specific script format and validates that all depends_on relationships are executable in the correct order.
Prompt Variables
Each placeholder required by the API Load Profile Design Prompt. Validate these inputs before execution to prevent unrealistic load models and SLA coverage gaps.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[SLA_DOCUMENT] | The raw text of the Service Level Agreement containing latency, availability, and throughput commitments. | 99.9% availability. 95th percentile latency under 200ms for /api/checkout. | Must contain at least one quantifiable metric. Reject if only qualitative language is present. Parse for numeric thresholds and percentile targets. |
[API_SPECIFICATION] | The OpenAPI, GraphQL schema, or gRPC definition listing all endpoints, methods, and payload schemas. | openapi: 3.0.0... paths: /users: get: ... | Validate schema is parseable by a standard parser. Confirm all endpoints referenced in [SLA_DOCUMENT] exist here. Flag missing endpoint definitions. |
[TRAFFIC_PATTERN_NOTES] | Qualitative description of expected user behavior, peak hours, or known traffic shapes. | Steady 500 RPS baseline with a 3x spike every Friday at 5 PM UTC for 30 minutes. | Check for explicit time windows and multipliers. If null, the prompt must assume a flat profile and note this assumption in the output. Warn on vague terms like 'high traffic'. |
[TARGET_ENVIRONMENT] | Description of the deployment environment and scale constraints. | Production Kubernetes cluster, 10 nodes, m5.2xlarge, 1000 max concurrent connections per pod. | Must include a concurrency or connection limit. If null, the output must flag that saturation points cannot be calculated. Validate against [API_SPECIFICATION] for consistency. |
[EXISTING_BENCHMARK_DATA] | Optional prior performance test results or baseline metrics for comparison. | Current P99 is 180ms at 200 RPS on /api/search. | If provided, check for timestamp to assess staleness. Reject data older than 30 days without a warning. Cross-reference endpoint names with [API_SPECIFICATION]. |
[EXCLUDED_ENDPOINTS] | A list of API paths to exclude from the load profile, such as health checks or internal admin routes. | [/health, /admin/reindex, /internal/metrics] | Confirm each excluded path exists in [API_SPECIFICATION]. The prompt must explicitly list excluded endpoints in its output for auditability. If null, all endpoints are in scope. |
[BUSINESS_RISK_TIERS] | A mapping of API endpoints to business criticality levels to guide percentile latency budget allocation. | {/api/checkout: 'critical', /api/search: 'high', /api/recommendations: 'medium'} | Every endpoint in the load profile must have a tier. If null, the prompt must assign a default 'medium' tier and flag the assumption. Validate tiers against [SLA_DOCUMENT] for contradictions. |
Implementation Harness Notes
How to wire the API Load Profile Design Prompt into a performance engineering workflow with validation, retries, and model selection.
This prompt is designed to be the first step in a multi-stage performance engineering pipeline. It translates a human-readable SLA document into a structured, machine-readable load profile. The output is not a final test script; it is a specification that must be validated before being fed into a load generation tool like k6, Locust, or JMeter. The primary integration point is an automated workflow where an SRE or performance engineer uploads an SLA document, the prompt generates a JSON profile, and a downstream validator checks the profile for internal consistency and coverage gaps before any test execution begins.
Wire the prompt into an application by first extracting the SLA text from its source format (PDF, Confluence, or a text field). Pass this text as the [SLA_DOCUMENT] input. The model should be instructed to produce a strict JSON output conforming to a predefined schema. Use a model with strong JSON mode and structured output support, such as gpt-4o or claude-3-opus, with a low temperature setting (0.1-0.2) to maximize determinism. After receiving the response, a validation layer must parse the JSON and run a series of checks: confirm that every endpoint listed in the SLA has a corresponding entry in the profile, verify that the sum of request mix percentages equals 100, and flag any throughput target that implies a concurrency level exceeding the SLA's stated maximum. If validation fails, the application should not proceed to test generation; instead, it should log the failure, capture the raw output, and either retry with a more explicit prompt or escalate for human review.
Implement a retry strategy for cases where the model output fails schema validation or the coverage checks. On the first failure, re-invoke the prompt with the original input and an additional [CONSTRAINT] that explicitly calls out the specific validation error (e.g., 'The request mix percentages do not sum to 100. Recalculate and ensure they total exactly 100%'). Limit retries to a maximum of two attempts to avoid infinite loops. If the output still fails, route the task to a human-in-the-loop queue with the original SLA, the failed outputs, and the specific validation errors highlighted. For logging, capture the model version, prompt template version, input SLA hash, and validation pass/fail status for every run. This traceability is critical for auditing why a particular load profile was generated and for debugging prompt drift over time. Avoid wiring this prompt directly to a test execution engine without the validation gate; an incorrect load profile can waste compute resources, create misleading test results, or even cause a production-impacting overload if safety limits are not enforced.
Expected Output Contract
Schema for the API load profile object. Validate every field before passing the output to a test harness or downstream load generator.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
load_profile_id | string (UUID v4) | Must match UUID v4 regex. Reject if null or empty. | |
sla_source | string | Must be a non-empty reference to the input SLA document ID or version. Reject if missing. | |
target_throughput_rps | number | Must be > 0. Reject if negative, zero, or non-numeric. Warn if > 100000 without explicit justification. | |
percentile_latency_budgets | object (map of p50, p95, p99) | Keys must be exactly p50, p95, p99. Each value must be a positive number in milliseconds. Reject if any key is missing or value is non-numeric. | |
endpoints | array of endpoint objects | Array must contain at least 1 endpoint. Reject if empty. Each endpoint object must include method, path, and weight fields. | |
endpoints[].method | string (enum: GET, POST, PUT, DELETE, PATCH) | Must be one of the allowed HTTP methods. Reject on unknown methods or lowercase values. | |
endpoints[].path | string (URL path template) | Must start with /. Reject if empty or missing leading slash. Warn if path contains raw IDs instead of placeholders like {id}. | |
endpoints[].weight | number (0.0-1.0) | Must be a float between 0 and 1 inclusive. Sum of all endpoint weights must equal 1.0 (±0.01 tolerance). Reject if sum deviates. | |
concurrency_model | object | Must include max_concurrent_users (positive integer) and ramp_up_seconds (positive number). Reject if either is missing or non-positive. | |
coverage_gaps | array of strings | If present, each string must describe a specific SLA requirement not covered by the profile. Null allowed. Reject if array contains empty strings. | |
generated_at | string (ISO 8601 UTC) | Must be a valid ISO 8601 timestamp ending in Z. Reject if unparseable or non-UTC. |
Common Failure Modes
What breaks first when an LLM translates SLA requirements into an API load profile, and how to prevent it in production.
SLA-to-Throughput Miscalculation
What to watch: The model incorrectly converts percentile latency targets (e.g., p99 < 200ms) into achievable throughput numbers, ignoring Little's Law or concurrency constraints. This produces a load profile that either under-tests the system or is physically impossible to generate. Guardrail: Implement a post-generation calculation validator that checks throughput ≤ (concurrency / latency_target) for each endpoint tier before accepting the profile.
Missing Error Budget Allocation
What to watch: The prompt focuses entirely on success-path latency and throughput, omitting the SLA's error rate budget (e.g., < 0.1% 5xx). The resulting load profile lacks error injection scenarios or validation checkpoints for error rate thresholds. Guardrail: Add a required [ERROR_BUDGET] input field and a validation rule that every generated profile must include at least one error-rate assertion per endpoint group.
Unrealistic Request Mix Distribution
What to watch: The model defaults to a uniform distribution across endpoints (e.g., 20% each for 5 endpoints) instead of deriving weights from the SLA's stated importance tiers or real traffic patterns. This masks saturation in high-traffic endpoints. Guardrail: Require a [REQUEST_MIX_RATIONALE] output field where the model must justify the percentage allocation per endpoint by citing a specific SLA clause or traffic assumption. Flag profiles with uniform distributions for human review.
Ignoring Dependency Saturation
What to watch: The generated load profile tests the target API in isolation, ignoring downstream services, databases, or third-party dependencies that share the SLA's latency budget. The profile passes in a sandbox but fails in production when dependencies saturate. Guardrail: Include a [DEPENDENCY_MAP] input and require the output to list at least one monitoring metric per dependency that must be observed during the test. Reject profiles that lack cross-service saturation indicators.
Concurrency Model Mismatch
What to watch: The model assumes an open-loop concurrency model (constant arrival rate) when the SLA implies closed-loop (fixed user pool), or vice versa. This leads to load generators that either overwhelm the system unrealistically or fail to reach saturation. Guardrail: Add a [CONCURRENCY_MODEL] enum field (open | closed) to the input schema. The validator must confirm the output's ramp-up strategy and virtual user count match the selected model.
SLA Coverage Gap: Write vs. Read Paths
What to watch: The SLA specifies latency targets generically, but the model generates a read-heavy profile that never exercises write-path contention, locking, or consistency mechanisms. This leaves write-path saturation untested. Guardrail: Require the output to include a [READ_WRITE_RATIO] field with explicit justification. If the SLA does not differentiate, the validator must flag the gap and recommend a separate write-path saturation scenario.
Evaluation Rubric
Use this rubric to evaluate the quality of the generated load profile before integrating it into your test harness. Each criterion targets a specific failure mode common in SLA-to-load-profile translation.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
SLA Coverage Completeness | Every SLA metric from [SLA_DOCUMENT] is mapped to at least one endpoint and one load profile parameter | An SLA metric is mentioned in the source but missing from the profile's throughput targets or latency budgets | Diff the SLA metric list against the profile's mapped metrics; flag any orphaned SLA entries |
Percentile Latency Budget Assignment | Each endpoint has a latency budget at the same percentile specified in the SLA (e.g., p95, p99) with a concrete millisecond value | Latency budget uses a different percentile than the SLA specifies, or the value is a placeholder like '< 200ms' without a specific target | Parse the output for each endpoint's latency budget; compare percentile and value against the SLA source row-by-row |
Request Mix Sum Constraint | The sum of all request type percentages in the mix equals 100% with no rounding gaps | Request mix percentages sum to 98% or 102%, indicating a missing category or double-counting | Sum all request mix percentages in the output; assert total is between 99.9 and 100.1 |
Concurrency Model Realism | Concurrent user or connection counts are derived from the SLA throughput target and a stated average response time assumption, with the formula shown | Concurrency number appears without derivation, or implies sub-millisecond response times to achieve the stated throughput | Check that the output includes a throughput-to-concurrency derivation; recalculate using Little's Law and flag if implied response time is under 5ms |
Endpoint Enumeration Completeness | All API endpoints referenced in the SLA are listed in the load profile with their HTTP method and path | An endpoint mentioned in SLA error budget or latency targets is absent from the profile's endpoint list | Extract all endpoint identifiers from the SLA; cross-reference against the profile's endpoint table; flag missing entries |
Error Budget Allocation | The SLA error rate budget is distributed across endpoints with explicit per-endpoint error rate thresholds | Only a single global error rate is stated without per-endpoint breakdown, or error budgets are omitted entirely | Check for per-endpoint error_rate fields in the output; if only a global value exists, flag as incomplete |
Ramp-Up Profile Definition | The load profile includes a ramp-up period with start rate, end rate, step size, and step duration | Ramp-up is described as 'gradual' or 'linear' without numeric parameters, or is absent | Parse the ramp-up section; assert presence of numeric start_rps, end_rps, step_size, and step_duration_seconds fields |
Think Time and Pacing Specification | User-facing endpoints include think time ranges or pacing delays derived from real user behavior assumptions, with justification | Think times are set to zero for all endpoints, or are uniform across endpoints with different complexity profiles | Check for think_time_ms or pacing_interval_ms fields per endpoint; flag if all values are identical or zero without explicit justification |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Use the base prompt with a single SLA document and lighter validation. Replace [OUTPUT_SCHEMA] with a simple JSON template containing only endpoints, request_mix_percent, and target_throughput. Skip the percentile latency budget and coverage gap checks. Run against one representative SLA to validate the model understands the domain before adding rigor.
Watch for
- The model inventing endpoints not present in the SLA
- Throughput targets that don't sum to 100%
- Missing distinction between average and peak load assumptions

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us