Votre première requête
Mis à jour
Une requête, une réponse, et à quoi sert chaque champ. Tout ce qui suit est en curl ; n’importe quel client HTTP fonctionne pareil.
Envoyer la clé
Présentez la clé comme un jeton bearer :
curl https://api.wipperoz.com/v1/jobs \
-H "Authorization: Bearer $ORBIT_API_KEY"
L’en-tête x-api-key est également accepté, pour les clients qui ne peuvent pas définir Authorization :
curl https://api.wipperoz.com/v1/jobs \
-H "x-api-key: $ORBIT_API_KEY"
Lire la réponse
{
"jobs": [
{
"id": "job_01J8Z3K9Q0EXAMPLE",
"status": "published",
"title": "Senior Backend Engineer",
"description": "Own the services behind our hiring pipeline, from the API surface to the queues that move applications through it.",
"responsibilities": ["Design and ship services on AWS Lambda and DynamoDB"],
"skills": [{"name": "TypeScript", "level": "required"}],
"benefits": ["Remote-first"],
"seniority": "senior",
"employmentType": "full_time",
"contractType": "permanent",
"salary": {"min": 150000, "max": 180000, "currency": "AUD", "period": "year"},
"location": {"country": "AU", "state": "NSW", "city": "Sydney", "remotePolicy": "hybrid"},
"company": {"name": "Acme Robotics"},
"postedAt": "2026-09-01T02:15:00.000Z",
"updatedAt": "2026-09-03T10:40:00.000Z",
"expiresAt": "2026-10-01T02:15:00.000Z",
"url": "https://www.wipperoz.com/en/jobs/acme-robotics/senior-backend-engineer",
"applyLink": "https://www.wipperoz.com/en/apply/job_01J8Z3K9Q0EXAMPLE?src=careers&account=acc_01J8Z3EXAMPLE"
}
],
"nextCursor": null
}
Trois champs portent l’essentiel :
statusvautpublished,closedouexpired. Seulpublishedaccepte des candidatures. Les deux autres sont renvoyés plutôt qu’omis afin que votre page puisse dire « ce poste est clos » au lieu d’afficher un lien mort.applyLinkest l’endroit où un candidat postule. Faites-y un lien ; ne copiez pas le formulaire. Lesrc=careers&account=…à la fin est ce qui permet à la page de candidature d’enregistrer que le candidat vient de votre site, et c’est ce qui rend les candidatures de votre page carrières séparables de celles que Wipperoz envoie.nextCursorvautnulllorsqu’il s’agit de la dernière page. Sinon, renvoyez-le en?cursor=pour obtenir la suivante.
Une seule offre
curl https://api.wipperoz.com/v1/jobs/job_01J8Z3K9Q0EXAMPLE \
-H "Authorization: Bearer $ORBIT_API_KEY"
L’offre d’un autre compte, un brouillon et un id inconnu répondent tous 404. Un brouillon n’a pas encore d’existence publique.
En-têtes sur chaque réponse
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 119
X-RateLimit-Reset: 1788700860
Chaque clé peut faire 120 requêtes par minute. Au-delà, la réponse est 429 avec un Retry-After en secondes. Une page carrières qui se synchronise à intervalle régulier ne le verra jamais.
Quand quelque chose ne va pas
Toutes les erreurs ont la même forme :
{
"error": {
"code": "forbidden",
"message": "This key does not carry the `jobs:read` scope. Mint a key with it in Orbit → Settings → API keys.",
"requestId": "5f7a9c1e-2b3d-4e5f-8a9b-0c1d2e3f4a5b"
}
}
Citez le requestId lorsque vous écrivez au support. La liste complète des codes et de chaque paramètre est dans la référence :
GET /v1/jobs