Skip to main content

Request Details

A few things to note about how to create requests to the Skywalk API.

Request URL

Base URL

All requests start with our base V1 URL.

API Root URL
https://api.skywalkapi.com/v1/

Authorization

Authorization is done through the header key X-API-KEY.

Authorization
X-API-KEY=1288291.....

Processing Mode

Some endpoints may take longer than usual based on the amount of data and setup of each Appfolio account. To account for this, you may configure the X-API-PROCESSING-MODE header to allow for longer processing.

The following is the supported values and how they impact timing:

SettingMax Duration To First Data*
default24 seconds
longer120 seconds

Every data page returned bills one usage unit in either mode (see Rate Limits & Usage).

If the header is not set, the value default is the default.

* Note that Max Duration To First Data is not the max duration for the endpoint or for total processing. This represents the maximum time until first data is processed by Skywalk API behind the scene. Actual max duration of getting data back may take significantly longer.
Processing Mode
X-API-PROCESSING-MODE=longer

Waiting for results (wait)

Every request that starts work returns a job (see Polling and Writing Data). The wait query parameter asks the API to hold the connection until that job finishes and answer with the finished result directly, instead of returning the updating envelope for you to poll.

wait is a whole number of seconds from 0 to 180. If the job has not finished when the time is up, you get the same updating response you would have gotten immediately — with the same meta.jobId — so an existing polling loop keeps working unchanged; only the timing differs.

RequestDefault hold
POST (writes)120 seconds for projects created after August 2026; 10 seconds for existing projects (near their previous latency). Contact support to change your project's default.
GET (reads)none — reads only hold when wait is set

?wait=0 on a write turns the hold off for that request and returns the job immediately. Values outside 0..180, or non-integers, are rejected with a 422 validation error rather than clamped.

If your HTTP client has its own request timeout, keep it above the wait you send (plus a few seconds). A client timeout that fires mid-hold and retries the POST creates the write twice — use ?wait=0 and poll instead when you cannot raise the client timeout.

Hold up to 60 seconds for the result
POST /v1/tenant-charge?wait=60

Filters and Settings

Any filters are done through query parameters. If you want to pass in a list of values, repeat the query parameter.

Query Parameters
?propertyId=123&status=current&status=past