curl -X POST "https://app.runtm.com/api/agent-directives/dir_abc123:resync" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123" \
-H "Content-Type: application/json" \
-d '{}'
import requests
response = requests.post(
"https://app.runtm.com/api/agent-directives/dir_abc123:resync",
headers={
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
"Content-Type": "application/json",
},
json={},
)
data = response.json()
if data["no_changes"]:
print("Already up to date")
else:
print(f"Updated to {data['directive']['content_hash'][:12]}")
const response = await fetch(
"https://app.runtm.com/api/agent-directives/dir_abc123:resync",
{
method: "POST",
headers: {
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
}
);
const data = await response.json();
if (data.no_changes) {
console.log("Already up to date");
} else {
console.log(`Updated to ${data.directive.content_hash.slice(0, 12)}`);
}
runtm-api skills resync dir_abc123
{
"directive": {
"id": "dir_ghi789",
"type": "skill_v0",
"name": "deploy-to-fly",
"display_name": "Deploy to Fly.io",
"organization_id": "org_abc123",
"owner_user_id": "user_xyz",
"content_kind": "inline",
"content_hash": "sha256:newdef...",
"size_bytes": 4200,
"source": {
"kind": "github_repo",
"uri": "owner/repo",
"ref": "main",
"commit_sha": "d4e5f6g"
},
"attachments": {
"repos": ["owner/repo"],
"applies_to_all": false
},
"created_at": "2026-05-09T21:00:00Z",
"updated_at": "2026-05-09T21:00:00Z"
},
"no_changes": false
}
Skills
Resync Skill
Re-fetch a directive’s content from its upstream source
POST
/
api
/
agent-directives
/
{directive_id}
:resync
curl -X POST "https://app.runtm.com/api/agent-directives/dir_abc123:resync" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123" \
-H "Content-Type: application/json" \
-d '{}'
import requests
response = requests.post(
"https://app.runtm.com/api/agent-directives/dir_abc123:resync",
headers={
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
"Content-Type": "application/json",
},
json={},
)
data = response.json()
if data["no_changes"]:
print("Already up to date")
else:
print(f"Updated to {data['directive']['content_hash'][:12]}")
const response = await fetch(
"https://app.runtm.com/api/agent-directives/dir_abc123:resync",
{
method: "POST",
headers: {
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
}
);
const data = await response.json();
if (data.no_changes) {
console.log("Already up to date");
} else {
console.log(`Updated to ${data.directive.content_hash.slice(0, 12)}`);
}
runtm-api skills resync dir_abc123
{
"directive": {
"id": "dir_ghi789",
"type": "skill_v0",
"name": "deploy-to-fly",
"display_name": "Deploy to Fly.io",
"organization_id": "org_abc123",
"owner_user_id": "user_xyz",
"content_kind": "inline",
"content_hash": "sha256:newdef...",
"size_bytes": 4200,
"source": {
"kind": "github_repo",
"uri": "owner/repo",
"ref": "main",
"commit_sha": "d4e5f6g"
},
"attachments": {
"repos": ["owner/repo"],
"applies_to_all": false
},
"created_at": "2026-05-09T21:00:00Z",
"updated_at": "2026-05-09T21:00:00Z"
},
"no_changes": false
}
Re-fetches the directive’s content from its upstream source (for example a GitHub repo) and overwrites it in place. The directive keeps its id and its attachments, so everything already pointing at it picks up the new content; a rebuild is queued only when the content actually changed.
If the upstream payload is identical, nothing is written and the response carries
no_changes: true. Locked directives cannot be resynced.
Required scope: context:write
Path Parameters
string
required
The directive ID to resync (e.g.
dir_abc123).Headers
string
required
Bearer token. Example:
Bearer runtm_xxxstring
Scope to an organization.
Body
No fields. Send an empty object; the shape is reserved for future options.Response
object
The directive resource after the resync.
boolean
true when the upstream content was identical and nothing was written.curl -X POST "https://app.runtm.com/api/agent-directives/dir_abc123:resync" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123" \
-H "Content-Type: application/json" \
-d '{}'
import requests
response = requests.post(
"https://app.runtm.com/api/agent-directives/dir_abc123:resync",
headers={
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
"Content-Type": "application/json",
},
json={},
)
data = response.json()
if data["no_changes"]:
print("Already up to date")
else:
print(f"Updated to {data['directive']['content_hash'][:12]}")
const response = await fetch(
"https://app.runtm.com/api/agent-directives/dir_abc123:resync",
{
method: "POST",
headers: {
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
}
);
const data = await response.json();
if (data.no_changes) {
console.log("Already up to date");
} else {
console.log(`Updated to ${data.directive.content_hash.slice(0, 12)}`);
}
runtm-api skills resync dir_abc123
{
"directive": {
"id": "dir_ghi789",
"type": "skill_v0",
"name": "deploy-to-fly",
"display_name": "Deploy to Fly.io",
"organization_id": "org_abc123",
"owner_user_id": "user_xyz",
"content_kind": "inline",
"content_hash": "sha256:newdef...",
"size_bytes": 4200,
"source": {
"kind": "github_repo",
"uri": "owner/repo",
"ref": "main",
"commit_sha": "d4e5f6g"
},
"attachments": {
"repos": ["owner/repo"],
"applies_to_all": false
},
"created_at": "2026-05-09T21:00:00Z",
"updated_at": "2026-05-09T21:00:00Z"
},
"no_changes": false
}