Skip to content

Update timeslot

PATCH
/v1/accounts/{accountId}/timeslots/{timeslotId}
curl --request PATCH \
--url https://api-v1.tailwind.ai/v1/accounts/example/timeslots/example \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "dayPreference": 1, "time": "example", "timezone": "example" }'

Move a recurring slot to another day, time or timezone. Supply at least one of dayPreference, time or timezone; omitted fields keep the slot’s stored values, including its timezone. Any edit converts the slot to type manual, as the dashboard’s edit does. Pins already placed on the slot keep their scheduled time and become off-slot; nothing is rescheduled. Evergreen (SmartLoop) slots are not addressable here and return a 404.

accountId
required
string

Numeric Tailwind account ID returned by GET /v1/accounts

timeslotId
required
string

Numeric timeslot ID returned by GET /v1/accounts/{accountId}/timeslots

Media typeapplication/json

At least one field is required. Omitted fields keep the slot’s stored values.

object
dayPreference

Day of week (0 = Sunday through 6 = Saturday)

integer
<= 6
time

Time of day as 24-hour HH:MM (e.g. “09:30”), in the slot’s timezone

string
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/
timezone

IANA timezone the time is expressed in (e.g. America/New_York)

string
Examplegenerated
{
"dayPreference": 1,
"time": "example",
"timezone": "example"
}

Timeslot updated

Media typeapplication/json
object
data
object
timeslot

A recurring weekly posting rule, not a dated occurrence. Carries no occupancy — see ScheduleEntry.

object
id

Timeslot ID

string
accountId

Account ID

string
dayPreference

Day of week (0-6, where 0 is Sunday)

integer
<= 6
timePreference

Time of day as a zero-padded 24-hour HHMM string (e.g. “0930”), in timezone

string
timezone

Timezone (e.g., America/New_York)

string
type

How the slot was added: generated by a rebuild, picked from Tailwind’s suggestions, or placed by hand (including every slot created or edited through this API)

string
Allowed values: auto-created recommended manual
scheduleId

Schedule ID, when associated with a schedule

integer
pinUuid

Pin UUID, when associated with a pin

integer
sendAt

Unix timestamp of one occurrence, predicted when the slot was written. Not maintained afterwards; use GET /v1/accounts/{accountId}/schedule for real upcoming times.

integer
meta
object
requestId

Unique request ID for debugging

string
Example
{
"data": {
"timeslot": {
"type": "auto-created"
}
}
}

Invalid request

Media typeapplication/json
object
error
object
code

Error code

string
message

Error message

string
reason

Machine-readable denial reason. Present on PAYMENT_REQUIRED errors: insufficient_credits, trial_exhausted, no_access, account_not_connected, legacy_post_limit_exceeded.

string
resolve_url

Present on PAYMENT_REQUIRED errors: where the denial can be resolved. Reason-specific, because buying credits does not clear a trial, access or connection denial. Requests sent with X-Request-Source: mcp receive an informational plans page instead, so agent surfaces never present a purchase link.

string
meta
object
requestId

Unique request ID for debugging

string
Example
{
"error": {
"code": "BAD_REQUEST",
"message": "Invalid request body"
},
"meta": {
"requestId": "abc123"
}
}

Authentication required or invalid bearer credentials

Media typeapplication/json
object
error
object
code

Error code

string
message

Error message

string
reason

Machine-readable denial reason. Present on PAYMENT_REQUIRED errors: insufficient_credits, trial_exhausted, no_access, account_not_connected, legacy_post_limit_exceeded.

string
resolve_url

Present on PAYMENT_REQUIRED errors: where the denial can be resolved. Reason-specific, because buying credits does not clear a trial, access or connection denial. Requests sent with X-Request-Source: mcp receive an informational plans page instead, so agent surfaces never present a purchase link.

string
meta
object
requestId

Unique request ID for debugging

string
Example
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid API key"
},
"meta": {
"requestId": "abc123"
}
}

Resource not found

Media typeapplication/json
object
error
object
code

Error code

string
message

Error message

string
reason

Machine-readable denial reason. Present on PAYMENT_REQUIRED errors: insufficient_credits, trial_exhausted, no_access, account_not_connected, legacy_post_limit_exceeded.

string
resolve_url

Present on PAYMENT_REQUIRED errors: where the denial can be resolved. Reason-specific, because buying credits does not clear a trial, access or connection denial. Requests sent with X-Request-Source: mcp receive an informational plans page instead, so agent surfaces never present a purchase link.

string
meta
object
requestId

Unique request ID for debugging

string
Example
{
"error": {
"code": "NOT_FOUND",
"message": "Account not found"
},
"meta": {
"requestId": "abc123"
}
}

Another write to this account’s smart schedule holds the lock — in practice a rebuild, which replaces every slot and so cannot run alongside other changes. Nothing was written; retry in a moment.

Media typeapplication/json
object
error
object
code

Error code

string
message

Error message

string
reason

Machine-readable denial reason. Present on PAYMENT_REQUIRED errors: insufficient_credits, trial_exhausted, no_access, account_not_connected, legacy_post_limit_exceeded.

string
resolve_url

Present on PAYMENT_REQUIRED errors: where the denial can be resolved. Reason-specific, because buying credits does not clear a trial, access or connection denial. Requests sent with X-Request-Source: mcp receive an informational plans page instead, so agent surfaces never present a purchase link.

string
meta
object
requestId

Unique request ID for debugging

string
Example
{
"error": {
"code": "CONFLICT",
"message": "This account's schedule is being updated elsewhere. Retry in a moment."
},
"meta": {
"requestId": "abc123"
}
}

Rate limit exceeded

Media typeapplication/json
object
error
object
code

Error code

string
message

Error message

string
reason

Machine-readable denial reason. Present on PAYMENT_REQUIRED errors: insufficient_credits, trial_exhausted, no_access, account_not_connected, legacy_post_limit_exceeded.

string
resolve_url

Present on PAYMENT_REQUIRED errors: where the denial can be resolved. Reason-specific, because buying credits does not clear a trial, access or connection denial. Requests sent with X-Request-Source: mcp receive an informational plans page instead, so agent surfaces never present a purchase link.

string
meta
object
requestId

Unique request ID for debugging

string
Example
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Daily rate limit of 5000 requests exceeded. Resets at midnight UTC."
},
"meta": {
"requestId": "abc123"
}
}