Visits | FieldCamp API
Visits represent scheduled on-site appearances for a job. A job may have one or more visits.
A visit is a scheduled on-site appearance for a job. Most simple jobs have exactly one visit auto-generated from the job's time window. Multi-stop jobs — a delivery followed by a collection, a diagnostic followed by a repair — have multiple visits.
When to create visits explicitly
Create visits via POST /api/visits when:
- You need more than one visit per job.
- You want explicit control over
scheduledStart/scheduledEndinstead of relying on auto-generation. - You're assigning a different technician to the visit than to the job.
For single-visit jobs, passing visits: [] on job creation is fine —
FieldCamp generates a visit automatically from the job's time window.
Fields
jobId— the parent job, fromPOST /api/jobs.scheduledStart/scheduledEnd— UTC ISO-8601 datetimes.technicianId— a user ID fromGET /api/team.
Endpoints
/api/visitsPass your JWT API key as Authorization: Bearer <token>. Send
alongside X-API-Key: <token> for maximum compatibility.
In: header
Response Body
application/json
application/json
curl -X GET "https://api.fieldcamp.ai/api/visits"{
"success": true,
"data": {
"visits": [
{
"jobId": "string",
"scheduledStart": "2019-08-24T14:15:22Z",
"scheduledEnd": "2019-08-24T14:15:22Z",
"technicianId": "string",
"id": "string",
"visitStatus": "scheduled",
"createdAt": "2019-08-24T14:15:22Z"
}
]
}
}{
"success": false,
"error": "Invalid or expired token"
}/api/visitsPass your JWT API key as Authorization: Bearer <token>. Send
alongside X-API-Key: <token> for maximum compatibility.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://api.fieldcamp.ai/api/visits" \ -H "Content-Type: application/json" \ -d '{ "jobId": "job_abc123", "scheduledStart": "2026-05-01T09:00:00.000Z", "scheduledEnd": "2026-05-01T17:00:00.000Z", "technicianId": "user_xyz789" }'{
"success": true,
"data": {
"visitId": "string",
"visit": {
"jobId": "string",
"scheduledStart": "2019-08-24T14:15:22Z",
"scheduledEnd": "2019-08-24T14:15:22Z",
"technicianId": "string",
"id": "string",
"visitStatus": "scheduled",
"createdAt": "2019-08-24T14:15:22Z"
}
}
}{
"success": false,
"error": "jobNumber is required"
}{
"success": false,
"error": "Invalid or expired token"
}/api/visits/{id}Pass your JWT API key as Authorization: Bearer <token>. Send
alongside X-API-Key: <token> for maximum compatibility.
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Any subset of NewVisit fields.
Response Body
application/json
application/json
curl -X PUT "https://api.fieldcamp.ai/api/visits/string" \ -H "Content-Type: application/json" \ -d '{}'{
"success": true,
"data": {
"visit": {
"jobId": "string",
"scheduledStart": "2019-08-24T14:15:22Z",
"scheduledEnd": "2019-08-24T14:15:22Z",
"technicianId": "string",
"id": "string",
"visitStatus": "scheduled",
"createdAt": "2019-08-24T14:15:22Z"
}
}
}{
"success": false,
"error": "Invalid or expired token"
}